summaryrefslogtreecommitdiffstats
path: root/src/plugins/tts/flite/qtexttospeech_flite.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/tts/flite/qtexttospeech_flite.h')
-rwxr-xr-xsrc/plugins/tts/flite/qtexttospeech_flite.h51
1 files changed, 4 insertions, 47 deletions
diff --git a/src/plugins/tts/flite/qtexttospeech_flite.h b/src/plugins/tts/flite/qtexttospeech_flite.h
index ff94bef..311ebbd 100755
--- a/src/plugins/tts/flite/qtexttospeech_flite.h
+++ b/src/plugins/tts/flite/qtexttospeech_flite.h
@@ -37,63 +37,19 @@
#ifndef QTEXTTOSPEECHENGINE_FLITE_H
#define QTEXTTOSPEECHENGINE_FLITE_H
+#include "qtexttospeech_flite_processor.h"
#include "qtexttospeechengine.h"
#include "qvoice.h"
#include <QtCore/QString>
#include <QtCore/QLocale>
#include <QtCore/QVector>
-#include <QtCore/QThread>
-#include <QtCore/QMutex>
-#include <QtCore/QSemaphore>
-#include <QtCore/QIODevice>
-#include <QtMultimedia/QAudioOutput>
+#include <QtCore/QSharedPointer>
#include <flite/flite.h>
QT_BEGIN_NAMESPACE
-class FliteProcessor : public QThread {
- Q_OBJECT
-
-public:
- FliteProcessor();
- ~FliteProcessor();
- void say(cst_voice *voice, const QString &text);
- void stop();
- bool setRate(float rate);
- bool setPitch(float pitch);
- bool setVolume(int volume);
- void exit();
- bool isIdle();
- float rate();
- float pitch();
- int volume();
-
-signals:
- void notSpeaking();
-
-private:
- QMutex m_lock;
- bool m_stop;
- bool m_idle;
- float m_rate;
- float m_pitch;
- int m_volume;
- QSemaphore m_speakSem;
- QString m_nextText;
- cst_voice *m_nextVoice;
- QAudioOutput *m_audio;
- QIODevice *m_audioBuffer;
- void run();
- void setRateForVoice(cst_voice *voice, float rate);
- void setPitchForVoice(cst_voice *voice, float pitch);
- int audioOutput(const cst_wave *w, int start, int size,
- int last, cst_audio_streaming_info *asi);
- static int fliteAudioCb(const cst_wave *w, int start, int size,
- int last, cst_audio_streaming_info *asi);
-};
-
class QTextToSpeechEngineFlite : public QTextToSpeechEngine
{
Q_OBJECT
@@ -125,10 +81,11 @@ public:
bool init(QString *errorString);
public slots:
- void onNotSpeaking();
+ void onNotSpeaking(int statusCode);
private:
QTextToSpeech::State m_state;
+ QSharedPointer<QTextToSpeechProcessorFlite> m_processor;
QLocale m_currentLocale;
QVector<QLocale> m_locales;
QVoice m_currentVoice;