QTextToSpeech Class

QTextToSpeech クラスは、音声合成エンジンへの便利なアクセスを提供します。詳細...

ヘッダー #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, Utterance }
flags Capabilities
(since 6.6) enum class Capability { None, Speak, PauseResume, WordByWordProgress, Synthesize }
enum class ErrorReason { NoError, Initialization, Configuration, Input, Playback }
enum State { Ready, Speaking, Synthesizing, Paused, Error }

プロパティ

パブリック機能

QTextToSpeech(QObject *parent = nullptr)
QTextToSpeech(const QString &engine, QObject *parent = nullptr)
(since 6.4) 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::Capabilities engineCapabilities() const
QTextToSpeech::ErrorReason errorReason() const
QString errorString() const
(since 6.6) QList<QVoice> findVoices(Args &&... args) const
QLocale locale() const
double pitch() const
double rate() const
(since 6.4) bool setEngine(const QString &engine, const QVariantMap &params = QVariantMap())
QTextToSpeech::State state() const
(since 6.6) void synthesize(const QString &text, Functor &&functor)
(since 6.6) void synthesize(const QString &text, const QObject *context, Functor &&functor)
QVoice voice() const
double volume() const

パブリックスロット

(since 6.6) qsizetype enqueue(const QString &utterance)
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)

シグナル

(since 6.6) void aboutToSynthesize(qsizetype id)
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)
(since 6.6) void sayingWord(const QString &word, qsizetype id, qsizetype start, qsizetype length)
void stateChanged(QTextToSpeech::State state)
void voiceChanged(const QVoice &voice)
void volumeChanged(double volume)

静的パブリックメンバ

QStringList availableEngines()

詳細説明

デフォルトのオーディオ・デバイスにテキストの読み上げを開始するにはsay() を使用し、テキストの読み上げを制御するにはstop(),pause(),resume() を使用する。

    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);

テキストを PCM データに合成してさらに処理するには、synthesize() を使用する。

findVoices() を使用して一致する音声のリストを取得するか、availableVoices() を使用して現在のロケールをサポートする音声のリストを取得します。入力テキストの言語と、希望する音声出力のアクセントによく一致するavailableLocales() のいずれかを使用して、locale プロパティを変更します。これにより、ほとんどのプラットフォームで利用可能なボイスのリストが変更されます。次に、setVoice ()の呼び出しで、利用可能なボイスの1つを使用します。

すべてのエンジンがすべての機能をサポートしているわけではありません。engineCapabilities() 関数を使用して、どの機能が使用可能かをテストし、それに応じてクラスの使用法を調整してください。

注意: エンジンがサポートするロケールや音声は、通常オペレーティング・システムの設定に依存します。例えばmacOSの場合、エンドユーザーはシステム環境設定の アクセシビリティパネルから音声をインストールすることができます。

メンバー・タイプのドキュメント

enum class QTextToSpeech::BoundaryHint

は、発話を止めたり、一時停止したりするタイミングを表します。

定数説明
QTextToSpeech::BoundaryHint::Default0エンジン固有のデフォルト動作を使用します。
QTextToSpeech::BoundaryHint::Immediate1エンジンは再生を直ちに停止します。
QTextToSpeech::BoundaryHint::Word2現在の単語が終了したらスピーチを停止する。
QTextToSpeech::BoundaryHint::Sentence3現在の文が終了したときに音声を停止する。
QTextToSpeech::BoundaryHint::Utterance (since Qt 6.6)4現在の発話が終了したら発話を停止する。発話とは、say() またはenqueue() の呼び出しで使用されるテキストのブロックのことです。

注: これらはエンジンへのヒントです。現在のエンジンがすべてのオプションをサポートしているとは限りません。

[since 6.6] enum class QTextToSpeech::Capability
flags QTextToSpeech::Capabilities

この enum は、音声合成エンジンの能力を表します。

定数説明
QTextToSpeech::Capability::None0どの能力も実装していない。
QTextToSpeech::Capability::Speak1 << 0エンジンはテキストから音声出力を再生できる。
QTextToSpeech::Capability::PauseResume1 << 1エンジンは音声出力を一時停止し、再開することができる。
QTextToSpeech::Capability::WordByWordProgress1 << 2発話された単語ごとにsayingWord() 信号を出力します。
QTextToSpeech::Capability::Synthesize1 << 3テキストからsynthesize PCM オーディオ データを出力できます。

この列挙型は Qt 6.6 で導入されました。

Capabilities 型はQFlags<Capability> の typedef です。これは、Capabilities 値の OR の組み合わせを格納します。

engineCapabilities()も参照してください

enum class QTextToSpeech::ErrorReason

この列挙型は、もしあれば、QTextToSpeech エンジンの現在のエラーを記述する。

定数説明
QTextToSpeech::ErrorReason::NoError0エラーは発生していません。
QTextToSpeech::ErrorReason::Initialization1バックエンドを初期化できませんでした。例えば、ドライバやオペレーティングシステムの要件が不足しているためです。
QTextToSpeech::ErrorReason::Configuration2音声名やパラメータが間違っているなど、与えられたバックエンドの設定に一貫性がありません。
QTextToSpeech::ErrorReason::Input3指定されたテキストが合成されませんでした(例:サイズや文字が不正)。
QTextToSpeech::ErrorReason::Playback4音声の再生に失敗しました。たとえば、音声デバイスがない、形式が間違っている、音声ストリーミングが中断された、などが原因です。

