Windows 7 Forums
Welcome to Windows 7 Forums. Our forum is dedicated to helping you find support and solutions for any problems regarding your Windows 7 PC be it Dell, HP, Acer, Asus or a custom build. We also provide an extensive Windows 7 tutorial section that covers a wide range of tips and tricks.



Windows 7: TTS Software Not Working

23 Jun 2009   #1

Windows 7 Build 7100 (x64)
 
 
TTS Software Not Working

Hi everyone,

I've been trying to get a better TTS engine than the horrific built-in voice to work system-wide (in apps that use the Windows SAPI engine such as Ventrilo or even in the Control Panel) but I've only been able to access my 3rd-party voices from within programs that are designed to find and use the engines. Windows won't show them in the speech control panel, and simpler apps such as Ventrilo don't detect them.

Does Windows 7 use a new version of the SAPI that these voices aren't compatible with? Or am I missing something?

PS - Running 64-bit Windows 7 Build 7100, perhaps I need 64-bit voices? (I doubt it...)

My System SpecsSystem Spec
.

14 Oct 2009   #2

Windows 7 Ultimate
 
 
Changing Default TTS Voice In Windows 7

We have tested Voices from a number of vendors and all work properly as far as being listed in the TTS speech section of the Control Panel and selectable as a system default with Windows XT and Windows Server 2008. There is a problem with Vista, but there is a work around that solves it.

Windows 7 64 bit and Windows Server 2008 R2 require complex entries in the Speech Token section of the HKEY_LOCAL_MACHINE registry for all Voices that can be set as the default system Voice. We have not found a single Voice installer that makes the correct entries in this registry nor have we located anyone who knows the details of what is required. There is an extensive description of the registry entries in an MSDN paper for SAPI 5.4, but it doesn't cover all of the entries that are used by Microsoft Anna.

A second issue is that many of the TTS speech vendors require that one purchase their application program in addition to one or more compatible Voices. SAPI 5+ compatible Voices typically work properly "stand alone". You can purchase the Voices separately, but they usually cannot be installed unless the vendor's application program is resident on the computer. There is an obvious business reason for this limitation, but it greatly increases the cost.

We use Micosoft's SAPI 5.1 SDK to test the Voices and to link them with our application programs. It might require a MSDN membership to obtain this software, but I think that the SDK is available from Microsoft without charge. There is an interesting sample program called TTSAppVB that can be used to locate all the Voices that are installed on one's computer. You can select a Voice of interest, change a number of parameters, and read textbox data. The program cannot set the system Voice default.

My favorite voice is Loquendo's "Kate". The speech quality is excellent. It will definitely work stand alone with SAPI 5+, but purchasing Kate without having to buy an expensive (and unneeded for creating a default Voice) application program is difficult. The older AT&T and L&H Voices are free. They will install and run stand alone, but the speech quality isn't very good.
My System SpecsSystem Spec
23 Oct 2009   #3

Windows 7 Ultimate x64
 
 

Quote   Quote: Originally Posted by dstruct2k View Post
Hi everyone,

I've been trying to get a better TTS engine than the horrific built-in voice to work system-wide (in apps that use the Windows SAPI engine such as Ventrilo or even in the Control Panel) but I've only been able to access my 3rd-party voices from within programs that are designed to find and use the engines. Windows won't show them in the speech control panel, and simpler apps such as Ventrilo don't detect them.

Does Windows 7 use a new version of the SAPI that these voices aren't compatible with? Or am I missing something?

PS - Running 64-bit Windows 7 Build 7100, perhaps I need 64-bit voices? (I doubt it...)
Same problem here, I posted this to the SAPI DL at Microsoft and the reply I got from a Microsoft Principal Development Manager on the Speech team is that you do indeed need 64bit voices to be able to configure them for a x64bit OS as a system voice.
I've yet to see a x64 voice, was going to post to Wizard to see if they'll be making them, I miss my ATT Natural Audrey Voice... Anna and I are so in need of a divorce!
My System SpecsSystem Spec
.


23 Oct 2009   #4

Windows 7 Ultimate x64
 
 

UPDATE: You can select the 32bit voices for system use, you need to use the 32 bit version of the control panel applet. Try this in the search box.

%windir%\syswow64\speech\speechux\sapi.cpl

You should see your 32bit voices provided they are SAPI5. This works with ATT Natural voices. This would solve your 32bit apps issues, however I'm betting 64bit apps will still use Anna.




My System SpecsSystem Spec
24 Oct 2009   #5

Windows 7 Ultimate
 
 

Hi Michael,

