68 lines
1.8 KiB
C++

/**********************************************************************************
* @file QTtsEngineIflytek.h
* @brief 科大讯飞TTS封装为QtSpeech插件
* @author yikenan
* @versiong 1.0
* @date 2020/10/26
**********************************************************************************/
#pragma once
#include <QtCore/QString>
#include <QtCore/QLocale>
#include <QtCore/QVector>
#include <QtCore/QSharedPointer>
#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<QLocale> availableLocales() const override;
QVector<QVoice> 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<QTtsProcessorIflytek> m_ptrProcessor;
QLocale m_objCurrentLocale;
QVector<QLocale> m_vecLocales;
QVoice m_objCurrentVoice;
// key 为 locale name
QMultiMap<QString, QVoice> m_mapVoices;
};
} //< namespace iot_app