diff options
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/sapi_voice.vbs | 63 |
1 files changed, 26 insertions, 37 deletions
diff --git a/tools/sapi_voice.vbs b/tools/sapi_voice.vbs index 2038329b62..440444ca38 100755 --- a/tools/sapi_voice.vbs +++ b/tools/sapi_voice.vbs | |||
@@ -38,12 +38,11 @@ Dim sLanguage, sVoice, sSpeed | |||
38 | 38 | ||
39 | Dim oSpVoice, oSpFS ' SAPI5 voice and filestream | 39 | Dim oSpVoice, oSpFS ' SAPI5 voice and filestream |
40 | Dim oTTS, nMode ' SAPI4 TTS object, mode selector | 40 | Dim oTTS, nMode ' SAPI4 TTS object, mode selector |
41 | Dim oVoice ' for traversing the list of voices | ||
41 | Dim nLangID, sSelectString | 42 | Dim nLangID, sSelectString |
42 | 43 | ||
43 | Dim aLine, aData ' used in command reading | 44 | Dim aLine, aData ' used in command reading |
44 | 45 | ||
45 | Dim counter, ende, list | ||
46 | |||
47 | On Error Resume Next | 46 | On Error Resume Next |
48 | 47 | ||
49 | Set oShell = CreateObject("WScript.Shell") | 48 | Set oShell = CreateObject("WScript.Shell") |
@@ -57,41 +56,6 @@ sLanguage = oArgs.Item("language") | |||
57 | sVoice = oArgs.Item("voice") | 56 | sVoice = oArgs.Item("voice") |
58 | sSpeed = oArgs.Item("speed") | 57 | sSpeed = oArgs.Item("speed") |
59 | 58 | ||
60 | ' display a list of voices for the selected language | ||
61 | if bList Then | ||
62 | 'Create SAPI5 object | ||
63 | Set oSpVoice = CreateObject("SAPI.SpVoice") | ||
64 | If Err.Number <> 0 Then | ||
65 | WScript.StdErr.WriteLine "Error - could not get SpVoice object." _ | ||
66 | & " SAPI 5 not installed?" | ||
67 | WScript.Quit 1 | ||
68 | End If | ||
69 | |||
70 | list = "" | ||
71 | ' Select matching voice | ||
72 | For Each nLangID in LangIDs(sLanguage) | ||
73 | sSelectString = "Language=" & Hex(nLangID) | ||
74 | counter =0 | ||
75 | ende =0 | ||
76 | While ende <= 0 | ||
77 | Err.Clear | ||
78 | Set oSpVoice.Voice = oSpVoice.GetVoices(sSelectString).Item(counter) | ||
79 | |||
80 | If Err.Number = 0 Then | ||
81 | list = list & oSpVoice.Voice.GetDescription & "," | ||
82 | Else | ||
83 | ende = 1 | ||
84 | Err.Clear | ||
85 | End if | ||
86 | counter = counter + 1 | ||
87 | Wend | ||
88 | Next | ||
89 | |||
90 | WScript.StdErr.WriteLine list | ||
91 | |||
92 | WScript.Quit 0 | ||
93 | End If | ||
94 | |||
95 | 59 | ||
96 | If bSAPI4 Then | 60 | If bSAPI4 Then |
97 | ' Create SAPI4 ActiveVoice object | 61 | ' Create SAPI4 ActiveVoice object |
@@ -107,6 +71,19 @@ If bSAPI4 Then | |||
107 | End If | 71 | End If |
108 | oTTS.Initialized = 1 | 72 | oTTS.Initialized = 1 |
109 | 73 | ||
74 | If bList Then | ||
75 | ' Just list available voices for the selected language | ||
76 | For Each nLangID in LangIDs(sLanguage) | ||
77 | For nMode = 1 To oTTS.CountEngines | ||
78 | If oTTS.LanguageID(nMode) = nLangID Then | ||
79 | WScript.StdErr.Write oTTS.ModeName(nMode) & "," | ||
80 | End If | ||
81 | Next | ||
82 | Next | ||
83 | WScript.StdErr.WriteLine | ||
84 | WScript.Quit 0 | ||
85 | End If | ||
86 | |||
110 | ' Select matching voice | 87 | ' Select matching voice |
111 | For Each nLangID in LangIDs(sLanguage) | 88 | For Each nLangID in LangIDs(sLanguage) |
112 | sSelectString = "LanguageID=" & nLangID | 89 | sSelectString = "LanguageID=" & nLangID |
@@ -140,6 +117,18 @@ Else ' SAPI5 | |||
140 | & " SAPI 5 not installed?" | 117 | & " SAPI 5 not installed?" |
141 | WScript.Quit 1 | 118 | WScript.Quit 1 |
142 | End If | 119 | End If |
120 | |||
121 | If bList Then | ||
122 | ' Just list available voices for the selected language | ||
123 | For Each nLangID in LangIDs(sLanguage) | ||
124 | sSelectString = "Language=" & Hex(nLangID) | ||
125 | For Each oVoice in oSpVoice.GetVoices(sSelectString) | ||
126 | WScript.StdErr.Write oVoice.GetDescription & "," | ||
127 | Next | ||
128 | Next | ||
129 | WScript.StdErr.WriteLine | ||
130 | WScript.Quit 0 | ||
131 | End If | ||
143 | 132 | ||
144 | ' Select matching voice | 133 | ' Select matching voice |
145 | For Each nLangID in LangIDs(sLanguage) | 134 | For Each nLangID in LangIDs(sLanguage) |