1 /***************************************************************************
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
9 * Copyright (C) 2007 by Dominik Wenger
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
20 ****************************************************************************/
26 #include "rbsettings.h"
33 #include "encttssettings.h"
35 enum TTSStatus
{ FatalError
, NoError
, Warning
};
37 class TTSBase
: public EncTtsSettingInterface
41 TTSBase(QObject
*parent
);
42 //! Child class should generate a clip
43 virtual TTSStatus
voice(QString text
,QString wavfile
, QString
* errStr
) =0;
44 //! Child class should do startup
45 virtual bool start(QString
*errStr
) =0;
46 //! child class should stop
47 virtual bool stop() =0;
50 //! Child class should return true, when configuration is good
51 virtual bool configOk()=0;
52 //! Child class should generate and insertSetting(..) its settings
53 virtual void generateSettings() = 0;
54 //! Chlid class should commit the Settings to permanent storage
55 virtual void saveSettings() = 0;
58 static TTSBase
* getTTS(QObject
* parent
,QString ttsname
);
59 static QStringList
getTTSList();
60 static QString
getTTSName(QString tts
);
62 // sets the config. Users of TTS classes, always have to call this first
63 void setCfg(RbSettings
* sett
) { settings
= sett
; }
67 static void initTTSList();
71 static QMap
<QString
,QString
> ttsList
;
74 class TTSSapi
: public TTSBase
76 //! Enum to identify the settings
87 TTSSapi(QObject
* parent
=NULL
);
89 TTSStatus
voice(QString text
,QString wavfile
, QString
*errStr
);
90 bool start(QString
*errStr
);
95 void generateSettings();
99 void updateVoiceList();
102 QStringList
getVoiceList(QString language
);
104 QProcess
* voicescript
;
105 QTextStream
* voicestream
;
106 QString defaultLanguage
;
110 QString m_TTSTemplate
;
111 QString m_TTSLanguage
;
118 class TTSExes
: public TTSBase
128 TTSExes(QString name
,QObject
* parent
=NULL
);
129 TTSStatus
voice(QString text
,QString wavfile
, QString
*errStr
);
130 bool start(QString
*errStr
);
131 bool stop() {return true;}
134 void generateSettings();
142 QString m_TTSTemplate
;
143 QMap
<QString
,QString
> m_TemplateMap
;
146 class TTSFestival
: public TTSBase
158 TTSFestival(QObject
* parent
=NULL
) :TTSBase(parent
) {}
160 bool start(QString
*errStr
);
162 TTSStatus
voice(QString text
,QString wavfile
, QString
*errStr
);
166 void generateSettings();
170 void updateVoiceList();
171 void updateVoiceDescription();
172 void clearVoiceDescription();
174 QStringList
getVoiceList(QString path
="");
175 QString
getVoiceInfo(QString voice
,QString path
="");
177 inline void startServer(QString path
="");
178 inline void ensureServerRunning(QString path
="");
179 QString
queryServer(QString query
, int timeout
= -1,QString path
="");
180 QProcess serverProcess
;
182 QMap
<QString
, QString
> voiceDescriptions
;