QT TTS朗读
来源:互联网 发布:php 日期格式转换 编辑:程序博客网 时间:2024/05/16 10:55
做QT项目时,可能会遇上朗读中文或英文,这就是TTS朗读。
我用QtCreator做了一个TTS朗读的小例子。
首先,在pro文件里面需要加上
QT += axcontainer
头文件用:
#include <ActiveQt/QAxObject>
.h文件的主要代码:
#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <ActiveQt/QAxObject>//需要的头文件
namespace Ui {class Widget;}class Widget : public QWidget{Q_OBJECTpublic:
explicit Widget(QWidget *parent = 0);~Widget();private slots:void on_enButton_clicked();void on_zhButton_clicked();private:
void startSpeak(const QString& text);private:
Ui::Widget *ui;mutable QAxObject m_voice;static const QString EnglishVoiceKey;static const QString ChineseVoiceKey;static const QString clsidSpObjectToken;static const QString clsidSpVoice;};#endif // WIDGET_H
.cpp里面的主要代码:
#include "widget.h"#include "ui_widget.h"#include<QDebug>#include <oaidl.h>const QString Widget::EnglishVoiceKey = QLatin1String("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\Voices\\Tokens\\VW Julie");const QString Widget::ChineseVoiceKey = QLatin1String("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\Voices\\Tokens\\ScanSoftMei-Ling_Full_22kHz");//TTS引擎ID,上面是英文的,下面是中文的。这个可以根据自己电脑上的找。 通过在运行里输入regedit查找到。const QString Widget::clsidSpObjectToken = QLatin1String("{EF411752-3736-4CB4-9C8C-8EF4CCB58EFE}");const QString Widget::clsidSpVoice = QLatin1String("{96749377-3391-11D2-9EE3-00C04F797396}");//在运行里面输入regedit 查找注册表,在 HKEY_LOCAL_MACHINE\\SOFTWARE\\CLasscs\\CLSID 下可以找到,它是一个类标识符,window下的每个应用,如网上邻居,//回收站,都有自己的类识别符。 上面是TTS语音的类识别符。Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget){ui->setupUi(this);}Widget::~Widget(){delete ui;}void Widget::on_enButton_clicked(){// 这个函数用来测试朗读英文QAxObject obj(clsidSpObjectToken);if (obj.isNull()) {qWarning() << "Failed to create SpObjectToken";return;}
obj.dynamicCall("SetId(const QString&)", EnglishVoiceKey);m_voice.setProperty("Voice", obj.asVariant());startSpeak(QLatin1String("this is a test!"));}void Widget::on_zhButton_clicked(){// 这个函数用来测试朗读中文QAxObject obj(clsidSpObjectToken);if (obj.isNull()) {qWarning() << "Failed to create SpObjectToken";return;}
obj.dynamicCall("SetId(const QString&)", ChineseVoiceKey);m_voice.setProperty("Voice", obj.asVariant());startSpeak(tr("这是一个测试例子!"));}void Widget::startSpeak(const QString& text){m_voice.setControl(clsidSpVoice);m_voice.dynamicCall("Speak(QString, SpeechVoiceSpeakFlags)", text, 0x0013);}
0 0
- QT TTS朗读
- android 中文朗读 语音朗读 tts朗读
- TTS语音朗读
- TTS语音朗读
- 自动朗读(TTS)
- TTS实现文字语音朗读
- Android 自动朗读(TTS)
- Android TTS学习 连续朗读
- Android中的自动朗读(TTS)
- Android自动朗读(TTS)
- Andorid自动朗读TTS使用
- 安卓自动朗读TTS
- BlackBerry 10使用Google TTS做中文文本朗读,开发语言C++ Qt Cascade
- Text-To-Speech(TTS)语音朗读
- VC用TTS实现文字语音朗读
- Android中用TTS语音朗读一段英文
- 初学Android,自动朗读TTS(五十二)
- VC用TTS实现文字语音朗读
- Oracle 基于备份控制文件的恢复(unsing backup controlfile)
- sip注册流程
- 自定义ViewGroup---理解1
- Android EditText的完全解析(随时补充)
- 尴尬的VXLAN
- QT TTS朗读
- 算法导论之哈夫曼编码
- Spring > 统一异常处理
- ORA-01097错误解决办法及探索shutdown immediate
- 计算日期或时间间隔解决办法
- Android开发学习总结(一)——搭建最新版本的Android开发环境
- C-1-数据类型-p5
- rlwrap安装Invalid configuration `x86_64-unknown-linux-':问题解决
- AngularJS的路由、模块、依赖注入