Programming with latest MS TTS engines

Programming with latest MS TTS engines

  • Comments 8

We released 12 TTS voices in 12 languages with UCMA SDK (also called as Microsoft Office Communications Server 2007 R2 SDK) .  The Microsoft speech engines bundled with the API support twelve different languages, including English (North America, United Kingdom), French (France, Canada), German, American Spanish, Brazilian Portuguese, Italian, Japanese, Korean and Chinese (Simplified and Traditional).  These TTS voices are server version. By saying "server", it means these voice has been optimized to be used in server telephony scenerios with good performance.

This post will describe how to program with the TTS engines inside the SDK.

1. Download the the SDK and language pack

http://www.microsoft.com/downloads/details.aspx?FamilyID=30e14c5a-a42c-4d4e-9513-c4b0b8d21086&displaylang=en

http://www.microsoft.com/downloads/details.aspx?FamilyID=768efa33-6606-4b2b-809a-6c69274621d3&displaylang=en

 2. Read MSDN documentation about the Microsoft.Speech namespace

http://msdn.microsoft.com/en-us/library/microsoft.speech.synthesis(office.13).aspx

 3. Use C# to program a basic TTS application with these 12 TTS voices.

Add referrence to Microsoft.Speech, then you can program TTS just like I introduced in previous post.

Leave a Comment
  • Please add 8 and 6 and type the answer here:
  • Post
  • Hoping you can help me... I installed the .msi (for es-MX), but when I go to Tools-Options-Speech Application SDK-Languages and Speech Engines, all I see is the English one.  When iterating through Synsthesizer.InstalledVoices, it finds the Spanish one.  But when I try to run, the system throws this error:

    The Synthesizer does not support a requested voice: There is no TTS engine with the requested voice name 'Microsoft Hilda Telecom'

  • what is the "tools->options->speech application sdk"?

    This isn't related to the MSI. What application do you use?

  • Hello,

    I have installed the SDK and a language pack (the french one) on a X64 Windows 7.

    But when I Listvoice(); i only get Microsoft Anna - English (United States).

    Do i miss something ?

    Thanks a lot for your help.

    Regards

  • Hi,

    if you only see Anna, there is something wrong in the code.

    The voices that are liste in this post are server voice, not desktop

    so, you can add the referrence to Microsoft.Speech.dll instead of System.Speech.dll to list the voice

    regards

  • Hello,

    Thanks for you quick reply.

    I try with both Microsoft and System.

    Here is my code :

    private static void ListVoice()

         {

             SpObjectTokenCategory tokenCat = new SpObjectTokenCategory();

             tokenCat.SetId(SpeechStringConstants.SpeechCategoryVoices, false);

             ISpeechObjectTokens tokens = tokenCat.EnumerateTokens(null, null);

             foreach (SpObjectToken item in tokens)

             {

                 Utils.LogInfo(item.GetDescription(0));

             }

         }

    What do you mean by server and not desktop ?

    In addition when i go to control panel-> speech recognition -> TTS i got only anna US. Is it normal ?

    One more time thanks a lot for your help.

    Regards

  • Hi,

    By server I mean that you need to add referrence to microsoft.speech.dll instead of system.speech.dll

    the former is used for server TTS while the latter is for desktop one

    Regards

    Myblog

  • I am having 2 problems: Trying to add the reference to microsoft.speech, I do not find it in the add references window (system.speech is there,however).

    Second, like the previous post, I am only seeing one voice.

    My test code looks like this:

    Imports SpeechLib

    Imports System.Speech.Synthesis

    Module TxtToSpeechTest

       Dim voice As System.Speech.Synthesis.SpeechSynthesizer

       Dim InstalledVoices As System.Collections.ObjectModel.ReadOnlyCollection(Of System.Speech.Synthesis.InstalledVoice)

       Public Sub Init()

           voice = New System.Speech.Synthesis.SpeechSynthesizer()

           InstalledVoices = voice.GetInstalledVoices()

           Dim count As Integer = InstalledVoices.Count

           Dim f As Integer = 0 ' this line is only used as a breakpoint

       End Sub

       Public Sub Say(ByVal Words As String)

           voice.Speak(Words)

       End Sub

       Public Sub SetVoice(ByVal Name As String)

           voice.SelectVoice(Name)

       End Sub

    End Module

  • Hi,

    It is because you still use desktop SAPI dlls

Page 1 of 1 (8 items)