QTextToSpeech Class
QTextToSpeech クラスは、音声合成エンジンへの便利なアクセスを提供します。詳細...
Header: | #include <QTextToSpeech> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS TextToSpeech) target_link_libraries(mytarget PRIVATE Qt6::TextToSpeech) |
qmake: | QT += texttospeech |
Inherits: | 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() を使用して現在のロケールをサポートする音声のリストを取得します。入力テキストの言語と、希望する音声出力のアクセントによく一致するavailableLocales() のいずれかを使用して、locale プロパティを変更します。これにより、ほとんどのプラットフォームで利用可能なボイスのリストが変更されます。次に、setVoice ()の呼び出しで、利用可能なボイスの1つを使用します。
すべてのエンジンがすべての機能をサポートしているわけではありません。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
この enum は、音声合成エンジンの能力を表します。
定数 | 値 | 説明 |
---|---|---|
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 です。これは、Capabilities 値の 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()も参照 。
プロパティ Documentation
[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 : const Capabilities
このプロパティは、現在のエンジンが実装している機能を保持します。
このプロパティは Qt 6.6 で導入されました。
アクセス関数です:
QTextToSpeech::Capabilities | engineCapabilities() const |
ノーティファイア シグナル:
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); }
現在のvoice とlocale でテキストの合成を開始するには、say() を使用する。
アクセス関数:
QTextToSpeech::State | state() const |
ノーティファイア信号:
void | stateChanged(QTextToSpeech::State state) |
voice : QVoice
このプロパティは、音声に使用される音声を保持します。
ボイスは、エンジン用のvoices available の1つである必要があります。
プラットフォームによっては、ボイスを設定すると、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) |
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 を生の音声データに合成する。
この関数は、音声を非同期で生の音声データに合成する。データが利用可能な場合、functor はfunctor(QAudioFormat format, QByteArray bytes)
として呼び出され、format
はbytes
のデータの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 で導入されました。
[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 を尊重するかどうかはエンジンに依存します。
本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。