class QTextToSpeech#

QTextToSpeech 类提供了对文本到语音引擎的方便访问。 更多

Inheritance diagram of PySide6.QtTextToSpeech.QTextToSpeech

摘要#

属性#

方法#

槽(slot)#

信号#

静态函数#

注释

本文档可能包含自动从C++翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译中的问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们

详细描述#

警告

本节包含自动从C++翻译到Python的代码片段,可能包含错误。

使用 say() 方法来启动使用默认音频设备朗读文本,以及使用 stop()pause()、和 resume() 来控制文本的朗读。

ui.speakButton.clicked.connect(m_speech, [this]{
    m_speech.say(ui.plainTextEdit.toPlainText())
})
ui.stopButton.clicked.connect(m_speech, [this]{
    m_speech.stop()
})
ui.pauseButton.clicked.connect(m_speech, [this]{
    m_speech.pause()
})
ui.resumeButton.clicked.connect(m_speech.resume)

为了将文本合成成PCM数据以进行进一步处理,请使用 synthesize() 方法。

使用 findVoices() 获取匹配语音的列表,或者使用 availableVoices() 获取支持当前区域设置的语音列表。更改 locale 属性,使用 availableLocales() 中的一个与输入文本的语言以及所需语音输出的口音相匹配的区域设置。这将更改大多数平台上的可用语音列表。然后在一个调用中指定这些可用语音之一来使用 setVoice() 方法。

不是每个引擎都支持所有功能。使用 engineCapabilities() 函数来测试哪些功能是可用的,并相应地调整类的使用。

注释

引擎支持的区域设置和语音通常取决于操作系统配置。例如,在macOS上,最终用户可以通过在 系统偏好设置 中的 辅助功能 面板中安装语音。

class State#

此枚举描述了文本到语音引擎的当前状态。

常量

描述

QTextToSpeech.Ready

合成器准备开始新的文本。这也是在文本完成后所处的状态。

QTextToSpeech.Speaking

正在朗读文本。

QTextToSpeech.Synthesizing

正在将文本合成到PCM数据。合成数据时将会发射 synthesize() 信号。

QTextToSpeech.Paused

合成已被暂停,可以使用 resume() 方法恢复。

QTextToSpeech.Error

发生错误。错误详情由 errorReason() 方法提供。

class ErrorReason#

这个枚举描述了当前 QTextToSpeech 引擎的任何错误。

常量

描述

QTextToSpeech.ErrorReason.NoError

未发生错误。

QTextToSpeech.ErrorReason.Initialization

后端无法初始化,例如由于缺少驱动程序或操作系统要求。

QTextToSpeech.ErrorReason.Configuration

提供的后端配置不一致,例如由于错误的语音名称或参数。

QTextToSpeech.ErrorReason.Input

提供的文本无法被合成,例如由于无效的大小或字符。

QTextToSpeech.ErrorReason.Playback

音频播放失败,例如由于缺少音频设备,格式错误或音频流中断。

使用 errorReason() 获取当前错误,使用 errorString() 获取相关错误信息。

另请参阅

errorOccurred()

class BoundaryHint#

描述何时停止和暂停语音。

常量

描述

QTextToSpeech.BoundaryHint.Default

使用特定引擎的默认行为。

QTextToSpeech.BoundaryHint.Immediate

引擎应立即停止播放。

QTextToSpeech.BoundaryHint.Word

当前单词完成后停止语音。

QTextToSpeech.BoundaryHint.Sentence

当前句子完成后停止语音。

QTextToSpeech.BoundaryHint.Utterance

当前语音完成时停止语音。语音是用于 say()enqueue() 调用的文本块。

注释

这些是对引擎的提示。当前的引擎可能不支持所有选项。

class Capability#

这个枚举描述了文本语音引擎的能力。

常量

描述

QTextToSpeech.Capability.None

(继承自 enum.Flag) 引擎不实现任何功能。

QTextToSpeech.Capability.Speak

引擎可以播放从文本中输出的音频。

QTextToSpeech.Capability.PauseResume

引擎可以暂停并恢复音频输出。

QTextToSpeech.Capability.WordByWordProgress

引擎对每个被说出的单词发出 sayingWord() 信号。

QTextToSpeech.Capability.Synthesize

引擎可以将来自文本的PCM音频数据进行合成。

另请参阅

engineCapabilities()

6.6版本中引入。

class SynthesizeOverload#

注释

当使用 from __feature__ import true_property 时可以直接使用属性,否则通过访问器函数来使用。

属性 引擎: str#

此属性存储用于将文本合成为语音的引擎。

更改引擎将停止任何正在进行的语音。

在大多数平台上,更改引擎将更新可用地区可用语音列表。

访问函数
属性 引擎功能: QDBusConnection.ConnectionCapability的组合#

此属性存储当前引擎实现的功能。

另请参阅

engine

访问函数
属性 区域: QLocale#

此属性存储当前使用的区域。

