C 语言

关注公众号 jb51net

关闭
首页 > 软件编程 > C 语言 > QT文本朗读

QT5实现TTS文本语音朗读功能

作者:恋恋西风

TTS 语音朗读 是开发中常用的功能,Qt已经给封装完成,我们只需要调用即可,本文就为大家介绍了QT5如何调用实现文本朗读功能的,需要的可以参考一下

TTS 语音朗读 是开发中常用的功能,Qt已经给封装完成,我们只需要调用;

效果图:

新建 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以上的文本转语音模块。

使用方法:

在.pro工程文件中添加“QT += texttospeech”。

添加头文件 #include

源文件:

QTextToSpeech *tts =
new QTextToSpeech(this);
if(tts->state()==QTextToSpeech::Ready)
{
tts->say(
"hello world");
}

在linux下,它是调用speech-dispatcher。在其它不同的平台上,调用各自平台的TTS引擎。所以在使用的时候,要确保本地的TTS引擎是可用的。

本地TTS引擎不可用可能会在声明QTextToSpeech变量的时候导致程序崩溃。

Win7下如果TTS引擎不可用,可能是使用的系统不是完整版的,可以使用软件进行修复。

上述代码不一定能正确的朗读出内容,根据语言的不同,有可能还需要设置QTextToSpeech的语言、朗读人声等。有关的方法有setLocale和setVoice,还可以设置朗读速率、音调等。

测试中发现不能正确朗读的情况:设置了Voice为Chinese的时候,中文能正确朗读,英文只能朗读出字符而不能朗读出单词;设置了Voice为非Chinese的时候,英文可以正确朗读,中文全部跳过。

这里主要提了一些可能出现的问题。因为该类没有太多的成员和函数,调用不会很复杂,具体学习可以参考QT自带的例子。

到此这篇关于QT5实现TTS文本语音朗读功能的文章就介绍到这了,更多相关QT文本朗读内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文