QTextToSpeech 类

QTextToSpeech 类为访问 TTS (文本转语音) 引擎提供方便。 更多...

头: #include <QTextToSpeech>
CMake: find_package(Qt6 REQUIRED COMPONENTS TextToSpeech)
target_link_libraries(mytarget PRIVATE Qt6::TextToSpeech)
qmake: QT += texttospeech
继承: QObject

公共类型

enum class BoundaryHint { Default, Immediate, Word, Sentence }
enum class ErrorReason { NoError, Initialization, Configuration, Input, Playback }
enum State { Ready, Speaking, Paused, Error }

特性

公共函数

QTextToSpeech (QObject * parent = nullptr)
QTextToSpeech (const QString & engine , QObject * parent = nullptr)
QTextToSpeech (const QString & engine , const QVariantMap & params , QObject * parent = nullptr)
virtual ~QTextToSpeech () override
QList<QLocale> availableLocales () const
QList<QVoice> availableVoices () const
QString engine () const
QTextToSpeech::ErrorReason errorReason () const
QString errorString () const
QLocale locale () const
double pitch () const
double rate () const
bool setEngine (const QString & engine , const QVariantMap & params = QVariantMap())
QTextToSpeech::State state () const
QVoice voice () const
double volume () const

公共槽

void pause (QTextToSpeech::BoundaryHint boundaryHint = QTextToSpeech::BoundaryHint::Default)
void resume ()
void say (const QString & text )
void setLocale (const QLocale & locale )
void setPitch (double pitch )
void setRate (double rate )
void setVoice (const QVoice & voice )
void setVolume (double volume )
void stop (QTextToSpeech::BoundaryHint boundaryHint = QTextToSpeech::BoundaryHint::Default)

信号

void engineChanged (const QString & engine )
void errorOccurred (QTextToSpeech::ErrorReason reason , const QString & errorString )
void localeChanged (const QLocale & locale )
void pitchChanged (double pitch )
void rateChanged (double rate )
void stateChanged (QTextToSpeech::State state )
void voiceChanged (const QVoice & voice )
void volumeChanged (double volume )

静态公共成员

QStringList availableEngines ()

详细描述

使用 say () to start reading text to the default audio device, and stop (), pause (),和 resume () to control the reading of the text.

    connect(ui.speakButton, &QPushButton::clicked, m_speech, [this]{
        m_speech->say(ui.plainTextEdit->toPlainText());
    });
    connect(ui.stopButton, &QPushButton::clicked, m_speech, [this]{
        m_speech->stop();
    });
    connect(ui.pauseButton, &QPushButton::clicked, m_speech, [this]{
        m_speech->pause();
    });
    connect(ui.resumeButton, &QPushButton::clicked, m_speech, &QTextToSpeech::resume);
					

To synthesize text into PCM data for further processing, use synthesize().

The list of voices the engine supports for the current language is returned by availableVoices (). Change the language using setLocale (), using one of the availableLocales () that is a good match for the language that the input text is in, and for the accent of the desired voice output. This will change the list of available voices on most platforms. Then use one of the available voices in a call to setVoice ().

注意: Which locales and voices the engine supports depends usually on the Operating System configuration. E.g. on macOS, end users can install voices through the 可访问性 panel in System Preferences .

成员类型文档编制

enum class QTextToSpeech:: BoundaryHint

describes when speech should be stopped and paused.

常量 描述
QTextToSpeech::BoundaryHint::Default 0 Uses the engine specific default behavior.
QTextToSpeech::BoundaryHint::Immediate 1 The engine should stop playback immediately.
QTextToSpeech::BoundaryHint::Word 2 Stop speech when the current word is finished.
QTextToSpeech::BoundaryHint::Sentence 3 Stop speech when the current sentence is finished.

注意: These are hints to the engine. The current engine might not support all options.

enum class QTextToSpeech:: ErrorReason

This enum describes the current error, if any, of the QTextToSpeech engine.

