rockbox/rbutil/rbutilqt/base/ttsbase.cpp
Dominik Riebeling eb6c6581bd Remove espeak from TTS list on Windows.
On Windows espeak installs itself as command line program as well as as SAPI
voice. Using the SAPI voice is simpler, so there is no need to keep the command
line option for it.

Change-Id: I44fbd806572d5c14b976aa5d58a91935f04c6338
2012-04-02 20:09:32 +02:00

107 lines
2.6 KiB
C++

/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
*
* Copyright (C) 2007 by Dominik Wenger
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include "ttsbase.h"
#include "ttsfestival.h"
#include "ttssapi.h"
#include "ttsexes.h"
#if defined(Q_OS_MACX)
#include "ttscarbon.h"
#endif
// list of tts names and identifiers
QMap<QString,QString> TTSBase::ttsList;
TTSBase::TTSBase(QObject* parent): EncTtsSettingInterface(parent)
{
}
// static functions
void TTSBase::initTTSList()
{
#if !defined(Q_OS_WIN)
ttsList["espeak"] = tr("Espeak TTS Engine");
#endif
ttsList["flite"] = tr("Flite TTS Engine");
ttsList["swift"] = tr("Swift TTS Engine");
#if defined(Q_OS_WIN)
ttsList["sapi"] = tr("SAPI TTS Engine");
#endif
#if defined(Q_OS_LINUX)
ttsList["festival"] = tr("Festival TTS Engine");
#endif
#if defined(Q_OS_MACX)
ttsList["carbon"] = tr("OS X System Engine");
#endif
}
// function to get a specific encoder
TTSBase* TTSBase::getTTS(QObject* parent,QString ttsName)
{
TTSBase* tts;
#if defined(Q_OS_WIN)
if(ttsName == "sapi")
{
tts = new TTSSapi(parent);
return tts;
}
else
#endif
#if defined(Q_OS_LINUX)
if (ttsName == "festival")
{
tts = new TTSFestival(parent);
return tts;
}
else
#endif
#if defined(Q_OS_MACX)
if(ttsName == "carbon")
{
tts = new TTSCarbon(parent);
return tts;
}
else
#endif
if (true) // fix for OS other than WIN or LINUX
{
tts = new TTSExes(ttsName,parent);
return tts;
}
}
// get the list of encoders, nice names
QStringList TTSBase::getTTSList()
{
// init list if its empty
if(ttsList.count() == 0)
initTTSList();
return ttsList.keys();
}
// get nice name of a specific tts
QString TTSBase::getTTSName(QString tts)
{
if(ttsList.isEmpty())
initTTSList();
return ttsList.value(tts);
}