前言

最近参与一个项目,已经处于收尾阶段,谁知突然又冒出一个提示音的需求,而产品经理又异想天开,直接读语音(老天,早说啊)。还好Qt有文本转语音模块,使用方法也不复杂。本次记录,笔者在win10下的测试

一、封装一个最简单的文本转语音类

笔者需要说明下,若是使用中文系统,QTextToSpeech默认会设置成支持中文的,而笔者是英文系统,所以需要增加一些设置

class Tool_Speech : public QObject
{Q_OBJECT
public:explicit Tool_Speech(QObject *parent = nullptr);//可以从Qml中调用Q_INVOKABLE void speak(const QString text);
signals:private:QTextToSpeech *m_speech = nullptr;
};

类的头文件很简单,只是留了一个函数,以便在qml中调用

Tool_Speech::Tool_Speech(QObject *parent): QObject{parent}
{m_speech = new QTextToSpeech(this);//需要选择中国const QVector<QLocale> locales = m_speech->availableLocales();
//    qDebug()<<"locale"<<locales;for (const QLocale &locale : locales) {if(locale.country() == QLocale::China){m_speech->setLocale(locale);break;}}
//先选择女声吧const QVector<QVoice> voices = m_speech->availableVoices();
//    qDebug()<<"voices" <<voices;for (QVoice voice : qAsConst(voices)) {
//        qDebug()<<"voice" <<voice.name()
//               <<QVoice::genderName(voice.gender())
//              <<QVoice::ageName(voice.age());if(voice.gender() == QVoice::Female){m_speech->setVoice(voice);break;}}qDebug()<<m_speech<<m_speech->locale();
//以下是测试用的,乱敲的m_speech->say("高耸,高峻。女(汝)死必于崤之岩崟之下。");
}void Tool_Speech::speak(const QString text)
{m_speech->say(text);
}

因为笔者是英文系统,且安装了中文包,首先需要选中国,若没安装中文包,可能不会出现中国选择;

笔者测试发现,选择中文包后,只有成年女声,好吧没得先。笔者没有找到修改性别和年龄段的地方,应该是系统中没有吧

以上修改完成后,就可以使用QTextToSpeech::say()来读文本了

注:若遇到不支持的语言,是不会读的,直接跳到下一句

二、其他可供调节的参数

1.QTextToSpeech::pause()

在指定的边界位置暂停,这个位置可以是如下值:

  • QTextToSpeech::BoundaryHint::Default0Uses 引擎的默认值
  • QTextToSpeech::BoundaryHint::Immediate 立即停下
  • QTextToSpeech::BoundaryHint::Word 读完当前的词组再停下
  • QTextToSpeech::BoundaryHint::Sentence 读完当前这句话再停下

2.QTextToSpeech::resume()

暂停后,可恢复阅读

3.QTextToSpeech::stop()

在指定的边界位置停止阅读,参数同暂停

4.setPitch(double pitch)

调节音高,取值范围为-1.0到1.0

越小声音越低沉,越大声音再尖锐

5.setRate(double rate)

调节阅读速度,取值范围为-1.0到1.0

6.setVolume(double volume)

调节阅读声音大小,取值范围为0.0到1.0

后记

Qt6.4版本还未发布,但文本转语音模块已经回归,笔者在win10下测试了Qt6.4的beta3版本。 引擎又增加了一个(不支持中文),还出现了Qml导入(当前无法使用),期待正式版的发布

PS.Qt6.4版本,示例加载已默认使用CMake了