常量 描述
QTextToSpeech::ErrorReason::NoError 0 没有出现错误。
QTextToSpeech::ErrorReason::Initialization 1 The backend could not be initialized, e.g. due to a missing driver or operating system requirement.
QTextToSpeech::ErrorReason::Configuration 2 The given backend configuration is inconsistent, e.g. due to wrong voice name or parameters.
QTextToSpeech::ErrorReason::Input 3 The given text could not be synthesized, e.g. due to invalid size or characters.
QTextToSpeech::ErrorReason::Playback 4 Audio playback failed e.g. due to missing audio device, wrong format or audio streaming interruption.

使用 errorReason () to obtain the current error and errorString () to get the related error message.

另请参阅 errorOccurred ().

enum QTextToSpeech:: State

This enum describes the current state of the text-to-speech engine.

常量 描述
QTextToSpeech::Ready 0 The synthesizer is ready to start a new text. This is also the state after a text was finished.
QTextToSpeech::Speaking 1 Text is being spoken.
QTextToSpeech::Paused 2 The synthesis was paused and can be resumed with resume ().
QTextToSpeech::Error 3 An error has occurred. Details are given by errorReason ().

另请参阅 QTextToSpeech::ErrorReason , errorReason (),和 errorString ().

特性文档编制

[since 6.4] engine : QString

This property holds the engine used to synthesize text to speech.

Changing the engine stops any ongoing speech.

On most platforms, changing the engine will update the list of available locales and available voices .

该特性在 Qt 6.4 引入。

访问函数:

QString engine () const
bool setEngine (const QString & engine , const QVariantMap & params = QVariantMap()) [见下文注意事项]

注意: 此函数可以被援引,通过元对象系统和从 QML。见 Q_INVOKABLE .

通知程序信号:

void engineChanged (const QString & engine )

locale : QLocale

This property holds the current locale in use.

By default, the system locale is used.

On some platforms, changing the locale will update the list of available voices , and if the current voice is not available with the new locale, a new voice will be set.

访问函数:

QLocale locale () const
void setLocale (const QLocale & locale )

通知程序信号:

void localeChanged (const QLocale & locale )

另请参阅 voice .

pitch : double

This property holds the voice pitch, ranging from -1.0 to 1.0.

The default of 0.0 is the normal speech pitch.

访问函数:

double pitch () const
void setPitch (double pitch )

通知程序信号:

void pitchChanged (double pitch )

rate : double

This property holds the current voice rate, ranging from -1.0 to 1.0.

The default value of 0.0 is normal speech flow.

访问函数:

double rate () const
void setRate (double rate )

通知程序信号:

void rateChanged (double rate )

[read-only] state : const State

This property holds the current state of the speech synthesizer.

void MainWindow::stateChanged(QTextToSpeech::State state)
{
    switch (state) {
    case QTextToSpeech::Speaking:
        ui.statusbar->showMessage(tr("Speech started..."));
        break;
    case QTextToSpeech::Ready:
        ui.statusbar->showMessage(tr("Speech stopped..."), 2000);
        break;
    case QTextToSpeech::Paused:
        ui.statusbar->showMessage(tr("Speech paused..."));
        break;
    default:
        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 || state == QTextToSpeech::Paused);
}
					

使用 say () to start synthesizing text with the current voice and locale .

访问函数:

QTextToSpeech::State state () const

通知程序信号:

void stateChanged (QTextToSpeech::State state )

voice : QVoice

This property holds the voice that will be used for the speech.

The voice needs to be one of the voices available for the engine.

On some platforms, setting the voice changes other voice attributes such as locale , pitch , and so on. These changes trigger the emission of signals.

访问函数:

QVoice voice () const
void setVoice (const QVoice & voice )

通知程序信号:

void voiceChanged (const QVoice & voice )

volume : double

This property holds the current volume, ranging from 0.0 to 1.0.

The default value is the platform's default volume.

访问函数:

double volume () const
void setVolume (double volume )

通知程序信号:

void volumeChanged (double volume )

成员函数文档编制

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

Loads a text-to-speech engine from a plug-in that uses the default engine plug-in and constructs a QTextToSpeech object as the child of parent .

The default engine is platform-specific.

If the engine initializes correctly, then the state of the engine will change to QTextToSpeech::Ready ; note that this might happen asynchronously. If the plugin fails to load, then state will be set to QTextToSpeech::Error .

