diff options
Diffstat (limited to 'rbutil/rbutilqt/base/ttsexes.cpp')
-rw-r--r-- | rbutil/rbutilqt/base/ttsexes.cpp | 94 |
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 | |||
24 | TTSExes::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 | |||
34 | void 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 | |||
45 | void 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 | |||
52 | bool 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 | |||
71 | TTSStatus 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 | |||
86 | bool 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 | } | ||