Search Unity

  1. Unity 2019.1 beta is now available.
    Dismiss Notice
  2. The Unity Pro & Visual Studio Professional Bundle gives you the tools you need to develop faster & collaborate more efficiently. Learn more.
    Dismiss Notice
  3. We're looking for insight from anyone who has experience with game testing to help us better Unity. Take our survey here. If chosen to participate you'll be entered into a sweepstake to win an Amazon gift card.
    Dismiss Notice
  4. On February 28th the Feedback website will shut down and be redirected to the Unity forums. See the full post for more information.
    Dismiss Notice
  5. Want to provide direct feedback to the Unity team? Join the Unity Advisory Panel.
    Dismiss Notice
  6. Unity 2018.3 is now released.
    Dismiss Notice
  7. Improve your Unity skills with a certified instructor in a private, interactive classroom. Watch the overview now.
    Dismiss Notice

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

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

  1. wetcircuit

    wetcircuit

    Joined:
    Jul 17, 2012
    Posts:
    881
    I upgraded my Playmaker and swapped out the new PM actions. RT-Voice works again! :D

    (I also tried the RTVReload script on a GO, but that seemed to prevent the new PM actions from working… maybe I misunderstood how to use it. It worked once I disabled this component.)

    :cool: Thank you again for the outstanding support!
    ⭐️⭐️⭐️⭐️⭐️
     
    Stefan-Laubenberger likes this.
  2. bradbecker

    bradbecker

    Joined:
    Dec 26, 2014
    Posts:
    65
    so... just came back to a project using RT-Voice to find out it's been deprecated and there's no upgrade path available to RT-Voice Pro. Am I missing something? A forced paid upgrade is one thing, but not offering an upgrade at all to deprecated customers seems a little bait-and-switch-y. Even a $10 discount would be a friendly gesture.
     
  3. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,094
    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
  4. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,094
    We've just released version 2019.1.1 of RT-Voice.
    Main changes:
    • "Unity Standard Assets" removed
    • UWP (WSA) provider improved
    • Minor code improvements
     
  5. 3d_Artist1987

    3d_Artist1987

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

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,094
    The minimum Android version is 4.0.3 (API level 15).
     
  7. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,094
    The new version is in the store!
     
  8. Xblade-Imperium42

    Xblade-Imperium42

    Joined:
    Jan 12, 2016
    Posts:
    553
    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
  9. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,094
    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
     
  10. jeromeWork

    jeromeWork

    Joined:
    Sep 1, 2015
    Posts:
    239
    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.
     
  11. bradbecker

    bradbecker

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

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,094
    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.
  13. Xblade-Imperium42

    Xblade-Imperium42

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

     
  14. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,094
    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!
     
  15. Xblade-Imperium42

    Xblade-Imperium42

    Joined:
    Jan 12, 2016
    Posts:
    553
    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.
     
  16. Xblade-Imperium42

    Xblade-Imperium42

    Joined:
    Jan 12, 2016
    Posts:
    553
    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
     
  17. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,094
    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.
     
  18. Xblade-Imperium42

    Xblade-Imperium42

    Joined:
    Jan 12, 2016
    Posts:
    553
    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?
     
  19. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,094
    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?
     
  20. Xblade-Imperium42

    Xblade-Imperium42

    Joined:
    Jan 12, 2016
    Posts:
    553
    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~
     
  21. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,094
    We've just released version 2019.1.2 of RTV.
    Main changes:
    • Windows:
      • fix for built-in provider when voice is null
      • detection of "modern Spanish" added
    • Updated to Common 2019.2.1
     
  22. pabloHatzi

    pabloHatzi

    Joined:
    Jan 30, 2015
    Posts:
    3
    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
  23. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,094
    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
     
  24. Xblade-Imperium42

    Xblade-Imperium42

    Joined:
    Jan 12, 2016
    Posts:
    553
    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.
  25. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,094
    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!
     
  26. Xblade-Imperium42

    Xblade-Imperium42

    Joined:
    Jan 12, 2016
    Posts:
    553
    @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
  27. Stefan-Laubenberger

    Stefan-Laubenberger

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

    Xblade-Imperium42

    Joined:
    Jan 12, 2016
    Posts:
    553
    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
  29. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,094
    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!
     
  30. Xblade-Imperium42

    Xblade-Imperium42

    Joined:
    Jan 12, 2016
    Posts:
    553
    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
  31. Stefan-Laubenberger

    Stefan-Laubenberger

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

    Xblade-Imperium42

    Joined:
    Jan 12, 2016
    Posts:
    553
    Thank you. 2018.3.4f1
     
  33. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,094
    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
     
    Last edited: Feb 10, 2019
  34. Xblade-Imperium42

    Xblade-Imperium42

    Joined:
    Jan 12, 2016
    Posts:
    553
    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.
     
  35. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,094
    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.
     
  36. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,094
    The new version is in the store!
     
  37. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,094
    We've just released version 2019.1.3 of RTV.
    Main changes:
    • eSpeak-NG support added
    • eSpeak: added data path (can now be bundled with Unity)
    • Warning added if build target is standalone with IL2CPP
    • Code cleanup
     
    Xblade-Imperium42 likes this.
  38. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,094
    The new version is in the store!
     
  39. jeromeWork

    jeromeWork

    Joined:
    Sep 1, 2015
    Posts:
    239
    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.
  40. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,094
    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
     
  41. roboroo

    roboroo

    Joined:
    Mar 27, 2017
    Posts:
    4
    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?
     
  42. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,094
    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 at 9:46 AM
    roboroo likes this.
  43. roboroo

    roboroo

    Joined:
    Mar 27, 2017
    Posts:
    4
    Thanks Stefan, will give it a go.
     
  44. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,094
    Bad Word Filter PRO is part of the "Bundle of the Week" and is 50% off:

    bundleoftheweek.PNG

    Get it now ;)
     
    roboroo likes this.
  45. harryzzzzz

    harryzzzzz

    Joined:
    Aug 4, 2016
    Posts:
    2
    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
     
  46. Stefan-Laubenberger

    Stefan-Laubenberger

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

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


    So long,
    Stefan