diff options
-rw-r--r-- | tools/sapi_voice.vbs | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/tools/sapi_voice.vbs b/tools/sapi_voice.vbs index 3f6b657066..a7d773e40e 100644 --- a/tools/sapi_voice.vbs +++ b/tools/sapi_voice.vbs @@ -34,7 +34,7 @@ Const SPSF_48kHz16BitMono = 38 Dim oShell, oArgs, oEnv
Dim bVerbose, bSAPI4, bList
-Dim sLanguage, sVoice, sSpeed
+Dim sLanguage, sVoice, sSpeed, sVendor
Dim oSpVoice, oSpFS ' SAPI5 voice and filestream
Dim oTTS, nMode ' SAPI4 TTS object, mode selector
@@ -109,6 +109,10 @@ If bSAPI4 Then ' Speed selection
If sSpeed <> "" Then oTTS.Speed = sSpeed
+
+ ' Get vendor infomration
+ sVendor = oTTS.MfgName(nMode)
+
Else ' SAPI5
' Create SAPI5 object
Set oSpVoice = CreateObject("SAPI.SpVoice")
@@ -154,9 +158,16 @@ Else ' SAPI5 ' Speed selection
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
Set oSpFS = CreateObject("SAPI.SpFileStream")
- oSpFS.Format.Type = AudioFormat(oSpVoice.Voice.GetAttribute("Vendor"))
+ oSpFS.Format.Type = AudioFormat(sVendor)
End If
Do
@@ -169,11 +180,7 @@ Do Case "QUERY"
Select Case aLine(1)
Case "VENDOR"
- If bSAPI4 Then
- WScript.StdOut.WriteLine oTTS.MfgName(nMode)
- Else
- WScript.StdOut.WriteLine oSpVoice.Voice.GetAttribute("Vendor")
- End If
+ WScript.StdOut.WriteLine sVendor
End Select
Case "SPEAK"
aData = Split(aLine(1), vbTab, 2)
|