Add support for Microsoft Speech Platform.
MSSP is accessible via vbs by simply changing the object to be used (both SAPI5 and MSSP use the ISpVoice COM interface). Add command line parameter to sapi_voice.vbs to switch the COM object used, and add the necessary implementation of the SAPI class to Rockbox Utility. Important: you will need to install the Speech Runtime separately and install the version matching the bitsize of Rockbox Utility. I.e. you will need to install the x86 version even on a x64 machine (unless you build a 64bit binary of Rockbox Utility). Change-Id: If760cd69c556c17a2ae539965d0941d16fdc10e1
This commit is contained in:
parent
469a614349
commit
a1b780e670
4 changed files with 61 additions and 5 deletions
|
@ -21,6 +21,7 @@
|
||||||
#include "ttsfestival.h"
|
#include "ttsfestival.h"
|
||||||
#include "ttssapi.h"
|
#include "ttssapi.h"
|
||||||
#include "ttssapi4.h"
|
#include "ttssapi4.h"
|
||||||
|
#include "ttsmssp.h"
|
||||||
#include "ttsexes.h"
|
#include "ttsexes.h"
|
||||||
#if defined(Q_OS_MACX)
|
#if defined(Q_OS_MACX)
|
||||||
#include "ttscarbon.h"
|
#include "ttscarbon.h"
|
||||||
|
@ -47,6 +48,7 @@ void TTSBase::initTTSList()
|
||||||
ttsList["sapi4"] = tr("SAPI4 TTS Engine");
|
ttsList["sapi4"] = tr("SAPI4 TTS Engine");
|
||||||
#endif
|
#endif
|
||||||
ttsList["sapi"] = tr("SAPI5 TTS Engine");
|
ttsList["sapi"] = tr("SAPI5 TTS Engine");
|
||||||
|
ttsList["mssp"] = tr("MS Speech Platform");
|
||||||
#endif
|
#endif
|
||||||
#if defined(Q_OS_LINUX)
|
#if defined(Q_OS_LINUX)
|
||||||
ttsList["festival"] = tr("Festival TTS Engine");
|
ttsList["festival"] = tr("Festival TTS Engine");
|
||||||
|
@ -66,6 +68,8 @@ TTSBase* TTSBase::getTTS(QObject* parent,QString ttsName)
|
||||||
tts = new TTSSapi(parent);
|
tts = new TTSSapi(parent);
|
||||||
else if (ttsName == "sapi4")
|
else if (ttsName == "sapi4")
|
||||||
tts = new TTSSapi4(parent);
|
tts = new TTSSapi4(parent);
|
||||||
|
else if (ttsName == "mssp")
|
||||||
|
tts = new TTSMssp(parent);
|
||||||
else
|
else
|
||||||
#elif defined(Q_OS_LINUX)
|
#elif defined(Q_OS_LINUX)
|
||||||
if (ttsName == "festival")
|
if (ttsName == "festival")
|
||||||
|
|
44
rbutil/rbutilqt/base/ttsmssp.h
Normal file
44
rbutil/rbutilqt/base/ttsmssp.h
Normal file
|
@ -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
|
|
@ -114,6 +114,7 @@ HEADERS += \
|
||||||
base/ttsfestival.h \
|
base/ttsfestival.h \
|
||||||
base/ttssapi.h \
|
base/ttssapi.h \
|
||||||
base/ttssapi4.h \
|
base/ttssapi4.h \
|
||||||
|
base/ttsmssp.h \
|
||||||
../../tools/wavtrim.h \
|
../../tools/wavtrim.h \
|
||||||
../../tools/voicefont.h \
|
../../tools/voicefont.h \
|
||||||
base/voicefile.h \
|
base/voicefile.h \
|
||||||
|
|
|
@ -39,6 +39,7 @@ Const STDERR = 2
|
||||||
Dim oShell, oArgs, oEnv
|
Dim oShell, oArgs, oEnv
|
||||||
Dim oFSO, oStdIn, oStdOut
|
Dim oFSO, oStdIn, oStdOut
|
||||||
Dim bVerbose, bSAPI4, bList
|
Dim bVerbose, bSAPI4, bList
|
||||||
|
Dim bMSSP
|
||||||
Dim sLanguage, sVoice, sSpeed, sName, sVendor
|
Dim sLanguage, sVoice, sSpeed, sName, sVendor
|
||||||
|
|
||||||
Dim oSpVoice, oSpFS ' SAPI5 voice and filestream
|
Dim oSpVoice, oSpFS ' SAPI5 voice and filestream
|
||||||
|
@ -60,6 +61,7 @@ bVerbose = (oEnv("V") <> "")
|
||||||
|
|
||||||
Set oArgs = WScript.Arguments.Named
|
Set oArgs = WScript.Arguments.Named
|
||||||
bSAPI4 = oArgs.Exists("sapi4")
|
bSAPI4 = oArgs.Exists("sapi4")
|
||||||
|
bMSSP = oArgs.Exists("mssp")
|
||||||
bList = oArgs.Exists("listvoices")
|
bList = oArgs.Exists("listvoices")
|
||||||
sLanguage = oArgs.Item("language")
|
sLanguage = oArgs.Item("language")
|
||||||
sVoice = oArgs.Item("voice")
|
sVoice = oArgs.Item("voice")
|
||||||
|
@ -121,20 +123,25 @@ If bSAPI4 Then
|
||||||
|
|
||||||
' Speed selection
|
' Speed selection
|
||||||
If sSpeed <> "" Then oTTS.Speed = sSpeed
|
If sSpeed <> "" Then oTTS.Speed = sSpeed
|
||||||
|
|
||||||
' Get vendor information
|
' Get vendor information
|
||||||
sVendor = oTTS.MfgName(nMode)
|
sVendor = oTTS.MfgName(nMode)
|
||||||
|
|
||||||
Else ' SAPI5
|
Else ' SAPI5
|
||||||
' Create SAPI5 object
|
' 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
|
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?"
|
& " SAPI 5 not installed?"
|
||||||
WScript.Quit 1
|
WScript.Quit 1
|
||||||
End If
|
End If
|
||||||
|
|
||||||
If bList Then
|
If bList Then
|
||||||
' Just list available voices for the selected language
|
' Just list available voices for the selected language
|
||||||
For Each nLangID in LangIDs(sLanguage)
|
For Each nLangID in LangIDs(sLanguage)
|
||||||
sSelectString = "Language=" & Hex(nLangID)
|
sSelectString = "Language=" & Hex(nLangID)
|
||||||
|
|
Loading…
Reference in a new issue