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.
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?
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.
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
Thanks for you quick reply.
I try with both Microsoft and System.
Here is my code :
private static void ListVoice()
SpObjectTokenCategory tokenCat = new SpObjectTokenCategory();
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.
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
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:
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
Public Sub Say(ByVal Words As String)
Public Sub SetVoice(ByVal Name As String)
It is because you still use desktop SAPI dlls