本页内容

Qt TextToSpeech 引擎

Qt TextToSpeech 支持多种针对不同平台的引擎实现,这些实现功能、可用性和运行时开销之间存在不同的权衡。

可以在构造 `QTextToSpeech ` 实例时选择引擎,也可以通过设置已实例化对象的 `engine ` 属性来选择引擎。如果未指定引擎,则将使用当前平台的首选引擎。 调用availableEngines()可获取当前系统上可用的引擎列表。该列表将包含一个用于测试的“模拟”引擎,该引擎不应部署到目标系统上。

在设置引擎时,应用程序可以传递一个包含引擎特定参数键值对的QVariantMap 对象给引擎。以下各节列出了每个引擎支持的配置参数。引擎不支持的参数将被静默忽略。

WinRT

“winrt”引擎使用Windows.Media.SpeechSynthesis 命名空间中的 API。它需要最新的 Windows SDK,且在使用 MinGW 编译器时不可用。该引擎提供对当前 Windows 版本中所有可安装语音的访问权限。

该实现使用QAudioSink 中的 Qt Multimedia 中的xml-ph-0000@deepl.internal,将合成器生成的PCM数据流播放到音频设备。

名称类型备注
audioDeviceQAudioDevice

SAPI

“sapi”引擎使用 Windows SDK 中包含的SAPI 5.3框架。它提供的声音选择有限,与“winrt”引擎相比,音质较低。

SAPI 引擎不支持任何引擎特有的参数。

Darwin

“darwin”引擎使用 iOS 设备和 macOS 10.15 上提供的AVFoundation框架。该框架的文档中也提到了对 macOS 10.14 的支持,但默认情况下该平台上没有可用的语音。

Darwin引擎不支持任何引擎特定的参数。

Android

“android”引擎是 Android 平台上唯一可用的引擎。它使用TextToSpeech软件包,该软件包支持多种引擎后端。

注意: “android”引擎不具备PauseResume 功能。

名称类型备注
androidEngineQStringQt 中没有用于获取已安装引擎列表的 API。

HarmonyOS

HarmonyOS 引擎使用Core Speech Kit的文本转语音 API。系统引擎负责合成并播放语音。

Core Speech Kit引擎是为特定语言创建的,该语言由插件设置为zh-CN 。如createEngine()文档所述,仅支持中文和英语,建议中文使用zh-CN ,英语使用en-US 。

注意:HarmonyOS引擎 仅具备Speak 功能,不支持PauseResume 、WordByWordProgress 和Synthesize 。

Flite

“flite”引擎使用flite合成器。该引擎占用空间小,因此特别适用于嵌入式环境。该插件要求至少使用 Flite 2.2 版本,并使用QAudioSink 中的 Qt Multimedia 来渲染生成的PCM数据流。

引擎插件会在LD_LIBRARY_PATH 环境变量所列的目录中搜索语音库,若未找到,则会回退到搜索常用库位置,例如/usr/lib 、/usr/lib64 和/usr/lib/x86_64-linux-gnu 。

如果将 Flite 作为静态库使用,则所需的声音库也需静态链接到引擎插件中。目前在配置 Qt 时,尚未实现用于选择此类声音库的构建系统 API。

名称类型备注
audioDeviceQAudioDevice

speech-dispatcher

“speechd”引擎与speech-dispatcher守护进程进行通信,并至少需要 libspeechd 0.9 版本。

注意: speech-dispatcher 引擎不具备WordByWordProgress 或Synthesize 功能。

speech-dispatcher 引擎不支持任何引擎特定参数。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.