現在のエラーを取得するにはerrorReason() を使用し、関連するエラーメッセージを取得するにはerrorString() を使用します。

errorOccurred()も参照

enum QTextToSpeech::State

この列挙型は、音声合成エンジンの現在の状態を表す。

定数説明
QTextToSpeech::Ready0シンセサイザは新しいテキストを開始する準備ができている。これは、テキストが終了した後の状態でもあります。
QTextToSpeech::Speaking1テキストが話されている。
QTextToSpeech::Synthesizing4テキストがPCMデータに合成されている。synthesized()シグナルがデータのチャンクとともに発せられる。
QTextToSpeech::Paused2合成は一時停止され、resume()で再開できる。
QTextToSpeech::Error3エラーが発生しました。詳細はerrorReason() を参照。

QTextToSpeech::ErrorReasonerrorReason()、errorString()も参照

プロパティ・ドキュメンテーション

[since 6.4] engine : QString

このプロパティは、テキストを音声合成するために使用されるエンジンを保持します。

エンジンを変更すると、進行中の音声は停止します。

ほとんどのプラットフォームでは、エンジンを変更するとavailable localesavailable voices のリストが更新されます。

このプロパティは Qt 6.4 で導入されました。

アクセス関数:

QString engine() const
bool setEngine(const QString &engine, const QVariantMap &params = QVariantMap())[see note below]

注意: この関数はメタオブジェクトシステムやQMLから呼び出すことができます。Q_INVOKABLE を参照してください。

通知シグナル:

void engineChanged(const QString &engine)

[read-only, since 6.6] engineCapabilities : const Capabilities

このプロパティは、現在のエンジンが実装している機能を保持します。

このプロパティは Qt 6.6 で導入されました。

アクセス関数です:

QTextToSpeech::Capabilities engineCapabilities() const

Notifier シグナル:

void engineChanged(const QString &engine)

engineも参照してください

locale : QLocale

このプロパティは、現在使用されているロケールを保持する。

デフォルトでは、システムロケールが使用されます。

プラットフォームによっては、ロケールを変更するとavailable voices のリストが更新され、現在の音声が新しいロケールで利用できない場合は、新しい音声が設定されます。

アクセス機能:

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

通知シグナル:

void localeChanged(const QLocale &locale)

voice およびfindVoices()も参照のこと

pitch : double

このプロパティは、音声ピッチを-1.0~1.0の範囲で保持します。

デフォルトの0.0は通常の音声ピッチです。

アクセス関数

double pitch() const
void setPitch(double pitch)

通知信号:

void pitchChanged(double pitch)

rate : double

このプロパティは、現在の音声レートを-1.0 から 1.0 の範囲で保持する。

デフォルト値の0.0は通常の音声フローである。

アクセス関数:

double rate() const
void setRate(double rate)

ノーティファイア信号:

void rateChanged(double rate)

[read-only] state : const State

このプロパティは、音声合成器の現在の状態を保持します。

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);
}

現在のvoicelocale でテキストの合成を開始するには、say() を使用します。

アクセス関数:

QTextToSpeech::State state() const

通知シグナル:

void stateChanged(QTextToSpeech::State state)

voice : QVoice

このプロパティは、スピーチに使用される音声を保持します。

ボイスは、エンジンのvoices available の1つである必要があります。

プラットフォームによっては、ボイスを設定すると、localepitch などの他のボイス属性が変更されます。これらの変更は、シグナルの発信をトリガーします。

アクセス関数:

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

Notifier シグナル:

void voiceChanged(const QVoice &voice)

findVoices()も参照のこと

volume : double

このプロパティは、0.0 から 1.0 の範囲で現在のボリュームを保持する。

デフォルト値は、プラットフォームのデフォルトボリュームです。

アクセス関数

double volume() const
void setVolume(double volume)

Notifier シグナル:

void volumeChanged(double volume)

メンバー関数ドキュメント

[since 6.6] template <typename Functor> void QTextToSpeech::synthesize(const QString &text, Functor &&functor)

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

text を生の音声データに合成する。

この関数は、音声を非同期で生の音声データに合成する。データが利用可能な場合、functorfunctor(QAudioFormat format, QByteArray bytes) として呼び出され、formatbytes のデータのformat を記述し、またはfunctor(QAudioBuffer &buffer) として呼び出される。

state プロパティは、合成が始まるとSynthesizing に設定され、合成が終了するとReady に設定される。合成中は、functor が複数回呼び出され、format の値が変更される可能性がある。

functor は、ラムダ関数やfree関数のように呼び出し可能で、オプションで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)

デフォルトのエンジンプラグインを使用するプラグインから音声合成エンジンをロードし、parent の子として QTextToSpeech オブジェクトを構築します。

デフォルトのエンジンはプラットフォーム固有です。