另请参阅 availableEngines ().

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

Loads a text-to-speech engine from a plug-in that matches parameter engine and constructs a QTextToSpeech object as the child of parent .

engine is empty, the default engine plug-in is used. The default engine is platform-specific.

If the engine initializes correctly, the state of the engine will be set to QTextToSpeech::Ready . If the plugin fails to load, or if the engine fails to initialize, the engine's state will be set to QTextToSpeech::Error .

另请参阅 availableEngines ().

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

Loads a text-to-speech engine from a plug-in that matches parameter engine and constructs a QTextToSpeech object as the child of parent , passing params through to the engine.

engine is empty, the default engine plug-in is used. The default engine is platform-specific. Which key/value pairs in params are supported depends on the engine. See the engine documentation for details. Unsupported entries will be ignored.

If the engine initializes correctly, the state of the engine will be set to QTextToSpeech::Ready . If the plugin fails to load, or if the engine fails to initialize, the engine's state will be set to QTextToSpeech::Error .

该函数在 Qt 6.4 引入。

另请参阅 availableEngines ().

[override virtual] QTextToSpeech:: ~QTextToSpeech ()

销毁此 QTextToSpeech object, stopping any speech.

[static invokable] QStringList QTextToSpeech:: availableEngines ()

Gets the list of supported text-to-speech engine plug-ins.

注意: 此函数可以被援引,通过元对象系统和从 QML。见 Q_INVOKABLE .

另请参阅 engine .

[invokable] QList < QLocale > QTextToSpeech:: availableLocales () const

Returns the list of locales that are supported by the active engine .

注意: 此函数可以被援引,通过元对象系统和从 QML。见 Q_INVOKABLE .

[invokable] QList < QVoice > QTextToSpeech:: availableVoices () const

Returns the list of voices available for the current locale .

注意: If no locale has been set, the system locale is used.

注意: 此函数可以被援引,通过元对象系统和从 QML。见 Q_INVOKABLE .

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

This signal is emitted after an error occurred and the state has been set to QTextToSpeech::Error reason parameter specifies the type of error, and the errorString provides a human-readable error description.

QTextToSpeech::ErrorReason 不是注册 Metatype (元类型),因此,对于队列化连接而言,必须注册它采用 Q_DECLARE_METATYPE () 和 qRegisterMetaType ().

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

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

Returns the reason why the engine has reported an error.

注意: 此函数可以被援引,通过元对象系统和从 QML。见 Q_INVOKABLE .

另请参阅 state and errorOccurred ().

[invokable] QString QTextToSpeech:: errorString () const

Returns the current engine error message.

注意: 此函数可以被援引,通过元对象系统和从 QML。见 Q_INVOKABLE .

另请参阅 errorOccurred ().

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

Pauses the current speech at boundaryHint .

是否 boundaryHint is respected depends on the engine .

另请参阅 resume ().

[slot] void QTextToSpeech:: resume ()

Resume speaking after pause () 被调用。

另请参阅 pause ().

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

Starts synthesizing the text .

This function starts sythesizing the speech asynchronously, and reads the text to the default audio output device.

    connect(ui.speakButton, &QPushButton::clicked, m_speech, [this]{
        m_speech->say(ui.plainTextEdit->toPlainText());
    });
					

注意: All in-progress readings are stopped before beginning to read the recently synthesized text.

The current state is available using the state property, and is set to Speaking once the reading starts. When the reading is done, state will be set to Ready .

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

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

Sets the engine used by this QTextToSpeech 对象到 engine , passing params through to the engine constructor.

返回是否 engine could be set successfully.

Which key/value pairs in params are supported depends on the engine. See the engine documentation for details. Unsupported entries will be ignored.

注意: 此函数可以被援引,通过元对象系统和从 QML。见 Q_INVOKABLE .

注意: setter 函数对于特性 engine .

该函数在 Qt 6.4 引入。

另请参阅 engine ().

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

Stops the current reading at boundaryHint .

The reading cannot be resumed. Whether the boundaryHint is respected depends on the engine.

另请参阅 say () 和 pause ().