You are terrific. You have solved the problem.
Executing Windows\sysWOW64\speech\SpeechUX\SAPI.cpl brings up a Window that displays all of the 32 bit Voices and the current single 64 bit Voice "Anna". Unlike the 64 bit speech window, you can make any of the Voices the system default Voice. I checked this with Acapela's "Heather" and it works properly.
There obviously must be a way to do this programatically via SAPI5. I can set the default for a given application program, but still don't see the correct command to set the system default.
Setting the system default is, incidentally, only essential if you want to change the Voice for a program like MapPoint which uses only the default Voice.
The problem of obtaining Voices is a frustrating one. Microsoft has Voices other than Anna in their telecommunications package and these should be available in 64 bit. The only other known current source is Loquendo. Their 64 bit "Kate" voice is probably the best available, but it is very expensive and is unavailable for small quantity licensing. There is a fascinating Loquendo Power Point presentation that describes their sophisticated methodology for producing very high quality, naturally sounding TTS. You can find this on the Internet by doing a Google search for: "Loquendo Kate TTS Power Point Presentation". It was given at a SpeechTek meeting.
Acapela Group have the next best quality Voices (in my opinion). They are current available in 64 bit for the Snow Leopard OS, but not for Windows.
Finally, all of the known vendors of high quality Voices require that one purchase a base program in addition to one or more Voices. You cannot install the Voices without the base program being resident. One installed, they can be accessed via any SAPI5 compliant program. Small quantity licensing is on a per machine basis.
My System SpecsSystem Spec
26 Oct 2009   #6

Windows 7 Ultimate x64
 
 

Wow, Kate is truely a very nice voice it's a shame that isn't available to the masses. At least now with Windows 7 hitting the masses in x64 hopefull it won't be too long till we have some good quality voices in x64. The solution came from Mike Plume at the Microsoft Speech blog: http://blogs.msdn.com/speech/ Q&A can be sent to SAPI5@microsoft.com.
My System SpecsSystem Spec
16 Nov 2009   #7

Windows 7 Ultimate
 
 

This is a follow-up.

There are multiple problems with setting a default TTS Voice in
Windows Server 2008 R2 and Windows 7 64 bit edition.

