Home Artists Posts Import Register

Downloads

Content


ABOUT

This is a small plugin that I made to help people that try do do chat, AI, text-to-speech stuff in VAM. One of the biggest obstacles in doing things like that is getting the generated sound to play in VAM.

Sound Refresh solves that by monitoring a specific sound file that can be selected inside the plugin ui. When it notices that the sound file has been updated, it automatically plays it, making the person speak it. This allows any external solution that creates sound files to be linked to vam with 0 setup and 0 vam work.



INSTRUCTIONS

- add it to a Person atom
- change the file link if you want to
- if the file exists and it changes (gets a more recent changed date) it should automatically play through the head audio of the Person

Files

Comments

thomas d

Not completely sure what this is, I tried to load it and got a load failure. Does it work with a specific version of VAM or ALive?

SPQRAeternum

It's not related to Alive. It's a plugin to help people that try to do chatbot stuff in vam. It's related to my chatbots demo & guide I did a while back What error did you get though?! Did you load it on a Person atom?

thomas d

Yes. on person, and I rebooted and tried on a clean look. Did not load, Ill post you the error in a while, I a in the middle of something.

thomas d

!> Compile of SPQR.SoundRefresh.1:/Custom/Scripts/SPQR/SoundRefresh/SoundRefresh.cs failed. Errors: !> [CS117]: `MVR.FileManagementSecure.FileManagerSecure' does not contain a definition for `FileLastWriteTime' in at [103, 40] !> [CS]: Mono.CSharp.InternalErrorException: (100,8): SPQR.SoundRefresh.CheckFileChange() ---> Mono.CSharp.FatalException: `MVR.FileManagementSecure.FileManagerSecure' does not contain a definition for `FileLastWriteTime' at Mono.CSharp.Report.Error (Int32 code, Location loc, System.String error) [0x00000] in :0 at Mono.CSharp.Report.Error (Int32 code, Location loc, System.String format, System.String arg1, System.String arg2) [0x00000] in :0 at Mono.CSharp.Expression.Error_TypeDoesNotContainDefinition (Mono.CSharp.ResolveContext ec, Location loc, Mono.CSharp.TypeSpec type, System.String name) [0x00000] in :0 at Mono.CSharp.Expression.Error_TypeDoesNotContainDefinition (Mono.CSharp.ResolveContext ec, Mono.CSharp.TypeSpec type, System.String name) [0x00000] in :0 at Mono.CSharp.MemberAccess.LookupNameExpression (Mono.CSharp.ResolveContext rc, MemberLookupRestrictions restrictions) [0x00000] in :0 at Mono.CSharp.Invocation.DoResolveInvocation (Mono.CSharp.ResolveContext ec) [0x00000] in :0 at Mono.CSharp.Invocation.DoResolve (Mono.CSharp.ResolveContext rc) [0x00000] in :0 at Mono.CSharp.Expression.Resolve (Mono.CSharp.ResolveContext ec, ResolveFlags flags) [0x00000] in :0 --- End of inner exception stack trace --- at Mono.CSharp.Method.Emit () [0x00000] in :0 at Mono.CSharp.TypeDefinition.Emit () [0x00000] in :0 at Mono.CSharp.ClassOrStruct.Emit () [0x00000] in :0 at Mono.CSharp.Class.Emit () [0x00000] in :0 at Mono.CSharp.TypeDefinition.EmitContainer () [0x00000] in :0 at Mono.CSharp.TypeContainer.EmitContainer () [0x00000] in :0 at Mono.CSharp.NamespaceContainer.EmitContainer () [0x00000] in :0 at Mono.CSharp.TypeContainer.EmitContainer () [0x00000] in :0 at Mono.CSharp.NamespaceContainer.EmitContainer () [0x00000] in :0 at Mono.CSharp.TypeContainer.EmitContainer () [0x00000] in :0 at Mono.CSharp.ModuleContainer.EmitContainer () [0x00000] in :0 at Mono.CSharp.AssemblyDefinition.Emit () [0x00000] in :0 at DynamicCSharp.Compiler.McsDriver.Compile (System.Reflection.Emit.AssemblyBuilder& assembly, System.AppDomain domain, Boolean generateInMemory) [0x00000] in :0 at DynamicCSharp.Compiler.McsCompiler.CompileFromSettings (Mono.CSharp.CompilerSettings settings, Boolean generateInMemory) [0x00000] in :0 in at [0, 0]

SPQRAeternum

that's likely why you got errors for the Alive new UI too, that works only on the most recent vam

thomas d

I might try upgrading my 1.20 this weekend. I hope it does not screw up all my stuff. LOL

Anonymous

Ooooooooh, hell yeah! I was messing with another frontend made with Gradio for Pygmalion called Oobabooga, it outputs TTS! I wonder if I can somehow get the generated files to be added to this and be detected and refreshed accordingly!? It's an amazing thing, even allows you to use TavernAI characters from the Discord and upload images like CAI. I wonder would there be a way to have an extension on my browser extract the cached generated TTS and inject it into the folder where the plugin checks for it?That way we can use Colab instead of running Oobabooga locally to forward it to VAM? Some guy is even taking it to the next level and making a Unity demo with an animated 3D model avatar that responds visually to generated words! https://www.reddit.com/r/PygmalionAI/comments/1141dwr/unity_pygmalionai_test/

SPQRAeternum

I didn't test it but technically it should work with full paths too like "C:\cache\sound.wav" Yeah, there's a lot of excitement over 3d+AI, even vr, and many people want it done. It will get done but remains to be seen how soon. It's a tricky and very messy problem. It's easy to do experimental stuff that looks nice or sounds nice but for it to be actually practical it's a different story For the TTS thing I think VAM is going in a different direction with it, by using a microphone audio source. So a solution might be using a software that forwards the system audio to a fake audio source. I think there's some background stuff they're working on towards stuff like that

SPQRAeternum

I just checked TavernAI and I get the hype now lol the good news is that it looks like there's an api that I think should be possible to implement to vam, you'd just have to keep the collab tab open like tavernai I might give it a try. I receieved a few requests to remake my old chatbots project but those bots were very boring. For this it would be pretty cool and worth the mess of running extra software

Jonathon Barton

Thomas: I would add to this... you said "Not completely sure what this is" Unless you have some method of dynamically generating an audio file with a specific name in a specific folder inside VaM - this won't be of *any* use to you at all. It 100% solved an issue I was having last year where I was writing a file to the RT_lipsync audio directory, but VaM was reading it one time only - when I updated the file and triggered it to play in VaM, the ORIGINAL sound played again. Like: 1.MP3 says "Hi, How Are You?" - VaM plays "Hi, How Are You?" create a NEW 1.mp3 in the same location 1.MP3 says "Great to hear!" - VaM plays "Hi, How Are You?" again. This solves that issue for me - but if you're not generating dynamic audio? Won't do a *thing* for ya! :-)

Sidd

OH YES!!!!