rockbox/rbutil/rbutilqt/base/ttscarbon.h
Dominik Riebeling 2c3b8bd1e2 Factor out executable based TTS engines to separate subclasses.
Similar as done with SAPI / MSSP make the current implementation for executable
based TTS engines a base class and create derived classes for each supported
TTS. Removes the need for the implementation to know about the individual TTS
engines.

Add support for speaking directly (i.e. without going through a temporary wave
file, currently only used by espeak).

Change-Id: I59bbbd6ee4c2c009b2a8d8e0ab4a9b39ea723d6e
2012-10-06 13:53:09 +02:00

73 lines
2.3 KiB
C++

/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
*
* Copyright (C) 2010 by Dominik Riebeling
*
* 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.
*
****************************************************************************/
#ifndef TTSCARBON_H
#define TTSCARBON_H
#include <QtCore>
#include "ttsbase.h"
#include <Carbon/Carbon.h>
#include <inttypes.h>
class TTSCarbon : public TTSBase
{
Q_OBJECT
//! Enum to identify the settings
enum ConfigValuesCarbon
{
ConfigVoice,
ConfigSpeed,
ConfigPitch
};
public:
TTSCarbon(QObject *parent = NULL);
//! Child class should generate a clip
TTSStatus voice(QString text, QString wavfile, QString* errStr);
//! Child class should do startup
bool start(QString *errStr);
//! child class should stop
bool stop() ;
QString voiceVendor(void) { return QString(); }
// configuration
//! Child class should return true, when configuration is good
bool configOk();
//! Child class should generate and insertSetting(..) its settings
void generateSettings();
//! Child class should commit the Settings to permanent storage
void saveSettings();
Capabilities capabilities();
private:
SpeechChannel m_channel;
CFStringBuiltInEncodings m_voiceScript;
unsigned long be2u32(unsigned char* buf);
unsigned long be2u16(unsigned char* buf);
unsigned char* u32tobuf(unsigned char* buf, uint32_t val);
unsigned char* u16tobuf(unsigned char* buf, uint16_t val);
unsigned int extended2int(unsigned char* buf);
int convertAiffToWav(const char* aiff, const char* wav);
};
#endif // TTSCARBON_H