• 728阅读
  • 2回复

Qt 6.6 里的 QTextToSpeech [复制链接]

上一主题 下一主题
离线20091001753
 

只看楼主 倒序阅读 楼主  发表于: 2023-10-01
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 Demo
http://www.qtcn.org/bbs/read-htm-tid-91855.html
(づ ̄ 3 ̄)づ
在线lixinwei

只看该作者 1楼 发表于: 2023-10-02
multimedia里面有ffmpeg,所以dll很大,但ffmpeg是插件(ffmpegmediaplugin.dll),删了就行,windowsmediaplugin.dll 应该也能用
运行windeployqt之后,用不到的插件都可以删除

离线angelus

只看该作者 2楼 发表于: 2023-10-05
Qt6Multimedia我这边的dll才826K,不到1M,也是6.6rc
快速回复
限100 字节
 
上一个 下一个