summaryrefslogtreecommitdiff
path: root/rbutil/rbutilqt/base/ttsexes.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'rbutil/rbutilqt/base/ttsexes.cpp')
-rw-r--r--rbutil/rbutilqt/base/ttsexes.cpp94
1 files changed, 94 insertions, 0 deletions
diff --git a/rbutil/rbutilqt/base/ttsexes.cpp b/rbutil/rbutilqt/base/ttsexes.cpp
new file mode 100644
index 0000000000..d116290161
--- /dev/null
+++ b/rbutil/rbutilqt/base/ttsexes.cpp
@@ -0,0 +1,94 @@
1/***************************************************************************
2* __________ __ ___.
3* Open \______ \ ____ ____ | | _\_ |__ _______ ___
4* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7* \/ \/ \/ \/ \/
8*
9* Copyright (C) 2007 by Dominik Wenger
10* $Id$
11*
12* All files in this archive are subject to the GNU General Public License.
13* See the file COPYING in the source tree root for full license agreement.
14*
15* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16* KIND, either express or implied.
17*
18****************************************************************************/
19
20#include "ttsexes.h"
21#include "utils.h"
22#include "rbsettings.h"
23
24TTSExes::TTSExes(QString name,QObject* parent) : TTSBase(parent)
25{
26 m_name = name;
27
28 m_TemplateMap["espeak"] = "\"%exe\" %options -w \"%wavfile\" \"%text\"";
29 m_TemplateMap["flite"] = "\"%exe\" %options -o \"%wavfile\" -t \"%text\"";
30 m_TemplateMap["swift"] = "\"%exe\" %options -o \"%wavfile\" \"%text\"";
31
32}
33
34void TTSExes::generateSettings()
35{
36 QString exepath =RbSettings::subValue(m_name,RbSettings::TtsPath).toString();
37 if(exepath == "") exepath = findExecutable(m_name);
38
39 insertSetting(eEXEPATH,new EncTtsSetting(this,EncTtsSetting::eSTRING,
40 tr("Path to TTS engine:"),exepath,EncTtsSetting::eBROWSEBTN));
41 insertSetting(eOPTIONS,new EncTtsSetting(this,EncTtsSetting::eSTRING,
42 tr("TTS engine options:"),RbSettings::subValue(m_name,RbSettings::TtsOptions)));
43}
44
45void TTSExes::saveSettings()
46{
47 RbSettings::setSubValue(m_name,RbSettings::TtsPath,getSetting(eEXEPATH)->current().toString());
48 RbSettings::setSubValue(m_name,RbSettings::TtsOptions,getSetting(eOPTIONS)->current().toString());
49 RbSettings::sync();
50}
51
52bool TTSExes::start(QString *errStr)
53{
54 m_TTSexec = RbSettings::subValue(m_name,RbSettings::TtsPath).toString();
55 m_TTSOpts = RbSettings::subValue(m_name,RbSettings::TtsOptions).toString();
56
57 m_TTSTemplate = m_TemplateMap.value(m_name);
58
59 QFileInfo tts(m_TTSexec);
60 if(tts.exists())
61 {
62 return true;
63 }
64 else
65 {
66 *errStr = tr("TTS executable not found");
67 return false;
68 }
69}
70
71TTSStatus TTSExes::voice(QString text,QString wavfile, QString *errStr)
72{
73 (void) errStr;
74 QString execstring = m_TTSTemplate;
75
76 execstring.replace("%exe",m_TTSexec);
77 execstring.replace("%options",m_TTSOpts);
78 execstring.replace("%wavfile",wavfile);
79 execstring.replace("%text",text);
80 //qDebug() << "voicing" << execstring;
81 QProcess::execute(execstring);
82 return NoError;
83
84}
85
86bool TTSExes::configOk()
87{
88 QString path = RbSettings::subValue(m_name,RbSettings::TtsPath).toString();
89
90 if (QFileInfo(path).exists())
91 return true;
92
93 return false;
94}