説明
chrome.ttsEngine
API を使用して、拡張機能を使用してテキスト読み上げ(TTS)エンジンを実装します。この API を使用して拡張機能を登録すると、拡張機能または Chrome アプリで tts
API を使用して音声を生成するときに、発話される発話やその他のパラメータを含むイベントを受信します。拡張機能では、利用可能なウェブ テクノロジーを使用して音声を合成して出力し、呼び出し元の関数にイベントを返してステータスを報告できます。
権限
ttsEngine
コンセプトと使用方法
拡張機能は自身を音声エンジンとして登録できます。これにより、アプリケーションの一部またはすべての呼び出しを
を tts.speak()
や tts.stop()
などの関数に追加し、代替の実装を提供します。
拡張機能では、ストリーミング オーディオを含め、利用可能なウェブ テクノロジーを自由に使用して音声を提供できます。
HTML5 オーディオなどです。拡張機能により、別の処理を行うこともできます。
ポップアップに字幕を表示したり、それらの発話音声をログメッセージとして
作成されます。
TTS エンジンを実装するには、拡張機能で「ttsEngine」という名前の宣言し、すべてのプロパティを 音声を拡張機能のマニフェストに追加します。
{
"name": "My TTS Engine",
"version": "1.0",
"permissions": ["ttsEngine"],
"tts_engine": {
"voices": [
{
"voice_name": "Alice",
"lang": "en-US",
"event_types": ["start", "marker", "end"]
},
{
"voice_name": "Pat",
"lang": "en-US",
"event_types": ["end"]
}
]
},
"background": {
"page": "background.html",
"persistent": false
}
}
拡張機能では任意の数の音声を指定できます。
voice_name
パラメータは必須です。サイトを識別できるよう、わかりやすい名前を
使用されるエンジンが含まれます。万が一、2 つの拡張機能が音声を登録した場合
を使用すると、合成を行う拡張機能の ID をクライアントが指定できます。
lang
パラメータは省略可能ですが、指定することを強くおすすめします。ほとんどの場合、音声は合成され、
単一の言語に翻訳します。エンジンが複数の言語をサポートしている場合、
言語ごとに個別の音声を登録します。まれに、1 つの音声で
複数の言語を処理する場合、2 つの別個の音声をリストし、
使用できます。ただし、特定の言語の発話を処理する音声を作成したい場合は、
拡張機能のマニフェストから lang
パラメータを除外します。
最後に、エンジンがイベントを送信してクライアントを更新できる場合は、event_types
パラメータが必要です。
継続的にトレーニングされます。少なくとも、イベントタイプを示す 'end'
イベントタイプを
を強くおすすめします。そうしないと、Chrome ではキュー内の発話のスケジュールを設定できません。
読み込まれた拡張機能は、次の呼び出しによって宣言された音声のリストを置換できます。
chrome.ttsEngine.updateVoices
。(プログラムの呼び出しで使用されているパラメータは、
updateVoices
はキャメルケースです。例:voiceName
。マニフェスト ファイルでは
voice_name
)
送信可能なイベントタイプは、speak()
メソッドが送信するイベントタイプに対応しています。
次を受信:
'start'
: エンジンが発話を開始しました。'word'
: 単語境界に達しました。event.charIndex
を使用して現在の音声を特定する なります。'sentence'
: 文の境界に達しました。event.charIndex
を使用して現在の 認識できます'marker'
: SSML マーカーに到達しました。event.charIndex
を使用して現在の音声を特定する なります。'end'
: エンジンが発話を終了しました。'error'
: エンジン固有のエラーが発生したため、この発話を読み取れません。もっとパスするevent.errorMessage
の情報。
'interrupted'
イベントと 'cancelled'
イベントは音声エンジンから送信されません。生成され、
自動的に適用されます。
テキスト読み上げクライアントは、次の呼び出しによって拡張機能のマニフェストから音声情報を取得できます。
tts.getVoices
。音声イベント リスナーを以下のように登録していることを前提としています。
音声イベントを処理する
クライアントのリクエストに応じて音声を生成するには、拡張機能で両方のリスナーを登録する必要があります。
onSpeak
と onStop
:
const speakListener = (utterance, options, sendTtsEvent) => {
sendTtsEvent({type: 'start', charIndex: 0})
// (start speaking)
sendTtsEvent({type: 'end', charIndex: utterance.length})
};
const stopListener = () => {
// (stop all speech)
};
chrome.ttsEngine.onSpeak.addListener(speakListener);
chrome.ttsEngine.onStop.addListener(stopListener);
特定の音声リクエストを拡張機能に送信するかどうかの判断は、
拡張機能がマニフェストで指定された音声パラメータをサポートし、登録されているかどうか
onSpeak
と onStop
のリスナー。つまり、拡張機能が
それを処理するかどうかを動的に決定します。
型
AudioBuffer
オーディオ バッファと関連データを含むパラメータ。
プロパティ
-
audioBuffer
ArrayBuffer
テキスト読み上げエンジンからのオーディオ バッファ。長さは正確に AudioStreamOptions.bufferSize で、audioStreamOptions.sampleRate の mono、リニア pcm、32 ビット符号付き浮動小数点数(JavaScript の Float32Array 型)としてエンコードする必要があります。
-
charIndex
数値(省略可)
このオーディオ バッファに関連付けられている文字インデックス。
-
isLastBuffer
ブール値(省略可)
このオーディオ バッファが読み上げ中のテキストの最後の場合は true。
AudioStreamOptions
エンジンで生成されることが想定されるオーディオ ストリーム形式が含まれます。
プロパティ
-
bufferSize
数値
オーディオ バッファ内のサンプル数。
-
sampleRate
数値
オーディオ バッファで期待されるサンプルレート。
SpeakOptions
tts.speak() メソッドに指定されたオプション。
プロパティ
-
gender
VoiceGender 省略可
<ph type="x-smartling-placeholder"></ph> Chrome 92 以降非推奨性別はサポートが終了したため、無視されます。
合成音声の性別。
-
lang
文字列(省略可)
合成に使用する言語。形式は [言語-地域] です。例: 「en」、「en-US」、「en-GB」、「zh-CN」。
-
投球
数値(省略可)
0 ~ 2(0 が最も低く、2 が最も高くなる)の発話ピッチ。1.0 は、この音声のデフォルトのピッチに対応します。
-
速度
数値(省略可)
この音声のデフォルトの速度と比較した発話速度。1.0 がデフォルトのレートで、通常は 1 分あたり 180 ~ 220 語程度です。2.0 はその 2 倍の速さで、0.5 は半分の速さです。この値は 0.1 ~ 10.0 の範囲内となります。音声がこの全料金範囲に対応していない場合、エラーを返さないでください。音声がサポートする範囲に合わせてレートをクリップします。
-
voiceName
文字列(省略可)
合成に使用する音声の名前。
-
音量
数値(省略可)
0 から 1 までの読み上げ音量。0 が最小、1 が最大、デフォルトは 1.0 です。
VoiceGender
性別はサポートが終了したため、無視されます。
列挙型
「男性」
"女性"
メソッド
updateVoices()
chrome.ttsEngine.updateVoices(
voices: TtsVoice[],
)
音声のリストを更新するためにエンジンによって呼び出されます。このリストは、この拡張機能のマニフェストで宣言されている音声をオーバーライドします。
パラメータ
-
声
TtsVoice[]
音声合成で使用可能な音声を表す
tts.TtsVoice
オブジェクトの配列。
イベント
onPause
chrome.ttsEngine.onPause.addListener(
callback: function,
)
省略可: エンジンが一時停止イベントをサポートしている場合、再開イベントまたは停止イベントを受け取るまで、現在話されている発話を一時停止します(発話がある場合)。停止イベントによって一時停止状態もクリアされる必要があります。
パラメータ
-
callback
関数
callback
パラメータは次のようになります。() => void
onResume
chrome.ttsEngine.onResume.addListener(
callback: function,
)
省略可: エンジンが一時停止イベントをサポートしている場合、現在の発話(存在する場合)を発話し続けるために、再開イベントもサポートする必要があります。停止イベントによって一時停止状態もクリアされる必要があります。
パラメータ
-
callback
関数
callback
パラメータは次のようになります。() => void
onSpeak
chrome.ttsEngine.onSpeak.addListener(
callback: function,
)
ユーザーが tts.speak() を呼び出し、この拡張機能のマニフェストの音声の 1 つがオプション オブジェクトに最初に一致する場合に呼び出されます。
パラメータ
-
callback
関数
callback
パラメータは次のようになります。(utterance: string, options: SpeakOptions, sendTtsEvent: function) => void
-
発話
文字列
-
オプション
-
sendTtsEvent
関数
sendTtsEvent
パラメータは次のようになります。(event: tts.TtsEvent) => void
-
イベント
この発話のステータスを示すテキスト読み上げエンジンからのイベント。
-
-
onSpeakWithAudioStream
chrome.ttsEngine.onSpeakWithAudioStream.addListener(
callback: function,
)
ユーザーが tts.speak() を呼び出し、この拡張機能のマニフェストの音声の 1 つがオプション オブジェクトに最初に一致する場合に呼び出されます。ttsEngine.onSpeak との違いは、Chrome が音声再生サービスを提供し、tts イベントのディスパッチを処理する点です。
パラメータ
-
callback
関数
callback
パラメータは次のようになります。(utterance: string, options: SpeakOptions, audioStreamOptions: AudioStreamOptions, sendTtsAudio: function, sendError: function) => void
-
発話
文字列
-
オプション
-
audioStreamOptions
-
sendTtsAudio
関数
sendTtsAudio
パラメータは次のようになります。(audioBufferParams: AudioBuffer) => void
-
audioBufferParams
オーディオ バッファと関連データを含むパラメータ。
-
-
sendError
関数
Chrome 94 以降sendError
パラメータは次のようになります。(errorMessage?: string) => void
-
errorMessage
文字列(省略可)
エラーを説明する文字列。
-
-
onStop
chrome.ttsEngine.onStop.addListener(
callback: function,
)
tts.stop への呼び出しが行われ、この拡張機能が通話中の可能性があるときに呼び出されます。拡張機能が onStop の呼び出しを受け取り、音声がすでに停止している場合は、何もしません(エラーは発生しません)。音声が一時停止状態の場合、これにより一時停止状態がキャンセルされます。
パラメータ
-
callback
関数
callback
パラメータは次のようになります。() => void