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 ¶ms, 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 ¶ms = 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() を使用して現在のロケールをサポートする音声のリストを取得します。locale プロパティを変更するには、入力テキストの言語および希望する音声出力のアクセントに最適なavailableLocales() のいずれかを使用します。これにより、ほとんどのプラットフォームで利用可能な音声のリストが変更されます。 その後、setVoice() を呼び出す際に、利用可能なボイスのいずれかを使用します。
すべてのエンジンがすべての機能をサポートしているわけではありません。engineCapabilities() 関数を使用して、利用可能な機能をテストし、それに応じてクラスの使用方法を調整してください。
注: エンジンがサポートするロケールや音声は 、通常、オペレーティングシステムの設定によって異なります。例えば、macOSでは、エンドユーザーは「システム環境設定」の「アクセシビリティ」パネルから音声をインストールできます。
メンバ型のドキュメント
enum class QTextToSpeech::BoundaryHint
話しを中断し、間を置くべきタイミングについて説明しています。
| 定数 | 値 | 説明 |
|---|---|---|
QTextToSpeech::BoundaryHint::Default | 0 | エンジン固有のデフォルトの挙動を使用します。 |
QTextToSpeech::BoundaryHint::Immediate | 1 | エンジンは再生を直ちに停止する必要があります。 |
QTextToSpeech::BoundaryHint::Word | 2 | 現在の単語が終了したら、音声を停止します。 |
QTextToSpeech::BoundaryHint::Sentence | 3 | 現在の文が終了したら、音声の再生を停止します。 |
QTextToSpeech::BoundaryHint::Utterance (since Qt 6.6) | 4 | 現在の発話が終了したら、音声の再生を停止します。発話とは、say() またはenqueue() の呼び出しで使用されるテキストのブロックを指します。 注:これらは エンジンへのヒントです。使用中のエンジンによっては、すべてのオプションがサポートされていない場合があります。 |
[since 6.6] enum class QTextToSpeech::Capability
flags QTextToSpeech::Capabilities
この列挙型は、テキスト読み上げエンジンの機能を記述するものです。
| 定数 | 値 | 説明 |
|---|---|---|
QTextToSpeech::Capability::None | 0 | エンジンはこれらの機能のいずれも実装していません。 |
QTextToSpeech::Capability::Speak | 1 << 0 | エンジンがテキストからの音声出力を再生できます。 |
QTextToSpeech::Capability::PauseResume | 1 << 1 | このエンジンは、音声出力を一時停止し、その後再開することができます。 |
QTextToSpeech::Capability::WordByWordProgress | 1 << 2 | エンジンは、発話される単語ごとに `sayingWord()` シグナルを発行します。 |
QTextToSpeech::Capability::Synthesize | 1 << 3 | このエンジンは、テキストからsynthesize PCMオーディオデータを生成できます。 |
この列挙型は Qt 6.6 で導入されました。
Capabilities 型は、QFlags<Capability> の typedef です。Capability 値の OR 組み合わせを格納します。
engineCapabilities()も参照してください 。
enum class QTextToSpeech::ErrorReason
この列挙型は、QTextToSpeech エンジンで発生しているエラー(ある場合)を表します。
| 定数 | 値 | 説明 |
|---|---|---|
QTextToSpeech::ErrorReason::NoError | 0 | エラーは発生していません。 |
QTextToSpeech::ErrorReason::Initialization | 1 | ドライバの欠落やオペレーティングシステムの要件不備などにより、バックエンドを初期化できませんでした。 |
QTextToSpeech::ErrorReason::Configuration | 2 | 指定されたバックエンドの設定に不整合があります(例:音声名やパラメータが間違っている場合など)。 |
QTextToSpeech::ErrorReason::Input | 3 | 指定されたテキストを合成できませんでした(例:サイズや文字が無効な場合など)。 |
QTextToSpeech::ErrorReason::Playback | 4 | オーディオ再生に失敗しました。原因としては、オーディオデバイスの欠落、形式の不一致、オーディオストリーミングの中断などが考えられます。 |
errorReason() を使用して現在のエラーを取得し、errorString() を使用して関連するエラーメッセージを取得してください。
errorOccurred()も参照してください 。
enum QTextToSpeech::State
この列挙型は、テキスト読み上げエンジンの現在の状態を表します。
| 定数 | 値 | 説明 |
|---|---|---|
QTextToSpeech::Ready | 0 | シンセサイザーは新しいテキストの再生を開始する準備ができています。これは、テキストの再生が終了した後の状態でもあります。 |
QTextToSpeech::Speaking | 1 | テキストが読み上げられています。 |
QTextToSpeech::Synthesizing | 4 | テキストがPCMデータに合成されています。synthesized()シグナルは、データチャンクごとに発信されます。 |
QTextToSpeech::Paused | 2 | 合成が一時停止されており、resume() によって再開できます。 |
QTextToSpeech::Error | 3 | エラーが発生しました。詳細は `errorReason()` によって返されます。 |
QTextToSpeech::ErrorReason 、errorReason()、およびerrorString()も参照してください 。
プロパティのドキュメント
[since 6.4] engine : QString
このプロパティには、テキストを音声に変換するために使用されるエンジンが格納されます。
エンジンを変更すると、再生中の音声が停止します。
ほとんどのプラットフォームでは、エンジンを変更すると、available locales およびavailable voices のリストが更新されます。
この列挙型は Qt 6.4 で導入されました。
アクセス関数:
| QString | engine() const | |
| bool | setEngine(const QString &engine, const QVariantMap ¶ms = QVariantMap()) | [see note below] |
注:この関数は 、メタオブジェクトシステムを介して、およびQMLから呼び出すことができます。Q_INVOKABLE を参照してください。
Notifierシグナル:
| void | engineChanged(const QString &engine) |
[read-only, since 6.6] engineCapabilities : 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 : 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);
}say() を使用すると、現在の `voice ` および `locale` を使用してテキストの合成を開始できます。
アクセス関数:
| QTextToSpeech::State | state() const |
通知シグナル:
| void | stateChanged(QTextToSpeech::State state) |
voice : QVoice
このプロパティには、音声再生に使用される音声が格納されます。
音声は、エンジンでサポートされているvoices available のいずれかである必要があります。
一部のプラットフォームでは、ボイスを設定すると、locale やpitch などの他のボイス属性も変更されます。これらの変更により、シグナルが発信されます。
アクセス関数:
| 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) |
通知シグナル:
| void | volumeChanged(double volume) |
メンバ関数のドキュメント
[explicit] QTextToSpeech::QTextToSpeech(QObject *parent = nullptr)
デフォルトのエンジンプラグインを使用するプラグインからテキスト読み上げエンジンを読み込み、parent の子としてQTextToSpeechオブジェクトを生成します。
デフォルトのエンジンはプラットフォームに依存します。
エンジンの初期化が正常に完了すると、そのエンジンのstate はQTextToSpeech::Ready に変更されます。なお、この変更は非同期に行われる場合があります。プラグインの読み込みに失敗した場合、state はQTextToSpeech::Error に設定されます。
availableEngines()も参照してください 。
[explicit] QTextToSpeech::QTextToSpeech(const QString &engine, QObject *parent = nullptr)
パラメータ `engine ` に一致するプラグインからテキスト読み上げエンジンを読み込み、parent の子として QTextToSpeech オブジェクトを生成します。
engine が空の場合、デフォルトのエンジンプラグインが使用されます。デフォルトのエンジンはプラットフォームに依存します。
エンジンの初期化が正常に完了すると、そのエンジンのstate はQTextToSpeech::Ready に設定されます。プラグインの読み込みに失敗した場合、またはエンジンの初期化に失敗した場合、そのエンジンのstate はQTextToSpeech::Error に設定されます。
availableEngines()も参照してください 。
[explicit, since 6.4] QTextToSpeech::QTextToSpeech(const QString &engine, const QVariantMap ¶ms, QObject *parent = nullptr)
パラメータengine に一致するプラグインからテキスト読み上げエンジンを読み込み、parent の子としてQTextToSpeechオブジェクトを構築し、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<QLocale> QTextToSpeech::availableLocales() const
アクティブなengine がサポートしているロケールのリストを返します。
注:この関数は 、メタオブジェクトシステムおよびQMLから呼び出すことができます。Q_INVOKABLE を参照してください。
関連項目: availableVoices() およびfindVoices()。
[invokable] QList<QVoice> 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 <typename... Args> QList<QVoice> 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)
このシグナルは、発話 `id` 内の `start ` および `length ` で指定されるテキストの区切り部分である `word` が、オーディオデバイスで再生されたときに発信されます。
注:この シグナルを発火させるには、エンジンが「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`のセッター 関数です。
この関数は Qt 6.4 で導入されました。
engine()も参照してください 。
[slot] void QTextToSpeech::stop(QTextToSpeech::BoundaryHint boundaryHint = QTextToSpeech::BoundaryHint::Default)
boundaryHint で現在の読み取りを停止し、保留中のテキストのキューをクリアします。
読み取りを再開することはできません。boundaryHint が尊重されるかどうかは、エンジンによって異なります。
say()、enqueue()、およびpause()も参照してください 。
[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 を生のオーディオデータに合成します。
この関数は、音声を非同期的に生オーディオデータとして合成します。データが利用可能になると、functor はfunctor(QAudioFormat format, QByteArray bytes) として呼び出され、format はbytes 内のデータのformat を記述します。あるいは、functor(QAudioBuffer &buffer) として呼び出されます。
state プロパティは、合成が開始されるとSynthesizing に設定され、合成が完了するとReady に設定されます。合成中は、functor が複数回呼び出される可能性があり、その際、format の値が変化する場合もあります。
functor は、ラムダ式やフリー関数のような呼び出し可能なオブジェクトであり、オプションで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 で導入されました。
© 2026 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.