QT5實現(xiàn)TTS文本語音朗讀功能
TTS 語音朗讀 是開發(fā)中常用的功能,Qt已經(jīng)給封裝完成,我們只需要調(diào)用;
效果圖:
新建 Application 工程
.pro文件添加
QT += core gui texttospeech
mainwindow.h
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QTextToSpeech> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = nullptr); ~MainWindow(); private slots: void on_pushButton_Speed_clicked(); private: Ui::MainWindow *ui; private: QTextToSpeech m_Speech; }; #endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h" #include "ui_mainwindow.h" #pragma execution_character_set("utf-8") MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); QIcon disconnect = QIcon(":/save.png"); ui->pushButton_Speed->setText(QStringLiteral("Speech")); ui->pushButton_Speed->setIconSize(QSize(32, 32)); ui->pushButton_Speed->setLayoutDirection(Qt::RightToLeft); ui->pushButton_Speed->setIcon(disconnect); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_pushButton_Speed_clicked() { m_Speech.say(ui->textEdit->toPlainText()); }
知識補充
QTextToSpeech(TTS)是QT5.8以上的文本轉(zhuǎn)語音模塊。
使用方法:
在.pro工程文件中添加“QT += texttospeech”。
添加頭文件 #include
源文件:
QTextToSpeech *tts = new QTextToSpeech(this); if(tts->state()==QTextToSpeech::Ready) { tts->say( "hello world"); }
在linux下,它是調(diào)用speech-dispatcher。在其它不同的平臺上,調(diào)用各自平臺的TTS引擎。所以在使用的時候,要確保本地的TTS引擎是可用的。
本地TTS引擎不可用可能會在聲明QTextToSpeech變量的時候?qū)е鲁绦虮罎ⅰ?/p>
Win7下如果TTS引擎不可用,可能是使用的系統(tǒng)不是完整版的,可以使用軟件進行修復(fù)。
上述代碼不一定能正確的朗讀出內(nèi)容,根據(jù)語言的不同,有可能還需要設(shè)置QTextToSpeech的語言、朗讀人聲等。有關(guān)的方法有setLocale和setVoice,還可以設(shè)置朗讀速率、音調(diào)等。
測試中發(fā)現(xiàn)不能正確朗讀的情況:設(shè)置了Voice為Chinese的時候,中文能正確朗讀,英文只能朗讀出字符而不能朗讀出單詞;設(shè)置了Voice為非Chinese的時候,英文可以正確朗讀,中文全部跳過。
這里主要提了一些可能出現(xiàn)的問題。因為該類沒有太多的成員和函數(shù),調(diào)用不會很復(fù)雜,具體學(xué)習(xí)可以參考QT自帶的例子。
到此這篇關(guān)于QT5實現(xiàn)TTS文本語音朗讀功能的文章就介紹到這了,更多相關(guān)QT文本朗讀內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++ EasyX學(xué)習(xí)之鼠標(biāo)操作詳解
EasyX是針對C/C++的圖形庫,可以幫助使用C/C++語言的程序員快速上手圖形和游戲編程。本文將為大家詳細講講EasyX的鼠標(biāo)操作,需要的可以參考一下2022-07-07C++實現(xiàn)簡單校園導(dǎo)游系統(tǒng)
這篇文章主要為大家詳細介紹了C++實現(xiàn)簡單校園導(dǎo)游系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03Matlab制作視頻并轉(zhuǎn)換成gif動態(tài)圖的兩種方法
這篇文章主要介紹了Matlab制作視頻并轉(zhuǎn)換成gif動態(tài)圖的兩種方法,第一種方法使用movie(f)直接取生成AVI視頻文件,相對來說比較簡單,需要的朋友可以參考下2018-08-08VisualStudio2022不支持.NET Framework 4.0項目解決辦法
本文主要介紹了VisualStudio2022不支持.NET Framework 4.0項目解決辦法,文中通過圖文的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-09-09Visual C++ 常用數(shù)據(jù)類型轉(zhuǎn)換方法詳解
本文純粹是總結(jié)一下有關(guān)類型轉(zhuǎn)換的貼子,需要的朋友可以參考下2017-06-06Qt物聯(lián)網(wǎng)管理平臺之實現(xiàn)告警短信轉(zhuǎn)發(fā)
系統(tǒng)在運行過程中,會實時采集設(shè)備的數(shù)據(jù),當(dāng)采集到的數(shù)據(jù)發(fā)生報警后,可以將報警信息以短信的形式發(fā)送給指定的管理員。本文將利用Qt實現(xiàn)告警短信轉(zhuǎn)發(fā),感興趣的可以嘗試一下2022-07-07C++中使用vector存儲并遍歷數(shù)據(jù)的基本步驟
C++標(biāo)準模板庫(STL)提供了多種容器類型,包括順序容器、關(guān)聯(lián)容器、無序關(guān)聯(lián)容器和容器適配器,每種容器都有其特定的用途和特性,這篇文章主要介紹了C++中使用vector存儲并遍歷數(shù)據(jù)的基本步驟,需要的朋友可以參考下2025-01-01