The Control Panel TTS Voice option lists only properly registered
64 bit Voices. Microsoft's Anna is the only 64 bit Voice that is
supplied with the operating systems. Loquendo's Kate, which is
probably the highest quality TTS Voice that is currently available,
has both 32 and 64 bit versions. Kate is difficult to obtain in small
quantities and is very expensive. The next best alternative is
believed to be the Acapela-Group Voice Heather. It is only
currently available in a 32 bit version for the Windows operating
systems. (64 bit Heather is available for Apple's Snow Leopard).

There is a fix that permits the display of all installed Voices and
the selection of any as the system default Voice. This is to
execute:

C:\Windows\SysWOW64\Speech\SpeechUX\sapi.cpl

rather than using the Control Panel TTS Voice selection.
This fix works properly except for one unfortunate problem.

The Visual C/C++ statement

hr = m_cpVoice.CoCreateInstance( CLSID_SpVoice );

correctly sets up a Voice object regardless of the default
system Voice.

The Visual Basic statement

Voice = New SpeechLib.SpVoice

results in a system hang or program abort if the default Voice has
been set to anything other than a properly registered 64 bit Voice
like Anna. "Try Catch" doesn't catch this error. Note that
Set Voice = CreateObject("SAPI.SpVoice") also fails with the same
error.

There is no easy solution to this problem. It may, however, be less
of concern as more 64 bit TTS Voices become available.

First, Microsoft should certainly change the Control Box TTS selection
to use the same code as "C:\Windows\SysWOW64\Speech\SpeechUX\sapi.cpl".

Second, Microsoft should correct the problem with the way in which
The Visual Basic statement "Voice = New SpeechLib.SpVoice" functions.
There is no reason for this not to have the same capability as its
Visual C/C++ counterpart.

Third, application programs that use TTS could be written completely
in Visual C/C++, the creation of the Voice object could be in an
Visual C ActiveX control or a wrapper could be used to access
CoCreateInstance.

Fourth, it may be possible to modify the Voice registry entries so
that 32 bit Voices work with the Control Panel TTS listing. It is
easy to modify the registry so that the Voices are displayed. There
is, however, a consistent error message regarding a failure of audio
output. The TTS registry entries are generally well documented.
Unfortunately, there are multiple entries for which there is no publicly
available documentation. This plus a lack of technical assistance from
either the third party vendors of TTS Voices or Microsoft makes it
impossible to resolve the registry entry problem at this time.
The registry issues are not a concern when you use
"C:\Windows\SysWOW64\Speech\SpeechUX\sapi.cpl".

Fifth, One important reason for being able to change the system
default TTS Voice is to provide an alternate Voice choice for programs
like MapPoint which automatically select the system default Voice.
There is no other user option for changing MapPoint's Voice.
There is a MapPoint registry key at
HKEY_CURRENT_USER\Software\Microsoft\MapPoint\17.0\USA\PreferredTTSEngine
that looks as if the TTS Voice can be selected. Unfortunately, there
is no documentation for this entry and changing the Voice name doesn't
override the system default Voice.

Sixth, the registry entries could be programmatically changed so
that the default Voice meets the requirements of
"Voice = New SpeechLib.SpVoice" only for this one statement. The
original entries are then replaced prior to further usage of the
Voice object.
It is far from perfect, but we have chosen this approach as the
best current compromise for our programming environment. One
unfortunate limitation is that Windows 7 64 bit and Windows Server
2008 R2 use different TTS registry directory paths and Values for
DefaultTokenId.
Incidentally, an invaluable tool for working with the registry is
Registry Workshop for X64. It can do copy/paste in addition to
multiple other helpful registry operations.

The following code snippet demonstrates the methodology.


'Created inside Form_Load and released inside Form_Unload.

Dim WithEvents Voice As SpeechLib.SpVoice
Dim modifyRegistryFlag As Boolean = False

'Code snippet from Form_Load

Dim keyName, userRoot, subkeys, defaultString, oldString As String
Dim OSName, OSPlatform, OSVersion As String
OSName = Trim(My.Computer.Info.OSFullName.ToString)
OSPlatform = Trim(My.Computer.Info.OSPlatform.ToString)
OSVersion = Trim(My.Computer.Info.OSVersion.ToString)
If InStr(1, OSVersion, "6.1") >= 1 Then
modifyRegistryFlag = True
If InStr(1, OSName, "Microsoft Windows 7") >= 1 Then
'Registry directory path for Windows 7 64 bit
userRoot = "HKEY_CURRENT_USER"
subkeys = "Software\Microsoft\Speech\Voices"
'Default DefaultTokenId string for Windows 7 64 bit
defaultString = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\MS-Anna-1033-20-DSK"
Else
If InStr(1, OSName, "Microsoft Windows Server 2008 R2") >= 1 Then
'Registry directory path for Server 2008 R2
userRoot = "HKEY_USERS"
subkeys = ".DEFAULT\Software\Microsoft\Speech\Voices"
'Default DefaultTokenId string for Server 2008 R2
defaultString = "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Speech\Voices\Tokens\MS-Anna-1033-20-DSK"
End If
End If
End If

keyName = userRoot & "\" & subkeys

If modifyRegistryFlag = True Then
'Retrieve name of default Voice
oldString = ""
Try
oldString = Registry.GetValue(keyName, "DefaultTokenId", "-1")
Catch ex As Exception
MessageBox.Show(ex.Message.ToString, "TTS Error:Get Current Default Voice", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1)
Exit Sub
End Try

If oldString = "-1" Then
MessageBox.Show("No DefaultTokenId", "TTS Error:Get Current Default Voice", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1)
Exit Sub
End If

'Set default name to Anna if she is not the default
If oldString <> defaultString Then
'MessageBox.Show(oldString & vbCrLf & defaultString)
Try
Registry.SetValue(keyName, "DefaultTokenId", defaultString, RegistryValueKind.String)
Catch ex As Exception
MessageBox.Show(ex.Message, "TTS Error:Set Default Voice", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1)
Exit Sub
End Try
End If
End If

'Creates the voice object
Try
Voice = New SpeechLib.SpVoice
Catch err As Exception
MessageBox.Show("Error Creating SpeechLib Voice" & vbNewLine & err.Message, "TTS Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1)
Exit Sub
End Try

If modifyRegistryFlag = True Then
'Restore original default Voice
If oldString <> defaultString Then
Try
Registry.SetValue(keyName, "DefaultTokenId", oldString, RegistryValueKind.String)
Catch ex As Exception
MessageBox.Show(ex.Message, "TTS Error:Restore Default Voice", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1)
Exit Sub
End Try
End If
End If
My System SpecsSystem Spec
28 Mar 2010   #8

Windows 7 Ultimate
 
 
TTS Software Not Working

This is an update on available TTS Voices.

IVONA has a number of high quality Voices that are available for download at a reasonable cost. We have tested Amy. This is an excellent Voice that works properly with Windows 7 64 bit and Windows Server 2008 R2.
See: IVONA Text To Speech | TTS Voice | Text to Voice

Another new alternative is Loquendo's Allison Voice which speaks with expression and emotion.
See: Loquendo TTS Demo
My System SpecsSystem Spec
Reply

 TTS Software Not Working





Thread Tools




Our Sites

Site Links

About Us

Find Us

Windows 7 Forums is an independent web site and has not been authorized, sponsored, or otherwise approved by Microsoft Corporation. "Windows 7" and related materials are trademarks of Microsoft Corp.

Designer Media Ltd

All times are GMT -5. The time now is 06:46 AM.
Twitter Facebook Google+



Windows 7 Forums

Seven Forums Android App Seven Forums IOS App
  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33