使用Qt的文本转语音模块相关推荐

  1. qt linux 文字转语音,QT文本转语音模块(TTS)QTextToSpeech

    QTextToSpeech是QT5.8以上的文本转语音模块. 使用方法: 在.pro工程文件中添加"QT += texttospeech". 添加头文件 #include 源文件: ...

  2. QT文本转语音模块(TTS)QTextToSpeech

    QTextToSpeech是QT5.8以上的文本转语音模块. 使用方法: 在.pro工程文件中添加"QT += texttospeech". 添加头文件 #include < ...

  3. Qt Creator文本

    Qt Creator文本 文本 使用富文本 版式 文字对齐 文字和样式颜色 进阶文字属性 高级字体属性 开发人员文字属性 文字输入 填充 文字组成部分摘要 文本 您可以使用几种不同的文本类型将只读或可 ...

  4. QT给文本添加链接事件

    参考自: https://blog.csdn.net/humanking7/article/details/80685893 说明 Qt的文本窗体部件能够显示富文本,使用HTML4 标记.能够以这种方 ...

  5. Qt富文本编辑器QTextDocument

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:Qt富文本编辑器QTextDocument     本文地址:https://www.tech ...

  6. QT限制文本框输入的方法

    QT限制文本框输入的方法 界面编程的时候,对文本框的处理往往是个很头疼的事情: 一是焦点进入文本框时,从人性化考虑,应选择文本框中文本,方便输入: 二是,限制文本框的输入,只允许输入有效的文本,如果不 ...

  7. Qt 多文本框设置行距和

    Qt 多文本框设置行距和间距在这里插入代码片 QTextDocument *document = ui->textEdit->document(); //获取文档对象 QTextFrame ...

  8. Qt开发技术:Qt富文本(三)Qt支持的HTML子集(查询手册)以及涉及的类

    若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.csdn.net/qq21497936 原博主博客导航:https://blog.csdn.net/qq21497936/ ...

  9. Qt开发技术:Qt富文本(一)富文本介绍、文档结构

    若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.csdn.net/qq21497936 原博主博客导航:https://blog.csdn.net/qq21497936/ ...

最新文章

  1. 前端传值给后台的若干种方式
  2. 【Android Studio快捷键】之导入对应包声明(import packages)
  3. python2018上海脱产_python接口自动化27-urlencode编码%E6%82%A0%E6%82%A0与解码
  4. 比亚迪汉鸿蒙系统测评_华为正式进军汽车领域!鸿蒙OS车机系统加持:帮助更多车企quot;造好车quot;...
  5. 使用WSO2 ESB构建制造服务总线(MSB)
  6. 华为鸿蒙话题作文800字,关于鸿蒙OS 华为最高层发布最新通知:统一口径-华为,智能手机,鸿蒙...
  7. python升级到最新版本windows64位安装哪个包_手把手windows64位配置安装python2.7
  8. R7-8 魔法优惠券 (25 分)
  9. 查看你所使用计算机的网卡信息,查看网卡信息命令
  10. 无线技术网络导论--期末复习指导
  11. Python实现求二阶行列式
  12. 成品、预售、老店翻新、教练:邀约话术(绝干干货)-健身房管理系统结捷径系统
  13. QObject::connect: Cannot connect QTimer::timeout() to (null)::fuction()
  14. 正运动控制器编程出现错误后,修改后,错误还在。
  15. UI设计—软件包装设计
  16. IP数据报的检验(计算机网络)
  17. 用Python获取公众号阅读数、点赞数。
  18. 【驱动保护】某P的内存降权
  19. 电脑自动配置了两个IP4解决方法
  20. 拯救湖心的风筝(一道趣味平面几何问题)

热门文章

  1. Java基础-Scanner类
  2. 笔记:TGS Salt Identification Challenge
  3. 炼金术(5): 区分前端开发/客户端开发/后端开发/核心开发
  4. 远程桌面访问出错解决方案
  5. MOS管之开关控制与信号控制
  6. sugar手机UI细节
  7. 基于华为云obs实现文件上传下载(技术栈mysql+springboot+Maven+jsp+java)的技术分享
  8. 计算机视觉数据集处理
  9. u盘安装linux设置密码,U盘安装centos7.6步骤详细方案(图文教程)
  10. 元宇宙爆发增长,代币成为了变现必备媒介