Search Unity

  1. Unity 2019.2 is now released.
    Dismiss Notice

RT-Voice - Run-time text-to-speech solution

Discussion in 'Assets and Asset Store' started by Stefan-Laubenberger, Jul 10, 2015.

  1. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,326
    Hi

    An upgrade for 50% of the PRO price should be available, please check it again:
    https://goo.gl/QhTFNa


    Cheers
    Stefan
     
    Last edited: Jan 22, 2019
  2. 3d_Artist1987

    3d_Artist1987

    Joined:
    Jul 9, 2012
    Posts:
    716
    Any minimum android os requirement?
     
  3. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,326
    The minimum Android version is 4.0.3 (API level 15).
     
  4. MrLucid72

    MrLucid72

    Joined:
    Jan 12, 2016
    Posts:
    664
    Code (CSharp):
    1. InvalidOperationException: No process is associated with this object.
    2.   at System.Diagnostics.Process.EnsureState (System.Diagnostics.Process+State state) [0x00000] in <00000000000000000000000000000000>:0
    3.   at System.Diagnostics.Process.get_HasExited () [0x00000] in <00000000000000000000000000000000>:0
    4.   at Crosstales.RTVoice.Provider.VoiceProviderWindows+<getVoices>c__Iterator3.MoveNext () [0x00000] in <00000000000000000000000000000000>:0
    5.   at UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator enumerator, System.IntPtr returnValueAddress) [0x00000] in <00000000000000000000000000000000>:0
    6.  
    7. Could not start process: System.ComponentModel.Win32Exception (0x80004005): ApplicationName='C:/Program Files (x86)/Steam/steamapps/common/<gameName>/<gameName>_Data/RTVoiceTTSWrapper.exe', CommandLine='--voices', CurrentDirectory='', Native error= Error looking up error string
    TTS works fine in the editor, but in in a standalone build: Do I need to move a DLL file or something to the build dir? Anyone seen this error?

    Windows 64 Standalone with IL2CPP, .NET 4.x. Unity 2018.2.x
     
    Last edited: Jan 29, 2019
  5. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,326
    Is the path "C:/Program Files (x86)/Steam/steamapps/common/<gameName>/<gameName>_Data/RTVoiceTTSWrapper.exe" valid?
    Did you try our latest version 2019.1.1 with "Windows Legacy" disabled?
    upload_2019-1-29_17-28-24.png
     
  6. jeromeWork

    jeromeWork

    Joined:
    Sep 1, 2015
    Posts:
    281
    Well I bit the bullet and paid for the upgrade to RT-Voice Pro at the end of last year before the deal ran out... I'm now starting to look at an older project which uses the older version.

    What's the procedure for updating to Pro?
    And will my scripts be compatible, has the API changed much?

    Thanks.
     
  7. bradbecker

    bradbecker

    Joined:
    Dec 26, 2014
    Posts:
    96
    Thanks! Bought it.
     
    Stefan-Laubenberger likes this.
  8. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,326
    Hi Jerome

    Thank you for buying the upgrade!

    The easiest way to upgrade is to create a new, empty scene and then delete "Assets/Plugins/crosstales".
    After that, import the PRO package.
    We did some minor changes in the API, so you probably have to change some of your scripts.

    If you encounter any problems, don't hesitate to ask and just contact us via email or Discord.


    Cheers
    Stefan
     
    jeromeWork likes this.
  9. MrLucid72

    MrLucid72

    Joined:
    Jan 12, 2016
    Posts:
    664
    Hmm, after updating, it now won't even work in Unity 2018.3.4. I'm getting this:

     
  10. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,326
    To be able to reproduce your error, can you please tell me how this exactly happened?
    E.g. the complete "Speak"-call with all parameters.

    Thx!
     
  11. MrLucid72

    MrLucid72

    Joined:
    Jan 12, 2016
    Posts:
    664
    I just had the vanilla Speaker -- but I recently converted the Nested Prefabs to the new Unity nested prefabs, so I feel like something is weird with this. Or the update messed up my existing setup (I'm going to try vanilla)

    Heads up, RTVoice prefab gen via the right click menu doesn't work in the new prefab editor.
     
  12. MrLucid72

    MrLucid72

    Joined:
    Jan 12, 2016
    Posts:
    664
    ok -- all I'm doing is this:
    ```
    // RTVoice component is active/enabled
    Speaker.Speak("TTS Enabled.", ttsAudioSrc);
    ```




    It doesn't seem to be working with the most vanilla setup on the new ver:


    in Unity editor on Win10
     
  13. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,326
    We don't recommend adding the RT-Voice-prefab as a child of another object.

    However, if you want to do it, make sure you disable "Dont Destroy" on the Speaker-class and disable also "Ensure Name" in the configuration.
     
  14. MrLucid72

    MrLucid72

    Joined:
    Jan 12, 2016
    Posts:
    664
    Gah, sorry about spam
    I'm now trying minimal -- right click >> add >> rtvoice (as parent). Then I just tried a basic Speaker.Speak("TTS Enabled.", ttsAudioSrc); // Audio src exists

    Speaker.Speak() results in this:




    I even tried deleting the old rcvoice dir and reinstalling. It's as vanilla as it gets. Does rc generate a temporary file and then play it when I speak from Speaker? What would cause this to be invalid? Does the autogen include time/date -- and would unicode affect this?
     
  15. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,326
    Ok, I found the problem. please change the method "getSapiVoice" in "VoiceProviderWindows.cs" to this:
    Code (CSharp):
    1.         private SpObjectToken getSapiVoice(Model.Voice voice)
    2.         {
    3.             if (voice != null) {
    4.                 foreach (SpObjectToken sapiVoice in availableVoices)
    5.                 {
    6.                     if (sapiVoice.Id.Equals(voice.Identifier))
    7.                         return sapiVoice;
    8.                 }
    9.             }
    10.  
    11.             return null;
    12.         }
    Does it work?
     
  16. MrLucid72

    MrLucid72

    Joined:
    Jan 12, 2016
    Posts:
    664
    Nice catch, I was afraid it was just me. I'll be able to test in the next day or 2 and I'll follow up. Thanks for the quick response~
     
  17. pabloHatzi

    pabloHatzi

    Joined:
    Jan 30, 2015
    Posts:
    7
    Hello, I bought RT-Voice pro and try to use SSML :
    <voice gender="female" languages="en-US" required="languages gender variant">Mary had a little lamb,</voice>
    <!-- now request a different female child's voice -->
    <voice gender="female" variant="2">
    Its fleece was white as snow.
    </voice>
    <!-- processor-specific voice selection -->
    <voice name="Mike" required="name">I want to be like Mike.</voice>


    the same problem occurs in this
    <voice gender="female" required="languages gender age" languages="en-US ja">
    Any female voice here.
    <voice age="6">
    A female child voice here.
    <lang xml:lang="ja">
    <!-- Same female child voice rendering Japanese text. -->
    </lang>
    </voice>
    </voice>

    The application is a Windows standalone application

    Thank's
     
    Last edited: Feb 8, 2019
  18. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,326
    Hi

    I'm not sure what you exactly mean. Both of your examples are working on my side.
    The "problem" could be that there are not enough voices and variants available.

    In my case, I have "David" and "Zira", so in your first example, Zira speaks the first part and David both other parts.
    The second example is spoken by Zira without any variation in tone (no child voice).

    This is how I would do it:
    This is the default voice. <voice name="Microsoft David Desktop">This is David. <prosody pitch="+300%"> This is the same voice sounding like young man.</prosody></voice> This is the default again. <voice name="Microsoft Zira Desktop">Zira here. <prosody pitch="+300%">This is the same voice sounding like a young woman.</prosody></voice>

    I would recommend adding more voices, please see chapter 6 of the documentation:
    https://www.crosstales.com/media/data/assets/rtvoice/RTVoice-doc.pdf

    Have a nice weekend!


    Cheers
    Stefan
     
  19. MrLucid72

    MrLucid72

    Joined:
    Jan 12, 2016
    Posts:
    664
    Worked! Oh, I remembered I was a bit frustrated getting this working through some bugs -- I'll bump++ up my review for the asset after this.
     
    Stefan-Laubenberger likes this.
  20. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,326
    I'm happy it finally worked! This was unfortunately caused by the new DLL-implementation, which isn't battle tested...
    The "Windows Legacy"-mode is probably the way to go for now.

    Thank you for your updated review and have a nice weekend!
     
  21. MrLucid72

    MrLucid72

    Joined:
    Jan 12, 2016
    Posts:
    664
    @Stefan-Laubenberger Oops, may have mixed up a quote. Rather -- the editor fix worked.

    However, standalone crashes (il2cpp @ Unity 2018.3) due to a sapi err:

    Code (CSharp):
    1. 0x00007FFEAFCA6909 (sapi) DllUnregisterServer
    Seems that I was way too excited after the editor fix :p

    Are you sure this works on IL2CPP standalone Windows (64-bit) builds?

    Code (CSharp):
    1. GameAssembly.dll caused an Access Violation (0xc0000005)
    2.   in module GameAssembly.dll at 0033:70d8b71e.
    3.  
    4. Read from location 0000000000000001 caused an access violation.
    5.  
    6. Stack Trace of Crashed Thread 16004:
    7. 0x00007FFE70D8B71E (GameAssembly) [c:\program files\unity\hub\editor\2018.3.4f1\editor\data\il2cpp\libil2cpp\vm\rcw.cpp:267] il2cpp::vm::GetOrCreateRCW<Il2CppIUnknown,0>
    8. 0x00007FFE7142CA7C (GameAssembly) [c:\repos\tol\tol-game-win\i42-tol-win64\temp\stagingarea\data\il2cppoutput\bulk_interop.speechlib_0.cpp:3222] SpFileStreamClass_get_Format_mD1172347016F8CEF18CD01EA4F125496F0E166D0
    9. 0x00007FFE71DD7B08 (GameAssembly) [c:\repos\tol\tol-game-win\i42-tol-win64\temp\stagingarea\data\il2cppoutput\bulk_assembly-csharp-firstpass_3.cpp:18384] VoiceProviderWindows_speakToFile_mCB0BFF62684DA5A06890D670C13E5C4B1EFCD59E
    10. 0x00007FFE711842DA (GameAssembly) [c:\repos\tol\tol-game-win\i42-tol-win64\temp\stagingarea\data\il2cppoutput\bulk_photon3unity3d_0.cpp:30355] MyAction_Invoke_mDB5EBE773EC8E0CA788E70D4D5547078CDB336DE
    11. 0x00007FFE71231E24 (GameAssembly) [c:\repos\tol\tol-game-win\i42-tol-win64\temp\stagingarea\data\il2cppoutput\bulk_mscorlib_19.cpp:34797] ExecutionContext_RunInternal_m5BF955CE8B04D9A7C959B9011579CC0FABD5FC56
    12. 0x00007FFE71231F8A (GameAssembly) [c:\repos\tol\tol-game-win\i42-tol-win64\temp\stagingarea\data\il2cppoutput\bulk_mscorlib_19.cpp:34646] ExecutionContext_Run_m97152E1791C019905F6297946D7411CA6683CCEB
    13. 0x00007FFE711842DA (GameAssembly) [c:\repos\tol\tol-game-win\i42-tol-win64\temp\stagingarea\data\il2cppoutput\bulk_photon3unity3d_0.cpp:30355] MyAction_Invoke_mDB5EBE773EC8E0CA788E70D4D5547078CDB336DE
    14. 0x00007FFE70E4844C (GameAssembly) [c:\repos\tol\tol-game-win\i42-tol-win64\temp\stagingarea\data\il2cppoutput\il2cppinvokertable.cpp:74441] RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017
    15. 0x00007FFE70D605F2 (GameAssembly) [c:\program files\unity\hub\editor\2018.3.4f1\editor\data\il2cpp\libil2cpp\vm\runtime.cpp:531] il2cpp::vm::Runtime::Invoke
    16. 0x00007FFE70D8306F (GameAssembly) [c:\program files\unity\hub\editor\2018.3.4f1\editor\data\il2cpp\libil2cpp\icalls\mscorlib\system.threading\thread.cpp:160] il2cpp::icalls::mscorlib::System::Threading::ThreadStart
    17. 0x00007FFE70D9CEFD (GameAssembly) [c:\program files\unity\hub\editor\2018.3.4f1\editor\data\il2cpp\libil2cpp\os\thread.cpp:176] il2cpp::os::Thread::RunWrapper
    18. 0x00007FFE70D92183 (GameAssembly) [c:\program files\unity\hub\editor\2018.3.4f1\editor\data\il2cpp\libil2cpp\os\win32\threadimpl.cpp:28] il2cpp::os::ThreadStartWrapper
    19. 0x00007FFED9A73034 (KERNEL32) BaseThreadInitThunk
    20. 0x00007FFEDB3A1471 (ntdll) RtlUserThreadStart
    Gonna try a new build with legacy enabled to see what happens.

    EDIT 2: Legacy resolved the crashes, but now it simply doesn't do anything. Gah :/
    (Works fine in editor)

    Could not find the TTS-wrapper: 'C:/path/to/Build - Copy/ThroneOfLies_Data/RTVoiceTTSWrapper.exe'

    Hmm, seems like the post process script is experiencing weirdness. Perhaps this is why it worked on non-legacy, too. I'll do some trial/err on this.
     
    Last edited: Feb 9, 2019
  22. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,326
    Is the exe in your build 'C:/path/to/Build - Copy/ThroneOfLies_Data/RTVoiceTTSWrapper.exe' inside the data-folder?
     
  23. MrLucid72

    MrLucid72

    Joined:
    Jan 12, 2016
    Posts:
    664
    It is not -- failed to copy. I found the post process script I'm inspecting now.

    Meanwhile, toggling Windows Legacy on/off creates a NullReferenceException -- is this related?

    Code (CSharp):
    1. NullReferenceException: Object reference not set to an instance of an object
    2. Crosstales.RTVoice.Speaker.initOSProvider () (at Assets/Plugins/crosstales/RTVoice/Scripts/Speaker.cs:2207)
    3. Crosstales.RTVoice.Speaker.initProvider () (at Assets/Plugins/crosstales/RTVoice/Scripts/Speaker.cs:2195)
    4. Crosstales.RTVoice.Speaker.ReloadProvider () (at Assets/Plugins/crosstales/RTVoice/Scripts/Speaker.cs:2063)
    5. Crosstales.RTVoice.EditorExtension.SpeakerEditor.OnInspectorGUI () (at Assets/Plugins/crosstales/RTVoice/Editor/Extension/SpeakerEditor.cs:231)
    6. UnityEditor.InspectorWindow.DoOnInspectorGUI (System.Boolean rebuildOptimizedGUIBlock, UnityEditor.Editor editor, System.Boolean wasVisible, UnityEngine.Rect& contentRect) (at C:/buildslave/unity/build/Editor/Mono/Inspector/InspectorWindow.cs:1625)
    7. UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr) (at ?)
    The issue seems to be here @ speaker.cs:
    Code (CSharp):
    1. private static void initOSProvider()
    2. {
    3.     if (Util.Helper.isWindowsPlatform && !instance.ESpeakMode)
    EDIT: The error doesn't show if RTVoice is active. This is probably not intended (it shouldn't require the gameObj to be active to change build settings)
     
    Last edited: Feb 10, 2019
  24. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,326
    I don't know yet why it doesn't copy the exe to the build in your project... I will investigate it further.
    What is your Unity-version?
    Meanwhile, please copy the exe manually into the "Data"-folder after the build.

    About the null-pointer: please change the method "ReloadProvider" in "Speaker.cs" to:
    Code (CSharp):
    1.         public static void ReloadProvider()
    2.         {
    3.             if (instance != null)
    4.             {
    5.                 Silence();
    6.                 initProvider();
    7.             }
    8.         }
    Sorry for the inconvenience, but I'm sure we will get it working!
     
  25. MrLucid72

    MrLucid72

    Joined:
    Jan 12, 2016
    Posts:
    664
    I got it to copy over after modernizing the build process from deprecated modules that were meant for <=Unity 5.x:

    Code (CSharp):
    1. public class BuildPostprocessor : IPostprocessBuildWithReport
    2. {
    3.     public int callbackOrder => 1;
    4.  
    5.     public void OnPostprocessBuild(BuildReport report) {
    6.         BuildTarget target = report.summary.platform;
    7.         string pathToBuiltProject = report.summary.outputPath;
    8.  
    Tested in editor:
    * Fine, np

    Tested standalone without legacy mode:
    * Crashed on enable/Speak() with memory access violation.
    * Doesn't crash when TTS is disabled.
    * I really don't think IL2CPP builds are supported with this asset.

    Testing standalone with legacy mode....
    * Doesn't crash, but has errs and doesn't work.
    * Errs:

    Code (CSharp):
    1. InvalidOperationException: No process is associated with this object.
    2.   at System.Diagnostics.Process.EnsureState (System.Diagnostics.Process+State state) [0x00000] in <00000000000000000000000000000000>:0
    3.   at System.Diagnostics.Process.get_HasExited () [0x00000] in <00000000000000000000000000000000>:0
    4.   at Crosstales.RTVoice.Provider.VoiceProviderWindowsLegacy+<Speak>d__30.MoveNext () [0x00000] in <00000000000000000000000000000000>:0
    5.   at UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator enumerator, System.IntPtr returnValueAddress) [0x00000] in <00000000000000000000000000000000>:0
    Code (CSharp):
    1. Could not start process: System.ComponentModel.Win32Exception (0x80004005): ApplicationName='C:/Repos/ToL/tol-game-win/i42-tol-win64/Build/ThroneOfLies_Data/RTVoiceTTSWrapper.exe', CommandLine='--speakToFile "<?xml version='1.0' encoding='UTF-8' ?><speak version='1.0' xmlns='http://www.w3.org/2001/10/synthesis' xml:lang='en-US'>TTS Enabled.</speak>" "C:\Users\dylan\AppData\Local\Temp\Imperium42 Game Studio\Throne of Lies\rtvoice_53c7a4dd-80c8-41ea-8d96-997de1948047.wav" 0 100 "Microsoft David Desktop"', CurrentDirectory='', Native error= Success
    2.   at System.Diagnostics.Process.StartWithCreateProcess (System.Diagnostics.ProcessStartInfo startInfo) [0x00000] in <00000000000000000000000000000000>:0
    3.   at Crosstales.RTVoice.Provider.BaseVoiceProvider.startProcess (System.Diagnostics.Process& process, System.Int32 timeout) [0x00000] in <00000000000000000000000000000000>:0
    4.   at ImageUploader+UploadDelegate.Invoke () [0x00000] in <00000000000000000000000000000000>:0
    5.   at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00000] in <00000000000000000000000000000000>:0
    6.   at System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state) [0x00000] in <00000000000000000000000000000000>:0
    7.   at ImageUploader+UploadDelegate.Invoke () [0x00000] in <00000000000000000000000000000000>:0
    8. UnityEngine.Logger:Log(LogType, Object)
    9. UnityEngine.Debug:LogError(Object)
    10. Crosstales.RTVoice.Provider.BaseVoiceProvider:startProcess(Process&, Int32)
    11. UploadDelegate:Invoke()
    12. System.Threading.ExecutionContext:RunInternal(ExecutionContext, ContextCallback, Object, Boolean)
    13. System.Threading.ExecutionContext:Run(ExecutionContext, ContextCallback, Object)
    14. UploadDelegate:Invoke()
    _______________

    Any idea how to fix these for the IL2CPP Win64 standalone builds? I'm getting a bit desperate :/ it's 99% there -- works great in Unity. There's gotta be something small?

    Do you have any initial idea what it is? I'd rather get it working, but I can only continue on this project if it's a quick fix. I realized I've spent way more time than intended on this since I feel like I'm so incredibly close to getting it working.
     
    Last edited: Feb 10, 2019
  26. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,326
    I will look at this, but please give me some time.
    What's your Unity-version?
     
    MrLucid72 likes this.
  27. MrLucid72

    MrLucid72

    Joined:
    Jan 12, 2016
    Posts:
    664
    Thank you. 2018.3.4f1
     
  28. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,326
    Ok, I did various tests on my side.

    Bad news: RT-Voice doesn't currently work with standalone and IL2CPP :(

    I first tried it with the DLL and added a "link.xml":
    Code (CSharp):
    1. <linker>
    2.        <assembly fullname="System" preserve="all"/>
    3.        <assembly fullname="mscorlib" preserve="all"/>
    4.        <assembly fullname="CustomMarshalers" preserve="all"/>
    5.        <assembly fullname="Interop.SpeechLib" preserve="all"/>
    6. </linker>
    But IL2CPP still didn't work:
    upload_2019-2-10_20-28-37.png

    Then I tried it with "legacy"-mode which needs "System.Diagnostics.Process". To my surprise, it isn't implemented:
    https://issuetracker.unity3d.com/is...process-dot-start-fails-to-launch-application
    Please vote for it!

    I will try to start the process with p/Invoke but I'm unsure if that's the road to success. We need many specific settings from the Process-class (like encoding, stdin/stdout etc.) and I don't know if it's possible to control them all without a heap of work.

    Unfortunately, the only thing that will work for now is to use "Mono" as scripting backend.
    I'm really sorry that I don't have better news, it's a big problem for us too!

    We're eager to find a solution and keep on working on it.
    Any input to solve the problem is very welcome.


    So long,
    Stefan


    Edit:
    RT-Voice works now with Windows standalone and IL2CPP builds!
     
    Last edited: Apr 11, 2019
  29. MrLucid72

    MrLucid72

    Joined:
    Jan 12, 2016
    Posts:
    664
    Ah, that is very unfortunate to hear. I voted on that issue. For now, you may want to update your store page.

    As for il2cpp, it would be worth the port since it's the future. It's incredibly secure (it prevents code injections altogether so hacking can really only be from the networking side), better optimized, and a year from now I'd bet everyone will be using it, if able. Other than that, my knowledge on this is limited.

    I'm also going to send you an email to look out for.

    Thanks for testing.
     
  30. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,326
    We give our best to solve the issue but it's also very unfortunate for us and we need time to find a solution!
    I'm totally aware that this issue is a BIG problem for our asset in the near future.

    If you need IL2CPP under standalone, please consider using MaryTTS or AWS Polly (which has the most awesome voices anyway) in the mean time.


    Edit:
    RT-Voice works now with Windows standalone and IL2CPP builds!
     
    Last edited: Apr 11, 2019
  31. jeromeWork

    jeromeWork

    Joined:
    Sep 1, 2015
    Posts:
    281
    Thanks. Might be worthwhile at some stage to create an API update guide. Since this is somewhat of a forced update it would help people out I think :)

    Since I was mostly using a basic rewrite of your Simple.cs and Speak.cs scripts I was able to compare both versions and make the necessary changes.

    For anyone going through a similar process, here's what I found I needed to do.

    One using directive seems to no longer be necessary
    DELETED:
    Code (CSharp):
    1. using Crosstales.RTVoice.Model.Event;
    and

    Code (CSharp):
    1. private void speakAudioGenerationCompleteMethod(object sender, SpeakEventArgs e)
    now becomes
    Code (CSharp):
    1. private void speakAudioGenerationCompleteMethod(Wrapper wrapper)
    Essentially the wrapper abstracts and holds the sender and arguments.

    and
    Code (CSharp):
    1. Speaker.Speak(speakText, Source, Speaker.VoiceForCulture("en"), false, voiceRate, 1, "", voicePitch);
    becomes
    Code (CSharp):
    1. Speaker.Speak(speakText, Source, Speaker.VoiceForCulture("en"), false, voiceRate, voicePitch, 1f);
    @Stefan-Laubenberger
    One thing that did throw me was that after successfully compiling without any errors, the console informed me that API change had been forced to 'NET_2_0' (rather than the default subset) I'm guessing you're using some of the extended libraries.

    Can you confirm why this is? I'm on Unity 2017.4.17 on Windows, and building to Windows.
    Searching the Docs, it actually says:
    2.5. Platform-specific features and limitations
    2.5.1. Windows
    • Support for SSML
    • Native rate is internally limited to 20 logarithmic distributed steps
    • .NET 4.0 or higher must be installed
    I'm confused :D
     
    Stefan-Laubenberger likes this.
  32. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,326
    Hi Jerome

    Thank you for your update guide!
    We will add an extra chapter to the documentation.

    About your question: RTV needs the full .NET 2.0 (or 4.6) because we use some classes that aren't available in the subset.
    .NET 4.0 is only the run-time for the SAPI-access and is normally installed on every machine - no worries :)


    Cheers
    Stefan
     
  33. roboroo

    roboroo

    Joined:
    Mar 27, 2017
    Posts:
    9
    Hi Stefan, thanks for the great asset..having fun creating stuff with it. I noticed an earlier post asked the question as to whether there is a way of introducing a play audio file trigger. For example if you wanted to add a 'beep' to simulate beeping out an expletive. Is this possible? Also, do you have a 'guide' of sorts for implementing prosidy and intonations to the speech, or are they different for each TTS system?
     
  34. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,326
    Hi roboroo

    I'm glad RTV seems useful for you! :)

    We created a component "Paralanguage" (incl. scene) which is already in the package. It's still experimental and this is why there is no official description in the docs.
    Anyway, I think it should work for your use-case. This is the "Paralanguage"-scene:
    upload_2019-2-18_11-49-3.png
    It works like this: add 1-n audio clips (names without spaces). Then add your text and fill in the desired clips with the # as pre- and postfix inside your text.
    In you case. you would add the "beep"-audio to "Clips" and enter your text, like:
    "xy is such an #beep# - I hope he #beep# #beep#"

    You can then simply call "Speak" to hear it.

    About SSML tags: please see SSML.txt under "Documentation" or go to this site for more information:
    https://www.w3.org/TR/speech-synthesis/

    I hope this helps you further.


    So long,
    Stefan
     
    Last edited: Feb 19, 2019
    roboroo likes this.
  35. roboroo

    roboroo

    Joined:
    Mar 27, 2017
    Posts:
    9
    Thanks Stefan, will give it a go.
     
  36. harryzzzzz

    harryzzzzz

    Joined:
    Aug 4, 2016
    Posts:
    4
    Hi there,

    I have purchased RTVoice Pro and imported in an empty project. I made a standalone build and it is giving No OS Voices Found - TTS wont work, but it is working fine in editor.
    My Platform : Windows 10 Surface Book 2
    VS 2017
    Unity 2018.3.0f2

    Please help me i really need to solve this asap.

    Thanks,
    Harris
     
  37. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,326
    Hi Harris

    Can you please try a build with "Windows Legacy" enabled?


    So long,
    Stefan
     
  38. roboroo

    roboroo

    Joined:
    Mar 27, 2017
    Posts:
    9
    Hi Stefan, any chance you could supply a Playmaker action for the Paralanguage script? Got it working ok but having trouble incorporating it into my Playmaker setup. Thanks
     
  39. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,326
    We made new PM actions for all RTV-tools. :)
    Please send me an email with your invoice and I will send you the new actions.
     
  40. roboroo

    roboroo

    Joined:
    Mar 27, 2017
    Posts:
    9
    Hi Stefan, got that up and running in my game. Is there any way to fix the lag before the sound plays? Also there is some problems with Playmaker whilst RT voice is running. The Playmaker GUI Layout frames jump and jitter, if I move the positioning sliders it stops and if I disable the RTV module it stops. Also there seems to be a bit of a performance drop while editing with RTV running. And lastly, the 'event' function on paralanguage doesn't seem to function correctly? It doesn't send the event when the voice stops, it send it immediately. Cheers.
     
  41. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,326
    Hi

    The "Paralanguage"-component isn't officially released, so it could contain some minor problems.
    The same is true for the PlayMaker-action.

    We will take a look at this on Monday and inform you about our findings.


    So long,
    Stefan
     
    roboroo likes this.
  42. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,326
    @roboroo I've sent you an email with the fixes.
     
  43. Sajid_farooq

    Sajid_farooq

    Joined:
    May 23, 2012
    Posts:
    237
    Im interested in this tool primarily for Amazon Polly support.

    -Is Amazon Polly supported on the desktop builds?
    -Is there a tutorial/guide for Polly integration?
     
  44. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,326
    Hi Sajid

    Thank you for your interest in RT-Voice!
    Here are my answers:
    1. Yes, AWS Polly works on all platforms except WebGL
    2. Yes, there is manual inside the asset

    I hope this helps you further.


    Cheers
    Stefan
     
  45. Sajid_farooq

    Sajid_farooq

    Joined:
    May 23, 2012
    Posts:
    237
  46. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,326
    The manual is inside the asset under "Documentation" (you have to buy it to gain access).
    A demo is also inside the asset - we haven't planned to add it to our official demo due to different security concerns (AWS Polly is a paid service after all and we don't want to spend money for a demo).

    I can assure you that it works like a charm ;)
     
  47. Sajid_farooq

    Sajid_farooq

    Joined:
    May 23, 2012
    Posts:
    237
    Sounds good. I should be purchasing in the next few days.

    I've seen several assets make the documentation public. I believe your asset will benefit from the manual being public as well.
     
  48. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,326
    Hello again

    The main documentation is already public. We decided to leave the specific manuals for MaryTTS, AWS Polly, SSML etc. inside the asset and only available to our customers.

    Anyway, I hope you will enjoy the asset.


    Cheers
    Stefan
     
  49. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,326
    We've just released version 2019.2.0 of RTV.
    Main changes:
    • Klattersynth added
    • Speaker: isOnlineService and hasCoRoutines added
    • Provider: isOnlineService and hasCoRoutines added
    • AudioFileGenerator: callback "OnParalanguageStart" and "OnParalanguageComplete" added
    • Paralanguage: callback "OnParalanguageStart" and "OnParalanguageComplete" added
    • SpeechText: callback "OnSpeechTextStart" and "OnSpeechTextComplete" added
    • PlayMaker actions added:
      • AudioFileGenerator
      • Paralanguage
      • SpeechText
      • TextFileSpeaker
    • Updated to Common 2019.2.3
     
    Last edited: Mar 12, 2019
  50. Bartolomeus755

    Bartolomeus755

    Joined:
    Jun 20, 2013
    Posts:
    240
    I bought the RT-Voice Pro, really great work on this asset. But for my new project I need the build target standalone with IL2CPP, is this supoorted with the new version?