エンジンが正しく初期化されると、エンジンのstateQTextToSpeech::Ready に変わります。プラグインのロードに失敗した場合、stateQTextToSpeech::Error に設定されます。

availableEngines()も参照してください

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

パラメータengine に一致するプラグインから音声合成エンジンをロードし、parent の子として QTextToSpeech オブジェクトを構築します。

engine が空の場合、デフォルトのエンジンプラグインが使用されます。デフォルトのエンジンはプラットフォーム固有です。

エンジンが正しく初期化された場合、エンジンのstateQTextToSpeech::Ready に設定されます。プラグインのロードに失敗した場合、またはエンジンの初期化に失敗した場合、エンジンのstateQTextToSpeech::Error に設定されます。

availableEngines()も参照

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

パラメータengine に一致するプラグインから音声合成エンジンをロードし、parent の子として QTextToSpeech オブジェクトを構築し、params をエンジンに渡します。

engine が空の場合、デフォルトのエンジンプラグインが使用されます。デフ ォル ト のエン ジ ンはプ ラ ッ ト フ ォーム固有です。params のどのキー/値ペアをサポートするかは、エンジンに依存します。詳細はエンジンのドキュメントを参照してください。サポー ト さ れていない項目は無視 さ れます。

エン ジ ンの初期化が正 し く 行われた場合、 エン ジ ンのstateQTextToSpeech::Ready に設定 さ れます。 プ ラ グ イ ンの読み込みに失敗 し た場合、 ま たはエン ジ ンの初期化に失敗 し た場合、 エン ジ ンのstateQTextToSpeech::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<QLocale> QTextToSpeech::availableLocales() const

アクティブなengine がサポートしているロケールのリストを返します。

注意: この関数はメタオブジェクトシステムやQMLから呼び出すことができます。Q_INVOKABLE を参照してください。

availableVoices() およびfindVoices()も参照して ください。

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

現在のlocale で使用可能な声部のリストを返します。

注: ロケールが設定されていない場合、システムロケールが使用されます。

Note: この関数は、メタオブジェクトシステムや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)

このシグナルは、エラーが発生し、stateQTextToSpeech::Error に設定された後に発行される。reason パラメータはエラーのタイプを指定し、errorString は人間が読めるエラーの説明を提供する。

QTextToSpeech::ErrorReason は登録されたメタタイプではないので、キュー接続の場合は () と () で登録する必要がある。Q_DECLARE_METATYPE qRegisterMetaType

errorReason()、errorString()、Creating Custom Qt Typesも参照してください

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

エンジンがエラーを報告した理由を返します。

注意: この関数はメタオブジェクトシステムやQMLから呼び出すことができます。Q_INVOKABLE を参照してください。

state およびerrorOccurred()も参照して ください。

[invokable] QString QTextToSpeech::errorString() const

現在のエンジンのエラーメッセージを返します。

注意: この関数はメタオブジェクトシステムやQMLから呼び出すことができます。Q_INVOKABLE を参照。

errorOccurred()も参照してください

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

args の条件にマッチする声部のリストを返す。

args の引数は、全てにマッチする声部のリストを作成するために処理される。QString 型の引数は、声部のname とマッチし、QLocale 型の引数は、声部のlocale とマッチする。希望する音声のLanguage またはTerritory のみを指定することも可能で、名前をregular expression にマッチさせることもできます。

条件リストが空の場合、この関数はすべての音声を返します。同じ型の複数の条件を指定することはできず、コンパイル時にエラーとなる。

注: args に現在のlocale が含まれていない限り、この関数で全声部のリストを取得するためには、エンジンのロケールを変更する必要があるかもしれません。これはエンジン固有ですが、進行中の音声合成に影響を与える可能性があります。そのため、stateReady でない限り、この関数を呼び出さないことをお勧めします。

この関数は 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 に設定されます。読み取りが終了すると、stateReady に設定されます。

enqueue(),stop(),pause(),resume(),synthesize()も参照のこと

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

このシグナルは、発話idstartlength で示されるテキストのスライスであるword がオーディオ・デバイスに再生されたときに発せられる。

注: このシグナルは、エンジンがWordByWordProgress の機能を持っている必要があります。

この関数は Qt 6.6 で導入されました。

Capabilitysay()も参照してください

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

このQTextToSpeech オブジェクトが使用するエンジンをengine に設定し、params をエンジンのコンストラクタに渡します。

engine が正常に設定できたかどうかを返します。

params のどのキー/値ペアをサポートするかは、エンジンに依存します。詳細はエンジンのドキュメントを参照してください。サポー ト さ れていない項目は無視 さ れます。

注意: この関数はメタオブジェクトシステムやQMLから呼び出すことができます。Q_INVOKABLE を参照してください。

備考: プロパティ用のセッター関数engine

この関数は Qt 6.4 で導入されました。

engine()も参照してください

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

boundaryHint で現在の読み取りを停止し、保留中のテキストのキューをクリアする。

読み込みを再開することはできない。boundaryHint が尊重されるかどうかはエンジンに依存する。

say()、enqueue()、pause()も参照

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.