QtApplets-QTextToSpeechDemo

哎呀妈呀,这个系列应该有好长一段时间没有更细了,因为啥呢,主要是因为这一段时间都在折腾Debian 10 下的软件开发,都是在调试代码,实在是没有啥新功能需要试验的,有的也是在Linux下的设置,脚本啥的,与Qt相关,没有啥新的功能。所以就耽搁了。

今天要研究的类其实很简单,​​QTextToSpeech​




文章目录

  • ​​QtApplets-QTextToSpeechDemo​​
  • ​​QTextToSpeech​​
  • ​​文本朗读-say。​​
  • ​​音量设置-setVolume​​
  • ​​音高设置-setPitch​​
  • ​​朗读速率设置-setRate​​
  • ​​朗读声音选择-setVoice​​
  • ​​核心代码​​
  • ​​pro文件​​
  • ​​头文件​​
  • ​​源文件​​
  • ​​程序截图​​
  • ​​☞ 源码​​



关键字:​QTextToSpeech​​​、​​Qt​​​、​​语音​​​、​​文字​​​、​​关键字5​

QTextToSpeech

官方文档里面对这个类的描述很简单,如下

he QTextToSpeech class provides a convenient access to text-to-speech engines

我理解就是官方分装了结果系统文字转语音接口给我们简单的使用一下。今天我们主要研究一下几个问题

  1. 文本朗读
  2. 音量设置
  3. 音高设置
  4. 朗读速率设置
  5. 朗读声音选择

文本朗读-say。

void say(const QString &text)

参数就是我们传入我们要转成语音的字符串

它是异步的开始合成文章。这个函数将开始异步读取文本。使用state属性可以使用当前状态。一旦合成完成,就会发出stateChanged()信号,该信号处于就绪状态。

enum State { Ready, Speaking, Paused, BackendError };

音量设置-setVolume

void setVolume(double volume)

范围从0.0到1.0。默认值是平台的默认音量

音高设置-setPitch

void setPitch(double pitch)

范围从-1.0到1.0。默认的0.0是正常的语音音高

朗读速率设置-setRate

void setRate(double rate)

范围从-1.0到1.0。默认值0.0是正常的语音流

朗读声音选择-setVoice

void setVoice(const QVoice &voice)

设置 声音是谁的 我看window下 有个男声音和女声音

核心代码

以上就是今天要搞得内容,下面直接上源码,很简单

pro文件

需要在pro文件中加入以下代码

QT += texttospeech

头文件

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QTextToSpeech>
#include <QTextEdit>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
Q_OBJECT

public:
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 <QMessageBox>
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);
else
if(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();
}

程序截图

QtApplets-QTextToSpeechDemo_语音

☞ 源码

源码链接:​​GitHub仓库自取​

使用方法:☟☟☟

QtApplets-QTextToSpeechDemo_语音_02