默认情况下,使用系统区域。

在某些平台上,更改区域将更新可用语音列表,并且如果当前语音在新区域不可用,将设置一个新语音。

另请参阅

voice findVoices()

访问函数
属性 音调: float#

此属性存储语音的音调,范围从 -1.0 到 1.0。

默认值 0.0 是正常语音音调。

访问函数
属性 速率: float#

此属性存储当前语音的速率,范围从 -1.0 到 1.0。

默认值为 0.0 是正常语音流。

访问函数
属性 状态: QTextToSpeech.State#

警告

本节包含自动从C++翻译到Python的代码片段,可能包含错误。

此属性包含语音合成器的当前状态。

def stateChanged(self, state):


    if state == QTextToSpeech.Speaking:
        ui.statusbar.showMessage(tr("Speech started..."))
        break
    elif state == QTextToSpeech.Ready:
        ui.statusbar.showMessage(tr("Speech stopped..."), 2000)
        break
    elif state == QTextToSpeech.Paused:
        ui.statusbar.showMessage(tr("Speech paused..."))
        break
    else:
        ui.statusbar.showMessage(tr("Speech error!"))
        break

    ui.pauseButton.setEnabled(state == QTextToSpeech.Speaking)
    ui.resumeButton.setEnabled(state == QTextToSpeech.Paused)
    ui.stopButton.setEnabled(state == QTextToSpeech.Speaking or state == QTextToSpeech.Paused)

使用 say() 以当前的 voicelocale 开始文本的合成。

访问函数
属性 声音: QVoice#

此属性包含将用于语音的声音。

该声音必须是系统能够使用的 voices available 之一。

在某些平台上,设置声音会改变其他声音属性,例如 localepitch 等。这些更改会触发信号的发出。

另请参阅

findVoices()

访问函数
属性 音量: float#

此属性包含当前音量,范围从 0.0 到 1.0。

默认值为平台的默认音量。

访问函数
__init__(engine[, parent=None])#
参数:
  • engine – str

  • parentQObject

从匹配参数 engine 的插件中加载语音合成引擎,并以 parent 的子项构造一个 QTextToSpeech 对象。

如果 engine 为空,则使用默认的引擎插件。默认引擎是平台特定的。

如果引擎初始化正确,则引擎的 state 将被设置为 Ready 。如果插件加载失败,或者引擎初始化失败,则引擎的 state 将被设置为 Error

另请参阅

availableEngines()

__init__([parent=None])
参数:

parentQObject

从默认引擎插件加载语音合成引擎,并以 parent 的子项构造一个 QTextToSpeech 对象。

默认引擎是平台特定的。

如果引擎初始化正确,则引擎的 state 将变为 Ready ;请注意,这可能会异步发生。如果插件加载失败,则 state 将设置为 Error

另请参阅

availableEngines()

__init__(engine, params[, parent=None])
参数:
  • engine – str

  • params - 以 .QString 类型为键,以 QVariant 类型为值的字典。

  • parentQObject

从匹配参数 engine 的插件中加载语音合成引擎,并以 parent 的子项构造一个 QTextToSpeech 对象,将 params 传递给引擎。

如果 engine 为空,则使用默认的引擎插件。默认引擎是平台特定的。在 params 中支持哪些键值对取决于引擎。有关详细信息,请参阅 引擎文档。不受支持的条目将被忽略。

如果引擎初始化正确,则引擎的 state 将被设置为 Ready 。如果插件加载失败,或者引擎初始化失败,则引擎的 state 将被设置为 Error

另请参阅

availableEngines()

aboutToSynthesize(id)#
参数:

id – int

此信号在引擎开始对 id 合成语音音频之前发出。该 id 是通过调用 enqueue() 返回的值。应用程序可以使用此信号对 voice 属性进行最后时刻的修改,或者追踪通过 enqueue() 入队文本的过程。

另请参阅

enqueue() synthesize() voice

allVoices(locale)#
参数:

localeQLocale

返回类型:

QVoice 列表

静态 availableEngines()#
返回类型:

字符串列表

获取支持的文本到语音引擎插件列表。

另请参阅

engine

availableLocales()#
返回类型:

QLocale 列表

返回当前活动的 engine 支持的区域列表。

另请参阅

availableVoices() findVoices()

availableVoices()#
返回类型:

QVoice 列表

返回当前 locale 可用的声音列表。

注释

如果没有设置区域,则使用系统区域。

另请参阅

availableLocales() findVoices()

engine()#
返回类型:

str

另请参阅

setEngine()

属性 engine 的获取器。

engineCapabilities()#
返回类型:

Capability 的组合。

engineChanged(engine)#
参数:

engine – str

属性 engine 的变化通知信号。

enqueue(text)#
参数:

text – str

返回类型:

int

utterance 添加到待读文本队列中,并开始朗读。返回文本在队列中的索引,发生错误时返回 -1。

