天天看點

QtApplets-QTextToSpeechDemo

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倉庫自取​​

使用方法:☟☟☟