Programming with latest MS TTS engines

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

 2. Read MSDN documentation about the Microsoft.Speech namespace

 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.

Comments (8)

  1. Jennifer Morgan says:

    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’

  2. myblog1 says:

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

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

  3. Jeff says:


    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.


  4. myblog1 says:


    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


  5. Jeff says:


    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)





    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.


  6. myblog1 says:


    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



  7. SysEngr62 says:

    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)


       End Sub

       Public Sub SetVoice(ByVal Name As String)


       End Sub

    End Module

  8. myblog1 says:


    It is because you still use desktop SAPI dlls

Skip to main content