QTextToSpeech 能让程序能朗读一段文字,常见于需要提醒用户某些事项的时候。
Qt 6.6 对 QTextToSpeech 有两处重大的升级。
https://www.qt.io/blog/qt-texttospeech-improvements-in-qt-6.6 这些升级能从已经发布的 6.6 rc 里体验了。
升级一: QTextToSpeech::synthesize 它的功能,就是能将文字转成PCM音频
数据,让你可以保存,实现文字转音频
文件。注意,
仅部分tts引擎支持。
以Win11系统为例,
系统里有2个引擎:winrt(默认) 与 sapi。前者会报错,后者顺利。
但是,槽点来了:在先前的版本里,texttospeech 模块仅几百kb的dll;而现在需要实现音频相关功能,所以会依赖multimedia模块,约 16.5M 大小的dll,恐怖。
这么说吧,Qt6Gui + Qt6Widgets 他两dll加起来也才 14.6M。
升级二:QTextToSpeech::sayingWord 在朗读的过程中,会通过信号的形式,实时提示你朗读到的位置。注意,
仅部分tts引擎支持。
以Win11系统为例,系统里有2个引擎:winrt(默认) 与 sapi。前者不支持,后者支持。当然sapi也是分版本的,不确定先前win系统sapi是否支持sayingWord。
synthesize 也会触发 sayingWord,但并非严格对应。
TTS 引擎微软与安卓都有官方的TTS引擎,但
Linux缺少。
安卓官方TTS引擎就是谷歌TTS,而国内厂商一般内置科大讯飞TTS。
现在Qt内置了一个叫 mock 的跨平台 TTS 引擎,但目前无法正常使用,也许后续版本会跟上。
安卓平台1,目前支持 sayingWord 的安卓TTS有 三星、谷歌。(国内系统常见的科大讯飞TTS不支持)
2,三星TTS 的 sayingWord 是整句式,谷歌则能精确到正在朗读的词汇。
3,国产安卓使用谷歌tts(含华为)
http://www.qtcn.org/bbs/read-htm-tid-91859.html sayingWord Demohttp://www.qtcn.org/bbs/read-htm-tid-91855.html