哎呀妈呀,这个系列应该有好长一段时间没有更细了,因为啥呢,主要是因为这一段时间都在折腾Debian 10 下的软件开发,都是在调试代码,实在是没有啥新功能需要试验的,有的也是在Linux下的设置,脚本啥的,与Qt相关,没有啥新的功能。所以就耽搁了。
今天要研究的类其实很简单,QTextToSpeech
文章目录
- QtApplets-QTextToSpeechDemo
- QTextToSpeech
- 文本朗读-say。
- 音量设置-setVolume
- 音高设置-setPitch
- 朗读速率设置-setRate
- 朗读声音选择-setVoice
- 核心代码
- pro文件
- 头文件
- 源文件
- 程序截图
- ☞ 源码
关键字:
QTextToSpeech、Qt、语音、文字、关键字5
官方文档里面对这个类的描述很简单,如下
he QTextToSpeech class provides a convenient access to text-to-speech engines
我理解就是官方分装了结果系统文字转语音接口给我们简单的使用一下。今天我们主要研究一下几个问题
void say(const QString &text)
参数就是我们传入我们要转成语音的字符串
它是异步的开始合成文章。这个函数将开始异步读取文本。使用state属性可以使用当前状态。一旦合成完成,就会发出stateChanged()信号,该信号处于就绪状态。
enum State {Ready,Speaking,Paused,BackendError};
void setVolume(double volume)
范围从0.0到1.0。默认值是平台的默认音量
void setPitch(double pitch)
范围从-1.0到1.0。默认的0.0是正常的语音音高
void setRate(double rate)
范围从-1.0到1.0。默认值0.0是正常的语音流
void setVoice(const QVoice &voice)
设置 声音是谁的 我看window下 有个男声音和女声音
以上就是今天要搞得内容,下面直接上源码,很简单
需要在pro文件中加入以下代码
QT += texttospeech
#ifndef WIDGET_H
#define WIDGET_H#include
#include
#include
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void on_pushButton_clear_clicked();void on_pushButton_read_clicked();void on_doubleSpinBoxPitch_valueChanged(double arg1);void on_doubleSpinBox_Rate_valueChanged(double arg1);void on_doubleSpinBox_Volume_valueChanged(double arg1);void on_comboBox_currentIndexChanged(int index);private:Ui::Widget *ui;QTextToSpeech* mQTextToSpeech = nullptr;};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
#include
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);this->resize(QSize(1366,768));this->setWindowTitle("Qt文字转语音Demo");mQTextToSpeech = new QTextToSpeech;mQTextToSpeech->say("Hello World");mQTextToSpeech->setPitch(0.0);}Widget::~Widget()
{delete ui;
}/*** @brief Widget::on_pushButton_clear_clicked* 清除输入框*/
void Widget::on_pushButton_clear_clicked()
{ui->textEdit->clear();
}/*** @brief Widget::on_pushButton_read_clicked* 朗读输入文字*/
void Widget::on_pushButton_read_clicked()
{if(ui->textEdit->document()->isEmpty())QMessageBox::warning(this,"警告","文本内容为空",QMessageBox::Ok);elseif(mQTextToSpeech)mQTextToSpeech->say(ui->textEdit->document()->toRawText());
}/*** @brief Widget::on_doubleSpinBoxPitch_valueChanged* @param arg1* 设置音高*/
void Widget::on_doubleSpinBoxPitch_valueChanged(double arg1)
{mQTextToSpeech->setPitch(arg1);
}/*** @brief Widget::on_doubleSpinBox_Rate_valueChanged* @param arg1* 设置速率**/
void Widget::on_doubleSpinBox_Rate_valueChanged(double arg1)
{mQTextToSpeech->setRate(arg1);
}/*** @brief Widget::on_doubleSpinBox_Volume_valueChanged* @param arg1* 设置音量*/
void Widget::on_doubleSpinBox_Volume_valueChanged(double arg1)
{mQTextToSpeech->setVolume(arg1);
}/*** @brief Widget::on_comboBox_currentIndexChanged* @param index* 设置音色*/
void Widget::on_comboBox_currentIndexChanged(int index)
{//mQTextToSpeech->setVoice();
}

源码链接:GitHub仓库自取
使用方法:☟☟☟
