1
0
Fork 0
forked from len0rd/rockbox

Handle SAPI5 voices without vendor attribute (reported for japanese L&H engines - see FS#9148).

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18196 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Jens Arnold 2008-08-04 21:01:44 +00:00
parent ac40296723
commit 0319e3be3f

View file

@ -34,7 +34,7 @@ Const SPSF_48kHz16BitMono = 38
Dim oShell, oArgs, oEnv Dim oShell, oArgs, oEnv
Dim bVerbose, bSAPI4, bList Dim bVerbose, bSAPI4, bList
Dim sLanguage, sVoice, sSpeed Dim sLanguage, sVoice, sSpeed, sVendor
Dim oSpVoice, oSpFS ' SAPI5 voice and filestream Dim oSpVoice, oSpFS ' SAPI5 voice and filestream
Dim oTTS, nMode ' SAPI4 TTS object, mode selector Dim oTTS, nMode ' SAPI4 TTS object, mode selector
@ -109,6 +109,10 @@ If bSAPI4 Then
' Speed selection ' Speed selection
If sSpeed <> "" Then oTTS.Speed = sSpeed If sSpeed <> "" Then oTTS.Speed = sSpeed
' Get vendor infomration
sVendor = oTTS.MfgName(nMode)
Else ' SAPI5 Else ' SAPI5
' Create SAPI5 object ' Create SAPI5 object
Set oSpVoice = CreateObject("SAPI.SpVoice") Set oSpVoice = CreateObject("SAPI.SpVoice")
@ -154,9 +158,16 @@ Else ' SAPI5
' Speed selection ' Speed selection
If sSpeed <> "" Then oSpVoice.Rate = sSpeed If sSpeed <> "" Then oSpVoice.Rate = sSpeed
' Get vendor information, protect from missing attribute
sVendor = oSpVoice.Voice.GetAttribute("Vendor")
If Err.Number <> 0 Then
Err.Clear
sVendor = "(unknown)"
End If
' Filestream object for output ' Filestream object for output
Set oSpFS = CreateObject("SAPI.SpFileStream") Set oSpFS = CreateObject("SAPI.SpFileStream")
oSpFS.Format.Type = AudioFormat(oSpVoice.Voice.GetAttribute("Vendor")) oSpFS.Format.Type = AudioFormat(sVendor)
End If End If
Do Do
@ -169,11 +180,7 @@ Do
Case "QUERY" Case "QUERY"
Select Case aLine(1) Select Case aLine(1)
Case "VENDOR" Case "VENDOR"
If bSAPI4 Then WScript.StdOut.WriteLine sVendor
WScript.StdOut.WriteLine oTTS.MfgName(nMode)
Else
WScript.StdOut.WriteLine oSpVoice.Voice.GetAttribute("Vendor")
End If
End Select End Select
Case "SPEAK" Case "SPEAK"
aData = Split(aLine(1), vbTab, 2) aData = Split(aLine(1), vbTab, 2)