QT + TTS文字朗读[亲测有效]

QT + TTS文字朗读[亲测有效]TTS引擎下载与安装。Windows Speech SDK可以在微软的官网上免费下载,下载地址为:见原文链接。

欢迎大家来到IT世界,在知识的湖畔探索吧!

TTS(Text-To-Speech)是指文本转语音的英文简称,即通过TTS引擎把文本转化为语音输出。本文将讲述如何在QT中使用TTS引擎,先看成品。

QT + TTS文字朗读[亲测有效]

TTS 文字朗读

1. TTS引擎下载与安装

Windows Speech SDK可以在微软的官网上免费下载,下载地址为:http://www.microsoft.com/download/en/details.aspx?id=10121

进入微软下载页面后,如下图所示,点击【Download】。

QT + TTS文字朗读[亲测有效]

下载网站

勾选“SpeechSDK51.exe”和“SpeechSDK51LangPack.exe”,然后点击【Next】下载文件。

QT + TTS文字朗读[亲测有效]

选择下载文件

SpeechSDK51.exe是简体中文语音引擎,SpeechSDK51LangPach.exe是中文男生语音库。

先安装SpeechSDK51.exe,再安装SpeechSDK51LangPach.exe。

都安装完成后,在【控制面板】搜索“语音”,如下图所示。

QT + TTS文字朗读[亲测有效]

在控制面板搜索“语音“

点击“更改文本到语音转换设置”,弹出如下界面。

QT + TTS文字朗读[亲测有效]

测试TTS安装是否成功

点击“预听语音(P)”,如果可以听见朗读声音,恭喜你!安装成功了。

最后,添加系统变量,如下图所示。

QT + TTS文字朗读[亲测有效]

添加系统变量

2. QT工程配置

用VS创建一个QT应用程序工程,配置如下3张图。

QT + TTS文字朗读[亲测有效]

工程C/C++设置

QT + TTS文字朗读[亲测有效]

工程链接lib路径设置

QT + TTS文字朗读[亲测有效]

工程链接lib配置

3. QT核心代码

//QTTS.h
#pragma once

#include <QObject>
#include <QAxObject>

class QTTS : public QObject
{
    Q_OBJECT

public:
    QTTS(QObject *parent = Q_NULLPTR);
    ~QTTS();

    bool speak(const QString &txt);
    void pause();
    void resume();
    void stop();

    quint16 getVolume();
    void setVolume(quint16 volume);

private:
    bool initSpeech();

private:
    QAxObject *m_pVoice;
    bool m_bInit;
    bool _bReading;
};

欢迎大家来到IT世界,在知识的湖畔探索吧!

欢迎大家来到IT世界,在知识的湖畔探索吧!//QTTS.cpp
#include "QTTS.h"
#include <sapi.h>


QTTS::QTTS(QObject *parent)
    : QObject(parent)
{
    m_bInit = 0;
    m_pVoice = Q_NULLPTR;
}

QTTS::~QTTS()
{
}

bool QTTS::initSpeech()
{
    if (m_bInit)
        return true;

    if (m_pVoice == Q_NULLPTR)
    {
        m_pVoice = new QAxObject();
    }
    m_bInit = this->m_pVoice->setControl("96749377-3391-11D2-9EE3-00C04F797396");

    return m_bInit;
}
 
bool QTTS::speak(const QString &txt)
{
    if (!m_bInit)
    {
        initSpeech();
    }

    return this->m_pVoice->dynamicCall("Speak(QString, SpeechVoiceSpeakFlags)", txt, SPF_ASYNC).toInt();
}

void QTTS::pause()
{
    if (!m_bInit)
        return;

    this->m_pVoice->dynamicCall("Pause()");
}

void QTTS::resume()
{
    if (!m_bInit)
        return;

    this->m_pVoice->dynamicCall("Resume()");
}

void QTTS::stop()
{
    if (!m_bInit)
        return;
    
    this->m_pVoice->dynamicCall("Speak(QString, SpeechVoiceSpeakFlags)", "", 2).toInt();
}

quint16 QTTS::getVolume()
{   
    return this->m_pVoice->property("Volume").toInt();
}

void QTTS::setVolume(quint16 volume)
{
    if (!m_bInit)
        return;

    this->m_pVoice->dynamicCall("SetVolume(int)", volume);
}

4. 接口调用

QString str = QString::fromLocal8Bit("如何在QT中使用TTS引擎?你的程序猿大叔马上讲解!");
QTTS tts;
Tts.speak(str);

5. 提升

点赞 & 关注你的程序猿大叔,带你提升战斗力!更想了解哪个方面的知识点,私信我!

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/17761.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信