summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rbutil/rbutilqt/base/ttsbase.cpp4
-rw-r--r--rbutil/rbutilqt/base/ttsmssp.h44
-rw-r--r--rbutil/rbutilqt/rbutilqt.pri1
-rw-r--r--tools/sapi_voice.vbs17
4 files changed, 61 insertions, 5 deletions
diff --git a/rbutil/rbutilqt/base/ttsbase.cpp b/rbutil/rbutilqt/base/ttsbase.cpp
index 5955f825b4..ae2a78f606 100644
--- a/rbutil/rbutilqt/base/ttsbase.cpp
+++ b/rbutil/rbutilqt/base/ttsbase.cpp
@@ -21,6 +21,7 @@
21#include "ttsfestival.h" 21#include "ttsfestival.h"
22#include "ttssapi.h" 22#include "ttssapi.h"
23#include "ttssapi4.h" 23#include "ttssapi4.h"
24#include "ttsmssp.h"
24#include "ttsexes.h" 25#include "ttsexes.h"
25#if defined(Q_OS_MACX) 26#if defined(Q_OS_MACX)
26#include "ttscarbon.h" 27#include "ttscarbon.h"
@@ -47,6 +48,7 @@ void TTSBase::initTTSList()
47 ttsList["sapi4"] = tr("SAPI4 TTS Engine"); 48 ttsList["sapi4"] = tr("SAPI4 TTS Engine");
48#endif 49#endif
49 ttsList["sapi"] = tr("SAPI5 TTS Engine"); 50 ttsList["sapi"] = tr("SAPI5 TTS Engine");
51 ttsList["mssp"] = tr("MS Speech Platform");
50#endif 52#endif
51#if defined(Q_OS_LINUX) 53#if defined(Q_OS_LINUX)
52 ttsList["festival"] = tr("Festival TTS Engine"); 54 ttsList["festival"] = tr("Festival TTS Engine");
@@ -66,6 +68,8 @@ TTSBase* TTSBase::getTTS(QObject* parent,QString ttsName)
66 tts = new TTSSapi(parent); 68 tts = new TTSSapi(parent);
67 else if (ttsName == "sapi4") 69 else if (ttsName == "sapi4")
68 tts = new TTSSapi4(parent); 70 tts = new TTSSapi4(parent);
71 else if (ttsName == "mssp")
72 tts = new TTSMssp(parent);
69 else 73 else
70#elif defined(Q_OS_LINUX) 74#elif defined(Q_OS_LINUX)
71 if (ttsName == "festival") 75 if (ttsName == "festival")
diff --git a/rbutil/rbutilqt/base/ttsmssp.h b/rbutil/rbutilqt/base/ttsmssp.h
new file mode 100644
index 0000000000..72300e8f79
--- /dev/null
+++ b/rbutil/rbutilqt/base/ttsmssp.h
@@ -0,0 +1,44 @@
1/***************************************************************************
2* __________ __ ___.
3* Open \______ \ ____ ____ | | _\_ |__ _______ ___
4* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7* \/ \/ \/ \/ \/
8*
9* Copyright (C) 2012 by Dominik Riebeling
10*
11* This program is free software; you can redistribute it and/or
12* modify it under the terms of the GNU General Public License
13* as published by the Free Software Foundation; either version 2
14* of the License, or (at your option) any later version.
15*
16* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
17* KIND, either express or implied.
18*
19****************************************************************************/
20
21#ifndef TTSMSSP_H
22#define TTSMSSP_H
23
24#include "ttsbase.h"
25#include "ttssapi.h"
26
27class TTSMssp: public TTSSapi
28{
29 //! Enum to identify the settings
30 Q_OBJECT
31 public:
32 TTSMssp(QObject* parent=NULL)
33 {
34 m_TTSTemplate = "cscript //nologo \"%exe\" "
35 "/language:%lang /voice:\"%voice\" "
36 "/speed:%speed \"%options\" /mssp";
37 m_TTSVoiceTemplate = "cscript //nologo \"%exe\" "
38 "/language:%lang /listvoices /mssp";
39 m_TTSType = "mssp";
40 }
41
42};
43
44#endif
diff --git a/rbutil/rbutilqt/rbutilqt.pri b/rbutil/rbutilqt/rbutilqt.pri
index b6aac3bb43..5ee1f7b9d2 100644
--- a/rbutil/rbutilqt/rbutilqt.pri
+++ b/rbutil/rbutilqt/rbutilqt.pri
@@ -114,6 +114,7 @@ HEADERS += \
114 base/ttsfestival.h \ 114 base/ttsfestival.h \
115 base/ttssapi.h \ 115 base/ttssapi.h \
116 base/ttssapi4.h \ 116 base/ttssapi4.h \
117 base/ttsmssp.h \
117 ../../tools/wavtrim.h \ 118 ../../tools/wavtrim.h \
118 ../../tools/voicefont.h \ 119 ../../tools/voicefont.h \
119 base/voicefile.h \ 120 base/voicefile.h \
diff --git a/tools/sapi_voice.vbs b/tools/sapi_voice.vbs
index a8b98ac924..c6c2c69372 100644
--- a/tools/sapi_voice.vbs
+++ b/tools/sapi_voice.vbs
@@ -39,6 +39,7 @@ Const STDERR = 2
39Dim oShell, oArgs, oEnv 39Dim oShell, oArgs, oEnv
40Dim oFSO, oStdIn, oStdOut 40Dim oFSO, oStdIn, oStdOut
41Dim bVerbose, bSAPI4, bList 41Dim bVerbose, bSAPI4, bList
42Dim bMSSP
42Dim sLanguage, sVoice, sSpeed, sName, sVendor 43Dim sLanguage, sVoice, sSpeed, sName, sVendor
43 44
44Dim oSpVoice, oSpFS ' SAPI5 voice and filestream 45Dim oSpVoice, oSpFS ' SAPI5 voice and filestream
@@ -60,6 +61,7 @@ bVerbose = (oEnv("V") <> "")
60 61
61Set oArgs = WScript.Arguments.Named 62Set oArgs = WScript.Arguments.Named
62bSAPI4 = oArgs.Exists("sapi4") 63bSAPI4 = oArgs.Exists("sapi4")
64bMSSP = oArgs.Exists("mssp")
63bList = oArgs.Exists("listvoices") 65bList = oArgs.Exists("listvoices")
64sLanguage = oArgs.Item("language") 66sLanguage = oArgs.Item("language")
65sVoice = oArgs.Item("voice") 67sVoice = oArgs.Item("voice")
@@ -121,20 +123,25 @@ If bSAPI4 Then
121 123
122 ' Speed selection 124 ' Speed selection
123 If sSpeed <> "" Then oTTS.Speed = sSpeed 125 If sSpeed <> "" Then oTTS.Speed = sSpeed
124 126
125 ' Get vendor information 127 ' Get vendor information
126 sVendor = oTTS.MfgName(nMode) 128 sVendor = oTTS.MfgName(nMode)
127 129
128Else ' SAPI5 130Else ' SAPI5
129 ' Create SAPI5 object 131 ' Create SAPI5 object
130 Set oSpVoice = CreateObject("SAPI.SpVoice") 132 If bMSSP Then
133 Set oSpVoice = CreateObject("speech.SpVoice")
134 Else
135 Set oSpVoice = CreateObject("SAPI.SpVoice")
136 End If
131 If Err.Number <> 0 Then 137 If Err.Number <> 0 Then
132 WScript.StdErr.WriteLine "Error - could not get SpVoice object." _ 138 WScript.StdErr.WriteLine "Error " & Err.Number _
139 & " - could not get SpVoice object." _
133 & " SAPI 5 not installed?" 140 & " SAPI 5 not installed?"
134 WScript.Quit 1 141 WScript.Quit 1
135 End If 142 End If
136 143
137 If bList Then 144 If bList Then
138 ' Just list available voices for the selected language 145 ' Just list available voices for the selected language
139 For Each nLangID in LangIDs(sLanguage) 146 For Each nLangID in LangIDs(sLanguage)
140 sSelectString = "Language=" & Hex(nLangID) 147 sSelectString = "Language=" & Hex(nLangID)