TextToSpeech QML 类型
TextToSpeech 类型提供了对文本转语音引擎的访问。 更多...
导入语句 | import QtTextToSpeech |
属性
- engine : 字符串
- engineCapabilities : 枚举
(自 6.6)
- engineParameters : 映射
- locale : 区域设置
- pitch : 双精度
- rate : 双精度
- state : 枚举
- voice : 声音
- volume : 双精度
信号
- aboutToSynthesize(数字 id)
(自 6.6)
- void errorOccurred(枚举 reason,字符串 errorString)
- sayingWord(字符串 word,整数 id,整数 start,整数 length)
(自 6.6)
方法
- list<string> availableEngines()
- list<Voice> availableLocales()
- list<Voice> availableVoices()
- enqueue(字符串 utterance)
(自 6.6)
- 枚举 errorReason()
- 字符串 errorString()
- list<voice> findVoices(映射 criteria)
(自 6.6)
- pause(BoundaryHint boundaryHint)
- resume()
- say(字符串 text)
- stop(BoundaryHint boundaryHint)
详细描述
使用 say() 开始读取文本至默认音频设备,使用 stop(),pause() 和 resume() 来控制文本的读取。
TextToSpeech { id: tts volume: volumeSlider.value pitch: pitchSlider.value rate: rateSlider.value ... RowLayout { Button { text: qsTr("Speak") enabled: [TextToSpeech.Paused, TextToSpeech.Ready].includes(tts.state) onClicked: { tts.say(input.text) } } Button { text: qsTr("Pause") enabled: tts.state == TextToSpeech.Speaking onClicked: tts.pause() visible: tts.engineCapabilities & TextToSpeech.Capabilities.PauseResume } Button { text: qsTr("Resume") enabled: tts.state == TextToSpeech.Paused onClicked: tts.resume() visible: tts.engineCapabilities & TextToSpeech.Capabilities.PauseResume } ...
要将文本合成到 PCM 数据以进行进一步处理,请使用 synthesize()。
要设置语音,请使用类似这样的附件属性 VoiceSelector
TextToSpeech { VoiceSelector.locale: Qt.locale("en_UK") VoiceSelector.gender: Voice.Male }
将使用符合所有指定条件的第一个语音。如果没有语音符合所有条件,则语音将不会改变。
或者,使用 findVoices() 获取匹配语音的列表,或者使用 availableVoices() 获取支持当前区域的语音列表。更改 locale 属性,使用其中一个与输入文本所在语言和所需语音输出的口音良好匹配的 availableLocales()。这将更改大多数平台上的可用语音列表。然后使用 voice 属性中的可用语音之一。
并非每个引擎都支持所有功能。使用 engineCapabilities() 函数测试哪些功能可用,并根据类型相应调整使用。
注意:引擎支持的区域和语音通常取决于操作系统配置。例如,在 macOS 上,最终用户可以通过“系统偏好设置”中的 辅助功能 面板安装语音。
属性文档
engineCapabilities : enumeration |
engineParameters : map |
此属性包含引擎特定参数。
另请参阅 engine.
locale : locale |
pitch : double |
此属性包含语音音调,范围从 -1.0 到 1.0。
默认值为 0.0,是正常语音音调。
rate : double |
此属性包含当前语音速度,范围从 -1.0 到 1.0。
默认值为 0.0,是正常语音流速度。
state : enumeration |
此属性包含语音合成器的当前状态。
onStateChanged: updateStateLabel(state) function updateStateLabel(state) { switch (state) { case TextToSpeech.Ready: statusLabel.text = qsTr("Ready") break case TextToSpeech.Speaking: statusLabel.text = qsTr("Speaking") break case TextToSpeech.Paused: statusLabel.text = qsTr("Paused...") break case TextToSpeech.Error: statusLabel.text = qsTr("Error!") break } }
另请参阅 QTextToSpeech::State、say、stop 和 pause。
voice : Voice |
volume : double |
此属性包含当前音量,范围从 0.0 到 1.0。
默认值是平台的默认音量。
信号文档
|
void errorOccurred(enumeration reason, string errorString) |
当错误发生并且 state 被设置为 TextToSpeech.Error
时,将发出此信号。参数 reason 指定错误的类型,而 errorString 提供了可读的错误描述。
注意:相应的处理函数是 onErrorOccurred
。
另请参阅:state、errorReason() 以及 errorString。
|
当表示为 id 的语音中指定的文本片段(由 start 和 length 指示)的 word 被播放到音频设备时,发出此信号。
注意:此信号需要引擎具有 WordByWordProgress 功能。
以下代码突出显示了在 TextArea input
中发音的单词。
onSayingWord: (word, id, start, length)=> { input.select(start, start + length) }
注意:相应的处理函数是 onSayingWord
。
此信号在 Qt 6.6 中引入。
另请参阅:QTextToSpeech::Capability 和 say。
方法说明
list<string> availableEngines() |
包含支持的语音合成引擎插件列表。
list<Voice> availableLocales() |
包含活动 engine 支持的区域列表。
list<Voice> availableVoices() |
包含当前 locale 可用的语音列表。
|
将 utterance 添加到待说的文本队列中,并开始说话。
如果引擎的 state 目前是 Ready
,则将立即说出 utterance。否则,引擎将完成当前文本的说话后开始说话 utterance。
每次引擎处理到队列中的下一个文本项时,都会发出 aboutToSynthesize() 信号。这允许应用程序跟踪进度并可以对语音属性进行最后的更改。
调用 stop() 清除队列。
此方法在 Qt 6.6 中引入。
另请参阅 say(),stop(),以及aboutToSynthesize()。
枚举 errorReason() |
返回引擎报告错误的原因。
string errorString() |
返回当前引擎的错误信息。
|
返回匹配所有指定criteria的声音列表。
criteria是从声音属性名到属性值的映射,支持组合搜索条件,例如
let daniel = tts.findVoices({ "name": "Daniel" }) let maleEnglish = tts.findVoices({ "gender": Voice.Male, "language": Qt.locale('en') })
此方法在 Qt 6.6 中引入。
另请参阅 VoiceSelector。
pause(BoundaryHint boundaryHint) |
在boundaryHint处中止当前语音。
boundaryHint是否被尊重取决于engine。
另请参阅 resume(),QTextToSpeech::BoundaryHint,以及PauseResume。
say(string text) |
开始合成text。
此函数开始异步合成语音,并将文本读取到默认音频输出设备。
RowLayout { Button { text: qsTr("Speak") enabled: [TextToSpeech.Paused, TextToSpeech.Ready].includes(tts.state) onClicked: { tts.say(input.text) } }
注意: 在开始读取最近合成的文本之前,将停止所有进行中的读取。
当前状态可以用state属性查看,并在读取开始时设置为QTextToSpeech::Speaking。当读取完成后,state将设置为QTextToSpeech::Ready。
stop(BoundaryHint boundaryHint) |
在boundaryHint处停止当前阅读,并清除等待文本队列。
阅读无法继续。是否尊重boundaryHint取决于引擎。
另请参阅 say,enqueue,pause,以及QTextToSpeech::BoundaryHint。
© 2024 The Qt Company Ltd。此处包含的文档贡献是各自所有者的版权。此处提供的文档是根据自由软件基金会的GNU自由文档许可版本1.3条款许可的。Qt和相应的徽标是芬兰的Qt公司以及其他国家和地区商标。