/********************************************************************************** * @file QTtsEngineIflytek.h * @brief 科大讯飞TTS封装为QtSpeech插件 * @author yikenan * @versiong 1.0 * @date 2020/10/26 **********************************************************************************/ #pragma once #include #include #include #include #include "qtexttospeechengine.h" #include "qvoice.h" #include "QTtsProcessorIflytek.h" namespace iot_app { class QTtsEngineIflytek : public QTextToSpeechEngine { Q_OBJECT public: QTtsEngineIflytek( const QVariantMap &mapPara, QObject *pParent ); virtual ~QTtsEngineIflytek(); // 重载基类接口: QVector availableLocales() const override; QVector availableVoices() const override; void say( const QString &text ) override; void stop() override; void pause() override; void resume() override; double rate() const override; bool setRate( double dRate ) override; double pitch() const override; bool setPitch( double dPitch ) override; QLocale locale() const override; bool setLocale( const QLocale &objLocale ) override; double volume() const override; bool setVolume( double dVolume ) override; QVoice voice() const override; bool setVoice( const QVoice &objVoice ) override; QTextToSpeech::State state() const override; bool init( QString *strError ); public slots: void onNotSpeaking( int nStatusCode ); private: QTextToSpeech::State m_enState; QSharedPointer m_ptrProcessor; QLocale m_objCurrentLocale; QVector m_vecLocales; QVoice m_objCurrentVoice; // key 为 locale name QMultiMap m_mapVoices; }; } //< namespace iot_app