QTextToSpeech Class

QTextToSpeech Class

成员函数 文档

[since 6.6] template void QTextToSpeech::synthesize(const QString &text, Functor &&functor)[since 6.6] template void QTextToSpeech::synthesize(const QString &text, const QObject *context, Functor &&functor)

将text 合成为原始音频数据。

该函数将语音异步合成为原始音频数据。当数据可用时,functor 将以functor(QAudioFormat format, QByteArray bytes) 的形式调用,format 描述bytes 中数据的format ;或以functor(QAudioBuffer &buffer) 的形式调用。

合成开始时,state 属性会被设置为Synthesizing ,合成完成后,则会被设置为Ready 。在合成过程中,functor 可能会被多次调用,可能会改变format 的值。

functor 可以是一个可调用函数,如 lambda 函数或自由函数,可选context 对象:

tts.synthesize("Hello world", [](const QAudioFormat &format, const QByteArray &bytes){

// process data according to format

});

或context 对象的成员函数:

struct PCMProcessor : QObject

{

void processData(const QAudioFormat &format, const QByteArray &bytes)

{

// process data according to format

}

} processor;

tts.synthesize("Hello world", &processor, &PCMProcessor::processData);

如果context 被销毁,那么functor 将不再被调用。

注意: 该 API 要求引擎具有Synthesize 功能。

此函数在 Qt 6.6 中引入。

另请参阅 say() 和stop()。

[explicit] QTextToSpeech::QTextToSpeech(QObject *parent = nullptr)

从使用默认引擎插件的插件中加载文本到语音引擎,并构建一个 QTextToSpeech 对象作为parent 的子对象。

默认引擎与特定平台有关。

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

另请参阅 availableEngines() 。

[explicit] QTextToSpeech::QTextToSpeech(const QString &engine, QObject *parent = nullptr)

从符合参数engine 的插件中加载文本到语音引擎,并构造一个 QTextToSpeech 对象作为parent 的子对象。

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

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

另请参阅 availableEngines() 。

[explicit, since 6.4] QTextToSpeech::QTextToSpeech(const QString &engine, const QVariantMap ¶ms, QObject *parent = nullptr)

从符合参数engine 的插件中加载文本到语音引擎,并构造一个 QTextToSpeech 对象作为parent 的子对象,将params 传递给引擎。

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

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

此函数在 Qt 6.4 中引入。

另请参阅 availableEngines() 。

[override virtual noexcept] QTextToSpeech::~QTextToSpeech()

销毁QTextToSpeech 对象,停止任何发言。

[signal, since 6.6] void QTextToSpeech::aboutToSynthesize(qsizetype id)

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

该函数在 Qt 6.6 中引入。

另请参阅 enqueue()、synthesize() 和voice 。

[static invokable] QStringList QTextToSpeech::availableEngines()

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

注: 可通过元对象系统和 QML 调用此函数。请参阅Q_INVOKABLE 。

另请参阅 engine 。

[invokable] QList QTextToSpeech::availableLocales() const

返回活动engine 支持的本地化列表。

注: 可通过元对象系统和 QML 调用该函数。请参见Q_INVOKABLE 。

另请参阅 availableVoices() 和findVoices()。

[invokable] QList QTextToSpeech::availableVoices() const

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

注: 如果未设置本地语言,则使用系统本地语言。

注: 可通过元对象系统和 QML 调用此函数。请参见Q_INVOKABLE 。

另请参阅 availableLocales() 和findVoices()。

[slot, since 6.6] qsizetype QTextToSpeech::enqueue(const QString &utterance)

将utterance 加入待说文本队列,并开始说话。返回队列中文本的索引,如果出错则返回-1。

如果引擎的state 当前是Ready ,则utterance 将立即被说出。否则,引擎将在说完当前文本后开始说话utterance 。

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

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

该函数在 Qt 6.6 中引入。

另请参阅 say()、stop()、aboutToSynthesize() 和synthesize()。

[signal] void QTextToSpeech::errorOccurred(QTextToSpeech::ErrorReason reason, const QString &errorString)

