Search Unity

  1. Good news ✨ We have more Unite Now videos available for you to watch on-demand! Come check them out and ask our experts any questions!
    Dismiss Notice
  2. Ever participated in one our Game Jams? Want pointers on your project? Our Evangelists will be available on Friday to give feedback. Come share your games with us!
    Dismiss Notice

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

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

  1. Wojciech-Wawrzyniak

    Wojciech-Wawrzyniak

    Joined:
    May 21, 2015
    Posts:
    5
    Hi,
    Code (CSharp):
    1. Unloading 99 unused Assets to reduce memory usage. Loaded Objects now: 3490.
    2. Total: 9.283144 ms (FindLiveObjects: 0.589395 ms CreateObjectMapping: 0.081695 ms MarkObjects: 8.468508 ms  DeleteObjects: 0.142553 ms)
    3.  
    4. [00:00:00] Enlighten: Precompute started.
    5. [PathTracer] building lightmap data asset.
    6. [00:00:00] Enlighten: Finished 1 Layout Systems job (0.00s execute, 0.00s integrate, 0.05s wallclock)
    7. [00:00:00] Enlighten: Finished 1 Tetrahedralize Probes job (0.00s execute, 0.00s integrate, 0.06s wallclock)
    8. [00:00:00] Enlighten: Precompute took 0.106657 seconds.
    9. Enlighten scene contents:   0 geometries.   0 instances.   0 systems.   0 probe groups.   0 cube maps. Scene is up-to-date.
    10. Reloading assemblies for play mode.
    11. Begin MonoManager ReloadAssembly
    12. Initializing Extension Manager v2019.1.7 for Unity v2019.1.7f1
    13. Registering platform support modules:
    14. Registered platform support modules in: 0.0411195s.
    15. Native extension for WindowsStandalone target not found
    16. Native extension for Android target not found
    17. Refreshing native plugins compatible for Editor in 1.95 ms, found 0 plugins.
    18. Preloading 0 native plugins for Editor in 0.00 ms.
    19. Config data loaded
    20. UnityEngine.DebugLogHandler:Internal_Log(LogType, LogOption, String, Object)
    21. UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[])
    22. UnityEngine.Logger:Log(LogType, Object)
    23. UnityEngine.Debug:Log(Object)
    24. Crosstales.RTVoice.EditorTask.AAAConfigLoader:.cctor() (at Assets\Plugins\crosstales\RTVoice\Editor\Task\AAAConfigLoader.cs:21)
    25. System.Runtime.CompilerServices.RuntimeHelpers:RunClassConstructor(IntPtr)
    26. System.Runtime.CompilerServices.RuntimeHelpers:RunClassConstructor(RuntimeTypeHandle)
    27. UnityEditor.EditorAssemblies:ProcessInitializeOnLoadAttributes(Type[]) (at C:\buildslave\unity\build\Editor\Mono\EditorAssemblies.cs:106)
    28. (Filename: Assets/Plugins/crosstales/RTVoice/Editor/Task/AAAConfigLoader.cs Line: 21)
    29.  
    30. Updater enabled!
    31. UnityEngine.DebugLogHandler:Internal_Log(LogType, LogOption, String, Object)
    32. UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[])
    33. UnityEngine.Logger:Log(LogType, Object)
    34. UnityEngine.Debug:Log(Object)
    35. Crosstales.RTVoice.EditorTask.UpdateCheck:.cctor() (at Assets\Plugins\crosstales\RTVoice\Editor\Task\UpdateCheck.cs:32)
    36. System.Runtime.CompilerServices.RuntimeHelpers:RunClassConstructor(IntPtr)
    37. System.Runtime.CompilerServices.RuntimeHelpers:RunClassConstructor(RuntimeTypeHandle)
    38. UnityEditor.EditorAssemblies:ProcessInitializeOnLoadAttributes(Type[]) (at C:\buildslave\unity\build\Editor\Mono\EditorAssemblies.cs:106)
    39. (Filename: Assets/Plugins/crosstales/RTVoice/Editor/Task/UpdateCheck.cs Line: 32)
    40.  
    41. No update check needed.
    42. UnityEngine.DebugLogHandler:Internal_Log(LogType, LogOption, String, Object)
    43. UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[])
    44. UnityEngine.Logger:Log(LogType, Object)
    45. UnityEngine.Debug:Log(Object)
    46. Crosstales.RTVoice.EditorTask.UpdateCheck:.cctor() (at Assets\Plugins\crosstales\RTVoice\Editor\Task\UpdateCheck.cs:62)
    47. System.Runtime.CompilerServices.RuntimeHelpers:RunClassConstructor(IntPtr)
    48. System.Runtime.CompilerServices.RuntimeHelpers:RunClassConstructor(RuntimeTypeHandle)
    49. UnityEditor.EditorAssemblies:ProcessInitializeOnLoadAttributes(Type[]) (at C:\buildslave\unity\build\Editor\Mono\EditorAssemblies.cs:106)
    50. (Filename: Assets/Plugins/crosstales/RTVoice/Editor/Task/UpdateCheck.cs Line: 62)
    51.  
    52. onVoicesReady
    53. UnityEngine.DebugLogHandler:Internal_Log(LogType, LogOption, String, Object)
    54. UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[])
    55. UnityEngine.Logger:Log(LogType, Object)
    56. UnityEngine.Debug:Log(Object)
    57. Crosstales.RTVoice.Provider.BaseVoiceProvider:onVoicesReady() (at Assets\Plugins\crosstales\RTVoice\Scripts\Provider\BaseVoiceProvider.cs:567)
    58. Crosstales.RTVoice.Provider.VoiceProviderWindows:getVoicesInEditor() (at Assets\Plugins\crosstales\RTVoice\Scripts\Provider\VoiceProviderWindows.cs:1093)
    59. Crosstales.RTVoice.Provider.VoiceProviderWindows:.ctor(MonoBehaviour) (at Assets\Plugins\crosstales\RTVoice\Scripts\Provider\VoiceProviderWindows.cs:47)
    60. Crosstales.RTVoice.Speaker:initOSProvider() (at Assets\Plugins\crosstales\RTVoice\Scripts\Speaker.cs:2199)
    61. Crosstales.RTVoice.Speaker:initProvider() (at Assets\Plugins\crosstales\RTVoice\Scripts\Speaker.cs:2181)
    62. Crosstales.RTVoice.Speaker:OnEnable() (at Assets\Plugins\crosstales\RTVoice\Scripts\Speaker.cs:934)
    63. (Filename: Assets/Plugins/crosstales/RTVoice/Scripts/Provider/BaseVoiceProvider.cs Line: 567)
    64.  
    65. Using new instance!
    66. UnityEngine.DebugLogHandler:Internal_Log(LogType, LogOption, String, Object)
    67. UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[])
    68. UnityEngine.Logger:Log(LogType, Object)
    69. UnityEngine.Debug:LogWarning(Object)
    70. Crosstales.RTVoice.Speaker:OnEnable() (at Assets\Plugins\crosstales\RTVoice\Scripts\Speaker.cs:937)
    71. (Filename: Assets/Plugins/crosstales/RTVoice/Scripts/Speaker.cs Line: 937)
    72.  
    73. Mono: successfully reloaded assembly
    74. - Completed reload, in  1.588 seconds
    75. Platform modules already initialized, skipping
    76. Load scene 'Temp/__Backupscenes/0.backup' time: 3.464931 ms
    77. LightmapEditorSettings: switching bake backend from 1 to 0.
    78. Using new instance!
    79. UnityEngine.DebugLogHandler:Internal_Log(LogType, LogOption, String, Object)
    80. UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[])
    81. UnityEngine.Logger:Log(LogType, Object)
    82. UnityEngine.Debug:LogWarning(Object)
    83. Crosstales.RTVoice.Speaker:OnEnable() (at Assets\Plugins\crosstales\RTVoice\Scripts\Speaker.cs:937)
    84. (Filename: Assets/Plugins/crosstales/RTVoice/Scripts/Speaker.cs Line: 937)
    85.  
    86. onVoicesReady
    87. UnityEngine.DebugLogHandler:Internal_Log(LogType, LogOption, String, Object)
    88. UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[])
    89. UnityEngine.Logger:Log(LogType, Object)
    90. UnityEngine.Debug:Log(Object)
    91. Crosstales.RTVoice.Provider.BaseVoiceProvider:onVoicesReady() (at Assets\Plugins\crosstales\RTVoice\Scripts\Provider\BaseVoiceProvider.cs:567)
    92. Crosstales.RTVoice.Provider.<getVoices>d__42:MoveNext() (at Assets\Plugins\crosstales\RTVoice\Scripts\Provider\VoiceProviderWindows.cs:578)
    93. UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr) (at C:\buildslave\unity\build\Runtime\Export\Scripting\Coroutines.cs:17)
    94. (Filename: Assets/Plugins/crosstales/RTVoice/Scripts/Provider/BaseVoiceProvider.cs Line: 567)
    95.  
    96. onVoicesReady
    97. UnityEngine.DebugLogHandler:Internal_Log(LogType, LogOption, String, Object)
    98. UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[])
    99. UnityEngine.Logger:Log(LogType, Object)
    100. UnityEngine.Debug:Log(Object)
    101. Crosstales.RTVoice.Provider.BaseVoiceProvider:onVoicesReady() (at Assets\Plugins\crosstales\RTVoice\Scripts\Provider\BaseVoiceProvider.cs:567)
    102. Crosstales.RTVoice.Provider.<getVoices>d__42:MoveNext() (at Assets\Plugins\crosstales\RTVoice\Scripts\Provider\VoiceProviderWindows.cs:578)
    103. UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr) (at C:\buildslave\unity\build\Runtime\Export\Scripting\Coroutines.cs:17)
    104. (Filename: Assets/Plugins/crosstales/RTVoice/Scripts/Provider/BaseVoiceProvider.cs Line: 567)

    This is the log... I don't get any error. Just any voices are not recognized. Since I use the asset in Android I managed to write code without problem. (After build the Voice are running ok on the device. But If you want to send you some more info. It is not a problem (for example if someone else will have the same problem as I). But right now any action is not needed by my :)

    best regards,
    Wojciech Wawrzyniak
     
  2. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,418
    Hi Wojciech

    Thank you for the log! It seems there are no errors, which doesn't makes it easier ;)
    Is it possible that your project-path contains an apostrophe? If so, please make a copy of the project to a path without it, like "D:/myproject" and try again.


    Cheers
    Stefan
     
    Last edited: Jun 20, 2019
  3. Wojciech-Wawrzyniak

    Wojciech-Wawrzyniak

    Joined:
    May 21, 2015
    Posts:
    5
    :) no there are no spaces or apostrophes. I will try to test it on the another machine with windows but I'm not sure if I will have some spare time. But instead of this thank for quick replays and as i said no action is needed right now. In the next week I'm going on holidays and If i will be working on Mac (if I will be working on my project). Thank you

    Best regards
    Wojciech
     
  4. rgonsalv

    rgonsalv

    Joined:
    Sep 29, 2016
    Posts:
    40
    Hello, we're revisiting this since we are finally upgrading our version of Unity. I followed the instructions you mentioned previously. NAudio is still not visible, with the same error as above. The import settings look ok, though the NAudio folder has changed from prior versions Screenshot (5).png
     
  5. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,418
    Hi Wojciech

    Ok, but the issue still bothers me... :( If you need further assistance with RTV, don't hesitate to ask.
    Have a nice holiday!


    Cheers
    Stefan
     
  6. Stefan-Laubenberger

    Stefan-Laubenberger

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

    Please use the latest version of RT-Voice and try it again.


    Cheers
    Stefan
     
  7. rgonsalv

    rgonsalv

    Joined:
    Sep 29, 2016
    Posts:
    40
    We did, importing the latest version via the Asset Store panel in the Editor - 2019.3.1
     
  8. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,418
    Hmm, that's really strange! Line 188 in "AudioFileGenerator" of our version doesn't contain any references to NAudio... :mad:

    I would recommend deleting the whole "Assets/Plugins/crosstales"-folder and re-import RTV again. On the other hand, if you don't need the "AudioFileGenerator", just delete it.
     
  9. rgonsalv

    rgonsalv

    Joined:
    Sep 29, 2016
    Posts:
    40
    The line 188 reference was from a much earlier post and version, sorry I wasn't clear there. We ended up removing the AudioFileGenerator files since we don't need that capability.
     
  10. rgonsalv

    rgonsalv

    Joined:
    Sep 29, 2016
    Posts:
    40
    Any ideas why the RTVoiceTTSWrapper exe's wouldn't be added to the <app>_Data folder when the Windows players are built? This is true for both the Cloud build and local build and of course it won't play in that case. It works perfectly running in the Editor. Do we need to add a post-compilation script to move these resources?
     
  11. Stefan-Laubenberger

    Stefan-Laubenberger

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

    That's another strange thing :( there is a build post-processing script called "BuildPostprocessor.cs" which should exactly do that...
    Can you please comment line 28 and tell me if the log from line 29 is written to the console?


    So long,
    Stefan

    P.S: are you using an AV-software?
     
  12. rgonsalv

    rgonsalv

    Joined:
    Sep 29, 2016
    Posts:
    40
    Thanks, we hadn't included Editor folder contents. After we made some assembly definition files this worked.

    Also, on the topic of AV software, I had disabled McAfee since we were seeing a 200 error on Windows when trying to speak, and that error can sometimes be caused by anti-virus software. Turns out in this case though we hadn't set the language parameter when creating a Voice and this caused the error.
     
    Stefan-Laubenberger likes this.
  13. Cobra98

    Cobra98

    Joined:
    Nov 23, 2013
    Posts:
    8
    I bought this asset to use AWS Polly with Android and iOS. I see a warning from RT-Voice saying that AWS Polly doesn't support Android IL2CPP, but due to the Google play store requiring a 64-bit Android build we are forced to use IL2CPP because mono only supports 32-bit builds.

    So it's only possible to use AWS Polly with android mono 32-bit. I understand that this restriction is probably out of your hands, but I think this should be reflected in the products description because of the new 64-bit requirement by Google.

    My project is built around the high-quality speech produced by Amazon Polly, so it looks like my only option is to build my own RESTful API that caches the audio files from Amazon Polly, then connect to it from unity.
     
  14. fgardler

    fgardler

    Joined:
    Jun 11, 2016
    Posts:
    27
    I think I may have found a bug and a fix, though I'm not sure how many folks will hit it as I may have caused it to surface by going outside the common use case.

    What I did...

    I'm on Windows and using RT Voice Pro for prototyping. I'm at the stage of needing a larger variety of voices than Windows normally provides. So I imported all the English TTS voices in Windows which come with multiple different languages (en-GB, en-CA, en-IN etc.). After a little registry hacking (thanks for the link in the manual) I had the voices appearing in RT Voice Pro.

    I setup my preferred languages which meant adding a Language code to my RT Voice Actor components, which had been empty previously.

    When I ran my test scene both the characters were using the same voice - the first in the list of available voices. Clearly I had broken something.

    After a while I discovered that
    Localization.Language
    was an empty string. This resulted in
    RTVoiceActor.GetVoice()
    failing to match a voice to my NPC voice preferences.

    This method checks for an empty
    Localization.Language
    string when retrieving the list of voices but then skips over all the voices found with
    if (string.Equals(voicePreference.language, culture))
    . By adding
    string.IsNullOrEmpty(culture) || 
    in this if statement I was able to get things to work again.

    It seems to me that it was working before as my
    voicePreference.language
    was also an empty string.

    Is this a safe fix?

    Full text of the
    RTVoiceActor.GetVoice()
    method, with my edit:

    Code (CSharp):
    1.        
    2. public Voice GetVoice()
    3.         {
    4.             var culture = Localization.Language;
    5.             var availableVoices = string.IsNullOrEmpty(culture) ? Speaker.Voices : Speaker.VoicesForCulture(culture);
    6.             foreach (var voicePreference in voicePreferences)
    7.             {
    8.                 if (string.IsNullOrEmpty(culture) || string.Equals(voicePreference.language, culture))
    9.                 {
    10.                     foreach (var availableVoice in availableVoices)
    11.                     {
    12.                         if (MatchesVoicePreference(availableVoice, voicePreference))
    13.                         {
    14.                             return availableVoice;
    15.                         }
    16.                     }
    17.                 }
    18.             }
    19.             return (availableVoices != null && availableVoices.Count > 0) ? availableVoices[0] : null;
    20.         }
    21.  
     
    Last edited: Jul 2, 2019
    Stefan-Laubenberger likes this.
  15. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,418
    Hi Cobra98

    Thank you for your report!

    We did some investigations and were able to fix AWS Polly for IL2CPP under Android.
    If you like to have access to the fixed version, please send me your invoice via email.


    So long
    Stefan
     
  16. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,418
    Hi fgardler

    Thank you for your input!

    Is RTVoiceActor a class from Dialogue System?
    If you are using standalone (Windows) only, imho a better way to determine the language is this:
    Code (CSharp):
    1. string culture = System.Threading.Thread.CurrentThread.CurrentCulture.Name;

    Cheers
    Stefan
     
    Last edited: Jul 3, 2019
  17. fgardler

    fgardler

    Joined:
    Jun 11, 2016
    Posts:
    27
    Well doh!

    Yes RTVoiceActor is in Dialogue System. I mis-posted here. I have moved it to the Dialogue System forum and passed on your recommendation.
     
    Last edited: Jul 3, 2019
  18. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,418
    Sorry, I think I confused you.
    This is the forum for RT-Voice, but "RTVoiceActor" is part of the integration from "Dialogue System".

    @TonyLi hey Tony, can you please confirm?
     
  19. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,386
    Hi @Stefan-Laubenberger - I'll work with fgardler on this. Localization.Language is the Dialogue System's current language selection. (The Dialogue System allows the player to choose a language different from the current system language, although there's a checkbox to automatically choose the current system language, too.) We'll get it straightened out in the Dialogue System thread.
     
    Stefan-Laubenberger likes this.
  20. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,418
    Great, thank you!
     
  21. Cobra98

    Cobra98

    Joined:
    Nov 23, 2013
    Posts:
    8
    Thanks for looking into it and fixing it so quickly, I sent you an email with my invoice.
     
  22. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,418
    No problem, I'm happy you pointed it out.
    I've sent you an email with the fix.
     
  23. rgonsalv

    rgonsalv

    Joined:
    Sep 29, 2016
    Posts:
    40
    This is a problem on the Macintosh. I have not had a chance to test on other platforms yet.
    Code (CSharp):
    1. Could not speak the text: Wrapper {Uid='7926cfac-2fda-457a-b608-73eacd07a640', Text='-+*/=$<>()";:_&^%@#',.?!~', Source='False', Voice='Agnes (en-US, UNKNOWN)', SpeakImmediately='True', Rate='1', Pitch='1', Volume='1', OutputFile='', ForceSSML='False', Created='7/8/2019 8:52:18 AM'}
    2. Exit code: 1
    3. say: invalid option -- +
    4. Usage: say [-v voice] [-o out] [-f in | message]
     
  24. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,418
    Hmm, that's strange... Which macOS-version are you using?

    Can you please open the "Terminal"-app and enter this:

    say -v "Agnes" -o "test.aiff" --file-format=AIFFLE "-+*/=$<>()';:_&^%@#',.?!~"

    What happens? If it fails, please try it with another (real) text.
     
  25. savely00

    savely00

    Joined:
    Feb 27, 2014
    Posts:
    34
    Stefan, does RT-Voice Pro work on WebGL out-of-the-box or I will need to do some additional settings, like installing voices on server or similar? I needed for a demo and want to make sure it works with WebGL build hosted on IIS.
     
  26. Stefan-Laubenberger

    Stefan-Laubenberger

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

    If you own WebGL Speech Synthesis it will work out-of-the-box. Otherwise, you will need your own MaryTTS-server or request an development account for our test-server (just send me the desired username and the invoice per email).

    I hope this answers your question.


    Cheers
    Stefan
     
  27. savely00

    savely00

    Joined:
    Feb 27, 2014
    Posts:
    34
    Thank you.
     
    Stefan-Laubenberger likes this.
  28. Dylan83

    Dylan83

    Joined:
    Sep 18, 2013
    Posts:
    3
    Hi Stefan,

    1st timer to the forum. I downloaded RT-Voice Pro today and read through the documentation here "https://pixelcrushers.com/dialogue_system/manual/html/rtvoice.html"

    I wasnt able to locate the RT Voice Actor component (Component > Dialogue System > Third Party Support/RT-Voice/RT Voice Actor).
    upload_2019-7-11_16-21-7.png

    Have I imported this incorrectly?
    Is there a problem with the prefab I am using?

    upload_2019-7-11_16-19-54.png

    Hoping you can assist me! Thank you!

    Luke
     
  29. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,418
    Hi Dylan

    Have you imported the "RT-Voice"-package from "Dialogue System"? This is needed to combine RTV and DS.

    @TonyLi could that be the problem?


    So long,
    Cheers
     
    TonyLi likes this.
  30. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,386
    Stefan-Laubenberger likes this.
  31. Dylan83

    Dylan83

    Joined:
    Sep 18, 2013
    Posts:
    3
    Thank you Stefan. I messaged Tony. His response worked. Thank you both


    Hi Luke,

    Please try importing Plugins / Pixel Crushers / Dialogue System / Third Party Support / RTVoice Support.unitypackage again. It looks like it didn't get imported into your project. This package contains the RTVoiceActor script.

    If you prefer, you can download an updated version of the unitypackage from the Dialogue System Extras page. (direct download link)

    The updated package just addresses an obscure issue regarding default values, but it doesn't hurt to use the latest anyway.
     
    Stefan-Laubenberger likes this.
  32. rgonsalv

    rgonsalv

    Joined:
    Sep 29, 2016
    Posts:
    40
    Using the above text:
    -bash: !~": event not found

    If I remove the ~ tilde, it fails on the ! (looks like it's reaching into bash history or something)

    If I remove !~, I get the error mentioned above:
    say: invalid option -- +

    Using the text "hello Stefan", the file is saved to disk.

    macOS 10.14.5
     
  33. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,418
    The native voice provider for macOS is the "say"-command.
    It seems to get confused with special characters (and the apostrophes)... Unfortunately, we can't really do anything to solve it.

    Therefore, I would suggest to use another provider for cases like this, e.g. MaryTTS.
     
  34. Arakjin

    Arakjin

    Joined:
    Nov 12, 2017
    Posts:
    10
    Hi
    I recently bought RT-Voice for my aac project (Augmented and assistive communications)
    I'm using third party program as voice provider which "translates" the words in to correct spelling.
    I'm noticing a huge lag between "push to talk" and actual speech starting every time (other similar programs only do this the first time when opening that program)

    are every Speaker.Speak methods their own instance, so it closes synth when speech is done and restarts it when called again?
     
  35. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,418
    Hi Arakjin

    "Speaker" is only the entry-point for you as a user. RTV uses different providers depending on the current platform.

    Converting text-to-speech needs some time, so a small lag is only inevitable if you generate all audio files at start-up of the app.
    What also helps is using "Speaker.SpeakNative" since it generates no audio file.
    If you're on Windows, please try the provider "Unity SAPI" which is located under "3rd party"-folder inside the asset.


    Cheers
    Stefan
     
  36. Seankerr

    Seankerr

    Joined:
    Feb 14, 2018
    Posts:
    4
    Hi there.
    Just wondering if anyone has had a issue with RTVOICE using dual screen. I have created a Unity project that works fine in single screen mode in test/play mode and built, but when I add a dual screen( second camera selected to Display2) the real-time text reading voice does not work when built(works in test/play mode). I am using RTVOICE version 1 (`Version: 26.07.2019`) and Unity 2019.2.0.
     
  37. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,418
    Have you removed the AudioListener on the second camera?
    What happens if you use "SpeakNative" instead of the normal "Speak"-method?
     
  38. Seankerr

    Seankerr

    Joined:
    Feb 14, 2018
    Posts:
    4
    Thanks for getting back to me. I have tested it using SpeakNative but that does not work in build mode either (works in test/play mode). Also there is just one AudioListener in the Scene, so not conflicts there.

    Also I should of mentioned I am using Windows 10 as well as the Salsa asset.
    Thanks
     
  39. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,418
    Hmm, I tried it with the "01-Speech" scene and two displays in Unity 2019.2.0; it works on our side o_O

    Can you please try it with an empty project and only our asset?
    If it still doesn't work, please send us the log from the built app.


    So long,
    Stefan
     
  40. danbg

    danbg

    Joined:
    May 1, 2017
    Posts:
    36
    Hi, I wonder if there is any way to change the pitch and rate of the TTS voice dynamically while speaking. I would like to create a robotic voice like GLaDOS. As an alternative I thought about running multiple speaks simultanously with different pitch values. Would any of those things be possible with RT-Voice? Do you have any other suggestions to create a more expressive "robotic" voice? Thank you.
     
  41. Stefan-Laubenberger

    Stefan-Laubenberger

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

    Sure, this is something that could be done easily. If you use the "Speak"-method of RT-Voice, you can add your own AudioSource and Unity provides various audio filters, like distortion, echo, high- and low-pass. Therefore, you could use those filters to achieve the desired effect.

    Furthermore, there are various voices and TTS-systems that sound "robotic" by default, like eSpeak or Klattersynth.

    I hope this helps you further.

    Cheers
    Stefan
     
    Last edited: Sep 23, 2019
  42. crossmedia411

    crossmedia411

    Joined:
    Sep 23, 2014
    Posts:
    4
    I just installed RTVoice on my MAC and received this error. I am using Unity 2019.2.5, RTVoice current ver. 2019.5.0

    Assets/Plugins/crosstales/RTVoice/Scripts/Provider/VoiceProviderMacOS.cs(9,18): error CS0534: 'VoiceProviderMacOS' does not implement inherited abstract member 'BaseVoiceProvider.hasVoicesInEditor.get'

    Not entirely sure what is going on. Any help would be great.

    Thanks!
     
  43. Stefan-Laubenberger

    Stefan-Laubenberger

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

    The latest version has a bug and we already submitted aversion 2019.5.1 to the store, which fixes the issue.
    The new version should be available soon, but you can send us an email with the invoice if you like to have access straight away.


    Cheers
    Stefan
     
  44. crossmedia411

    crossmedia411

    Joined:
    Sep 23, 2014
    Posts:
    4

    Thanks Stefan

    I just updated to 2019.5.1 today, unfortunately, I am getting another error:

    Assets/Plugins/crosstales/RTVoice/Scripts/Speaker.cs(2225,46): error CS0234: The type or namespace name 'VoiceProviderMacOS' does not exist in the namespace 'Crosstales.RTVoice.Provider' (are you missing an assembly reference?)

    CrossMedia411
     
  45. Stefan-Laubenberger

    Stefan-Laubenberger

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

    Sorry, I made a mistake in the update :(
    Please open "VoiceProviderMacOS.cs" and change the first line to:

    #if UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX

    That should fix the problem, please let me know.


    So long,
    Stefan
     
  46. crossmedia411

    crossmedia411

    Joined:
    Sep 23, 2014
    Posts:
    4

    Works great!

    Thanks Stefan!!
     
    Stefan-Laubenberger likes this.
  47. SeaSand

    SeaSand

    Joined:
    Jan 30, 2016
    Posts:
    7
    Hi Stefan (and everyone who can help me),

    I’m interested in RT-Voice Pro but I’m not sure if it provides the workflow that I need - especially concerning Playmaker actions.
    So here are my questions:

    1) I’d like to generate AudioClips from text in the editor (no speech generation on the target platform) - just prototypes (the files will be replaced by voice actors later). Is there a Playmaker action that creates an AudioClip from a dialogue line in editor mode and plays that clip in play mode (I read about an action called AudioFileGenerator here in this thread…)? Can I choose a file name and the path of this new clip in the action?

    2) If yes: Maybe I want to change a dialogue line in the editor later using the Playmaker action in the respective state of the FSM. Is the file that has been created before (using the PM action) replaced by a new file when I change the text in the action?

    3) Is there a database of all the AudioClips created using RTV Pro in the editor - maybe with a search field?

    Thanks!
    SeaSand
     
  48. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,418
    Hi SeaSand

    I think for your use-case, it's probably easier to work "outside" of PM.
    Here is a typical workflow:
    1. Create an empty scene, add RT-Voice and AudioFileGenerator
    2. Create a text file inside your project and add all speeches (see below)
    3. Add the file to the AudioFileGenerator
    4. Hit "Play"
    upload_2019-10-6_14-13-7.png

    A file (e.g. Speeches from above) looks like this (CSV-format):
    Code (CSharp):
    1. #Text;Output file (without extension);Voice name;Rate;Pitch;Volume
    2. I am tower one;_Speeches/Tower01;David;0.8;1.8;0.9
    3. I am tower two;_Speeches/Tower02;Zira;1.25;0.5;0.8
    This example file will create two files (Windows):
    • "Tower01.wav" inside "Assets/_Speeches" spoken by "Microsoft David Desktop"
    • "Tower02.wav" inside "Assets/_Speeches" spoken by "Microsoft Zira Desktop"

    So, now the answers to your questions:
    1. There is indeed a PM-action for the AudioFileGenerator. But you can't set the path at runtime with this action, it needs the file with all speeches. You could uses SpeechText instead. For your purpose, I would recommend using the solution above.
    2. You could use also SpeechText for that and the file will be overridden.
    3. No, RT-Voice provides no database for the generated clips. That's in your hands ;) But if you use the text file with all speeches, there is the output file column, which makes it easy to keep track. You can also open the file in LibreOffice or Excel as CSV; there you will have all the search abilities you like.
    I hope this helps you further!
    If you have any additional questions, don't hesitate to ask.


    Cheers
    Stefan
     

    Attached Files:

  49. SeaSand

    SeaSand

    Joined:
    Jan 30, 2016
    Posts:
    7
    Hi Stefan

    Thank you for your fast and detailed reply!
    The solution with the AudioFileGenerator (the inspector component) sounds promising.

    Best regards
    SeaSand
     
    Stefan-Laubenberger likes this.
  50. LightningIsAwesome

    LightningIsAwesome

    Joined:
    Nov 14, 2016
    Posts:
    3
    Hello Stefan. I'm looking for plugin that will help me to implement text to speach in WebGL. I check your webgl demo but it says thay OS in not supported. Will it be hard to implement for example Google text-to-speach via your plugin?
     
unityunity