如果引擎的 state 当前为 Ready,则立即朗读 utterance。否则,引擎将在完成当前文本的朗读后开始朗读 utterance

每当引擎进入队列中的下一个文本条目时,都会发出 aboutToSynthesize() 信号。这允许应用程序跟踪进度,并在最后时刻更改声音属性。

调用 stop() 清除队列。要在文本末尾暂停引擎,请使用 Utterance 边界提示。

另请参阅

say() stop() aboutToSynthesize() synthesize()

errorOccurred(error, errorString)#
参数:

当发生错误并将 状态 设置为 错误 之后,会发出这个信号。参数 reason 指定错误类型,而 errorString 提供了可读性强的错误描述。

ErrorReason 并不是一个已注册的元类型,因此对于队列连接,你将不得不使用 Q_DECLARE_METATYPE()qRegisterMetaType() 来注册它。

另请参阅

errorReason() errorString() 创建自定义Qt类型

errorReason()#
返回类型:

ErrorReason

返回引擎报告错误的原因。

另请参阅

状态 错误发生

errorString()#
返回类型:

str

返回当前引擎的错误消息。

另请参阅

errorOccurred()

locale()#
返回类型:

QLocale

另请参阅

setLocale()

属性 locale 的获取器。

localeChanged(locale)#
参数:

localeQLocale

属性 locale 的通知信号。

pause([boundaryHint=QTextToSpeech.BoundaryHint.Default])#
参数:

boundaryHintBoundaryHint

boundaryHint 处暂停当前的语音。

boundaryHint 的尊重程度取决于 engine

另请参阅

resume() PauseResume

pitching()#
返回类型:

float

另请参阅

setPitch()

属性 pitch 的获取器。

pitchChanged(pitch)#
参数:

pitch – float

属性 pitch 的通知信号。

rate()#
返回类型:

float

另请参阅

setRate()

属性 rate 的获取器。

rateChanged(rate)#
参数:

rate – float

属性 rate 的通知信号。

resume()#

在调用过 pause() 后,恢复说话。

注释

在 Android 上,恢复暂停的说话将从头开始。这是底层语音合成引擎的限制。

另请参阅

pause()

say(text)#
参数:

text – str

警告

本节包含自动从C++翻译到Python的代码片段,可能包含错误。

开始说话 text

此函数开始异步合成语音,并将文本读入默认音频输出设备。

ui.speakButton.clicked.connect(m_speech, [this]{
    m_speech.say(ui.plainTextEdit.toPlainText())
})

注释

在开始阅读新合成的文本之前,所有正在进行的阅读将被停止。

可以使用 state 属性获取当前状态,阅读开始时将被设置为 Speaking。阅读完成后,state 会被设置为 Ready

另请参阅

enqueue() stop() pause() resume() synthesize()

sayingWord(word, id, start, length)#
参数:
  • word – str

  • id – int

  • start – int

  • length – int

当文本切片 word 在utterance id中,从 startlength 被播放到音频设备时,该信号会被发射。

注释

此信号需要语音合成器拥有 WordByWordProgress 能力。

另请参阅

Capability say()

setEngine(engine[, params=QVariantMap()])#
参数:
  • engine – str

  • params - 以 .QString 类型为键,以 QVariant 类型为值的字典。

返回类型:

bool

将此 QTextToSpeech 对象使用的语音合成器设置为 engine,并通过构造函数将 params 传递给语音合成器。

返回是否成功设置 engine

params 中哪些键值对被支持取决于引擎。有关详细信息,请参阅 引擎文档。不支持的内容将被忽略。

另请参阅

engine()

setLocale(locale)#
参数:

localeQLocale

另请参阅

locale()

属性 localeᅟ 的设置器。

setPitch(pitch)#
参数:

pitch – float

另请参阅

pitch()

属性 pitchᅟ 的设置器。

setRate(rate)#
参数:

rate – float

另请参阅

rate()

属性 rateᅟ 的设置器。

setVoice(voice)#
参数:

voiceQVoice

另请参阅

voice()

设置属性 voice 的值。

setVolume(volume)#
参数:

volume – float

另请参阅

volume()

设置属性 volume 的值。

state()#
返回类型:

状态

获取属性 state 的值。

stateChanged(state)#
参数:

stateState

属性 state 的通知信号。

stop([boundaryHint=QTextToSpeech.BoundaryHint.Default])#
参数:

boundaryHintBoundaryHint

boundaryHint 处停止当前的朗读,并清除待处理文本的队列。

朗读不能恢复。是否遵守 boundaryHint 取决于引擎。

另请参阅

say() enqueue() pause()

voice()#
返回类型:

QVoice

另请参阅

setVoice()

获取属性 voice 的值。

voiceChanged(voice)#
参数:

voiceQVoice

属性 voice 的通知信号。

volume()#
返回类型:

float

另请参阅

setVolume()

获取属性 volume 的值。

volumeChanged(volume)#
参数:

volume – float

属性 volume 的通知信号。