68 lines
1.8 KiB
C++
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
|