该信号在发生错误且state 已设置为QTextToSpeech::Error 后发出。reason 参数指定了错误类型,而errorString 则提供了人类可读的错误描述。

QTextToSpeech::ErrorReason 不是已注册的元类型,因此对于队列连接,必须使用 () 和 () 注册。Q_DECLARE_METATYPE qRegisterMetaType

另请参阅 errorReason(),errorString() 和创建自定义 Qt 类型。

[invokable] QTextToSpeech::ErrorReason QTextToSpeech::errorReason() const

返回引擎报错的原因。

注: 可通过元对象系统和 QML 调用该函数。参见Q_INVOKABLE 。

另请参阅 state 和errorOccurred() 。

[invokable] QString QTextToSpeech::errorString() const

返回当前引擎错误信息。

注: 可通过元对象系统和 QML 调用该函数。参见Q_INVOKABLE 。

另请参阅 errorOccurred() 。

[since 6.6] template QList QTextToSpeech::findVoices(Args &&... args) const

返回符合args 中条件的声音列表。

args 中的参数将被处理,以汇总符合所有参数的声音列表。QString 类型的参数与声音的name 匹配,QLocale 类型的参数与声音的locale 匹配,等等。可以只指定所需声音的Language 或Territory ,也可以将名称与regular expression 匹配。

如果条件列表为空,该函数将返回所有声音。不能使用同一类型的多个标准,否则会导致编译错误。

注意: 除非args 包括当前的locale ,否则该函数可能需要更改引擎的语言版本才能得到所有声音的列表。这与引擎有关,但可能会影响正在进行的语音合成。因此,除非state 是Ready ,否则建议不要调用此函数。

此函数在 Qt 6.6 中引入。

另请参阅 availableVoices()。

[slot] void QTextToSpeech::pause(QTextToSpeech::BoundaryHint boundaryHint = QTextToSpeech::BoundaryHint::Default)

在boundaryHint 暂停当前发言。

boundaryHint 是否受到尊重取决于engine 。

另请参阅 resume() 和PauseResume 。

[slot] void QTextToSpeech::resume()

调用pause() 后恢复说话。

注意: 在 Android 上,恢复暂停的语音会从头开始。这是底层文本到语音引擎的限制。

另请参阅 pause()。

[slot] void QTextToSpeech::say(const QString &text)

开始语音text 。

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

connect(ui.speakButton, &QPushButton::clicked, m_speech, [this]{

m_speech->say(ui.plainTextEdit->toPlainText());

});

注意: 在开始朗读最近合成的文本之前,所有正在进行的朗读都会停止。

当前状态可通过state 属性获得,一旦开始朗读,该属性将被设置为Speaking 。阅读完成后,state 将被设置为Ready 。

另请参阅 enqueue(),stop(),pause(),resume() 和synthesize().

[signal, since 6.6] void QTextToSpeech::sayingWord(const QString &word, qsizetype id, qsizetype start, qsizetype length)

当word (即语句id 中start 和length 所指示的文本片段)被播放到音频设备时,就会发出该信号。

注: 此信号要求引擎具有WordByWordProgress 功能。

该功能在 Qt 6.6 中引入。

另请参阅 Capability 和say()。

[invokable, since 6.4] bool QTextToSpeech::setEngine(const QString &engine, const QVariantMap ¶ms = QVariantMap())

将QTextToSpeech 对象使用的引擎设置为engine ,并将params 传递给引擎构造函数。

返回engine 是否设置成功。

params 中支持哪些键/值对取决于引擎。详情请参见引擎文档。不支持的条目将被忽略。

注: 可通过元对象系统和 QML 调用此函数。请参阅Q_INVOKABLE 。

注: 用于属性engine 的 Setter 函数。

此函数在 Qt 6.4 中引入。

另请参阅 engine() 。

[slot] void QTextToSpeech::stop(QTextToSpeech::BoundaryHint boundaryHint = QTextToSpeech::BoundaryHint::Default)

在boundaryHint 停止当前读取,并清除待读文本队列。

阅读无法恢复。是否尊重boundaryHint 取决于引擎。

另请参阅 say()、enqueue() 和pause()。