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 @@ #include "ttsfestival.h" #include "ttssapi.h" #include "ttssapi4.h" +#include "ttsmssp.h" #include "ttsexes.h" #if defined(Q_OS_MACX) #include "ttscarbon.h" @@ -47,6 +48,7 @@ void TTSBase::initTTSList() ttsList["sapi4"] = tr("SAPI4 TTS Engine"); #endif ttsList["sapi"] = tr("SAPI5 TTS Engine"); + ttsList["mssp"] = tr("MS Speech Platform"); #endif #if defined(Q_OS_LINUX) ttsList["festival"] = tr("Festival TTS Engine"); @@ -66,6 +68,8 @@ TTSBase* TTSBase::getTTS(QObject* parent,QString ttsName) tts = new TTSSapi(parent); else if (ttsName == "sapi4") tts = new TTSSapi4(parent); + else if (ttsName == "mssp") + tts = new TTSMssp(parent); else #elif defined(Q_OS_LINUX) 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 @@ +/*************************************************************************** +* __________ __ ___. +* Open \______ \ ____ ____ | | _\_ |__ _______ ___ +* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / +* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < +* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ +* \/ \/ \/ \/ \/ +* +* Copyright (C) 2012 by Dominik Riebeling +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY +* KIND, either express or implied. +* +****************************************************************************/ + +#ifndef TTSMSSP_H +#define TTSMSSP_H + +#include "ttsbase.h" +#include "ttssapi.h" + +class TTSMssp: public TTSSapi +{ + //! Enum to identify the settings + Q_OBJECT + public: + TTSMssp(QObject* parent=NULL) + { + m_TTSTemplate = "cscript //nologo \"%exe\" " + "/language:%lang /voice:\"%voice\" " + "/speed:%speed \"%options\" /mssp"; + m_TTSVoiceTemplate = "cscript //nologo \"%exe\" " + "/language:%lang /listvoices /mssp"; + m_TTSType = "mssp"; + } + +}; + +#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 += \ base/ttsfestival.h \ base/ttssapi.h \ base/ttssapi4.h \ + base/ttsmssp.h \ ../../tools/wavtrim.h \ ../../tools/voicefont.h \ 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 Dim oShell, oArgs, oEnv Dim oFSO, oStdIn, oStdOut Dim bVerbose, bSAPI4, bList +Dim bMSSP Dim sLanguage, sVoice, sSpeed, sName, sVendor Dim oSpVoice, oSpFS ' SAPI5 voice and filestream @@ -60,6 +61,7 @@ bVerbose = (oEnv("V") <> "") Set oArgs = WScript.Arguments.Named bSAPI4 = oArgs.Exists("sapi4") +bMSSP = oArgs.Exists("mssp") bList = oArgs.Exists("listvoices") sLanguage = oArgs.Item("language") sVoice = oArgs.Item("voice") @@ -121,20 +123,25 @@ If bSAPI4 Then ' Speed selection If sSpeed <> "" Then oTTS.Speed = sSpeed - + ' Get vendor information sVendor = oTTS.MfgName(nMode) Else ' SAPI5 ' Create SAPI5 object - Set oSpVoice = CreateObject("SAPI.SpVoice") + If bMSSP Then + Set oSpVoice = CreateObject("speech.SpVoice") + Else + Set oSpVoice = CreateObject("SAPI.SpVoice") + End If If Err.Number <> 0 Then - WScript.StdErr.WriteLine "Error - could not get SpVoice object." _ + WScript.StdErr.WriteLine "Error " & Err.Number _ + & " - could not get SpVoice object." _ & " SAPI 5 not installed?" WScript.Quit 1 End If - - If bList Then + + If bList Then ' Just list available voices for the selected language For Each nLangID in LangIDs(sLanguage) sSelectString = "Language=" & Hex(nLangID)