Qt 文本到语音引擎

Qt TextToSpeech 支持多个针对不同平台的引擎实现,并在功能、可用性和运行时成本之间做出权衡。

在创建 QTextToSpeech 实例时可以选择引擎,或者在已实例化的对象中通过设置 engine 属性来选择。如果没有指定引擎,将使用当前平台的推荐引擎。通过调用 availableEngines() 获取可以在当前系统上使用的引擎列表。这将包括用于测试的“模拟”引擎,不应部署到目标系统。

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

WinRT

"winrt" 引擎使用来自 Windows.Media.SpeechSynthesis 命名空间 的 API。它需要一个较新的 Windows SDK,并且在使用 MinGW 编译器时不可用。该引擎提供对所有可安装在当前 Windows 版本的语音的访问。

实现使用来自 Qt MultimediaQAudioSink 来播放由合成器生成的 PCM 数据流到音频设备。

名称类型备注
audioDeviceQAudioDevice

SAPI

"sapi" 引擎使用包含在 Windows SDK 中的 SAPI 5.3 框架。它提供的语音选择有限,与 "winrt" 引擎相比质量降低。

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

Darwin

"darwin" 引擎使用在 iOS 设备和 macOS 10.15 上可用的 AVFoundation 框架。该框架的文档声明支持 macOS 10.14,但默认情况下该平台没有提供任何语音。

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

macOS

"macos" 引擎使用来自 AppKit 的 NSSpeechDispatcher 框架。它仅在 macOS 系统上可用,但在 macOS 10.14 上无需额外配置即可工作。可用的语音数量与 iOS 引擎相比有限。

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

注意: "macos" 引擎不具有 Synthesize 功能。 "darwin" 引擎是 Qt 在所有支持的 macOS 和 iOS 系统上的默认和首选引擎。 macOS 引擎不应再使用,并将在 Qt 6.8 中移除。

Android

"android" 引擎是 Android 平台上可用的唯一引擎。它使用 TextToSpeech 包,该包支持多个引擎后端。

注意: "android" 引擎不具有 PauseResume 功能。

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

Flite

"flite" 引擎使用 flite 合成器。引擎的小体积使其特别适用于嵌入式环境。该插件至少需要 Flite 2.2,并使用来自 Qt MultimediaQAudioSink 来渲染生成的 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 引擎不具有 WordByWordProgressSynthesize 功能。

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

© 2024 Qt 公司有限。其中包括各自所有者的文档贡献的版权。此处提供的文档根据自由软件基金会发布的 GNU 自由文档许可证 1.3 版本 的条款许可。Qt 和相关商标是芬兰及/或世界各地的 The Qt Company Ltd. 的 商标。所有其他商标均属于其各自所有者。