説明
chrome.tts
API を使用して、合成テキスト読み上げ(TTS)を再生します。関連する ttsEngine
API もご覧ください。この API を使用すると、拡張機能で音声エンジンを実装できます。
Chrome では、Windows(SAPI 5 を使用)、Mac OS X、ChromeOS で 音声合成機能を使用できます。どのプラットフォームでも 自身を代替音声エンジンとして登録する拡張機能をインストールします。
権限
tts
コンセプトと使用方法
音声を生成する
拡張機能から speak()
を呼び出して発言してください。例:
chrome.tts.speak('Hello, world.');
直ちに読み上げを停止するには、stop()
を呼び出します。
chrome.tts.stop();
音声のさまざまなプロパティ(速度、ピッチ、音声など)を制御するオプションを提供できます。 できます。例:
chrome.tts.speak('Hello, world.', {'rate': 2.0});
また、その言語をサポートするシンセサイザー(および (該当する場合)が選択されます。
chrome.tts.speak('Hello, world.', {'lang': 'en-US', 'rate': 2.0});
デフォルトでは、speak()
を呼び出すたびに、進行中の音声が中断してすぐに読み上げられます。宛先
呼び出しが何かを中断するかどうかを判断するには、isSpeaking()
を呼び出します。さらに、
enqueue
オプションを使用すると、この発話がキューに追加され、
現在の発話が終了したときに読み上げられます。
chrome.tts.speak('Speak this first.');
chrome.tts.speak(
'Speak this next, when the first sentence is done.', {'enqueue': true});
すべてのオプションの詳細については、tts.speak()
をご覧ください。音声のみ
すべてのオプションをサポートします。
エラーを捕捉して speak()
を正しく呼び出していることを確認するには、
引数は取りません。コールバック内で、runtime.lastError
を調べて、
エラーになります。
chrome.tts.speak(
utterance,
options,
function() {
if (chrome.runtime.lastError) {
console.log('Error: ' + chrome.runtime.lastError.message);
}
}
);
コールバックは、エンジンが音声の生成を開始する前に、すぐに返されます。Pod の TTS API の使用における構文エラーを警告するものであり、考えられるすべての 音声の合成と出力のプロセスで発生しうるエラーです。エラーを検出するには 次のセクションで説明するように、イベント リスナーを使用する必要があります。
イベントをリッスンする
合成音声のステータスについて、よりリアルタイムの情報を取得するには、イベント リスナーを
次のように speak()
のオプションを追加します。
chrome.tts.speak(
utterance,
{
onEvent: function(event) {
console.log('Event ' + event.type + ' at position ' + event.charIndex);
if (event.type == 'error') {
console.log('Error: ' + event.errorMessage);
}
}
},
callback
);
各イベントには、イベントの種類が含まれます。イベントの種類と、現在の音声の エラーイベントの場合は省略可能なエラー メッセージです。イベントタイプには次のものがあります。
'start'
: エンジンが発話を開始しました。'word'
: 単語境界に達しました。event.charIndex
を使用して現在の音声を特定する なります。'sentence'
: 文の境界に達しました。event.charIndex
を使用して現在の 認識できます'marker'
: SSML マーカーに到達しました。event.charIndex
を使用して現在の音声を特定する なります。'end'
: エンジンが発話を終了しました。'interrupted'
: この発話はspeak()
またはstop()
への別の呼び出しによって中断されました。 完了しません。'cancelled'
: この発話はキューに追加されましたが、speak()
への別の呼び出しによってキャンセルされました。stop()
で、まったくしゃべりませんでした。'error'
: エンジン固有のエラーが発生したため、この発話を読み取れません。確認 詳しくは、event.errorMessage
。
イベントタイプ 'end'
、'interrupted'
、'cancelled'
、'error'
の 4 つは final です。変更後
受信すると、この発話は読み上げられなくなり、この発話からの新しいイベントは
受信します。
音声によっては、一部のイベントタイプに対応していない場合や、イベントをまったく送信しない場合があります。もし
特定のイベントを送信しない限り音声を使用しない場合は、必要なイベントを
オプション オブジェクトの requiredEventTypes
メンバーを指定するか、getVoices()
を使用して
選択できます。以下では、この両方について説明します。
SSML マークアップ
この API で使用される発話には、音声合成マークアップ言語(Speech Synthesis Markup Language)を使用したマークアップが含まれる場合があります。
(SSML)。SSML を使用する場合は、speak()
の最初の引数を、以下を含む完全な SSML ドキュメントにする必要があります。
XML ヘッダーとトップレベルの <speak>
タグであり、ドキュメント フラグメントではありません。
例:
chrome.tts.speak(
'<?xml version="1.0"?>' +
'<speak>' +
' The <emphasis>second</emphasis> ' +
' word of this sentence was emphasized.' +
'</speak>'
);
すべての音声エンジンがすべての SSML タグをサポートしているわけではなく、サポートしていないものもありますが、 サポートしていない SSML を無視し、元のテキストを読み上げる必要があります。
音声を選択
デフォルトでは、Chrome はユーザーの発話ごとに最適な音声を選択します。 できます。Windows、Mac OS X、ChromeOS のほとんどのシステムでは、音声合成は OS は、少なくとも 1 つの言語であらゆるテキストを読み上げられる必要があります。ユーザーによっては、 ただし、オペレーティング システムや実装された音声認識エンジンから、 他の Chrome 拡張機能による変更です。そのような場合は、カスタムコードを実装して、 選択肢のリストを提示することもできます。
すべての音声のリストを取得するには、getVoices()
を呼び出して、
TtsVoice
オブジェクトを引数として使用します。
chrome.tts.getVoices(
function(voices) {
for (var i = 0; i < voices.length; i++) {
console.log('Voice ' + i + ':');
console.log(' name: ' + voices[i].voiceName);
console.log(' lang: ' + voices[i].lang);
console.log(' extension id: ' + voices[i].extensionId);
console.log(' event types: ' + voices[i].eventTypes);
}
}
);
型
EventType
列挙型
"start"
「終了」
"単語"
"sentence"
マーカー
"中断されました"
"cancelled"
「error」
「一時停止」
「再開」
TtsEvent
発話のステータスを伝える TTS エンジンからのイベント。
プロパティ
-
charIndex
数値(省略可)
発話中の現在の文字のインデックス。単語のイベントの場合、イベントは 1 つの単語の終わりと次の単語の開始前に発生します。
charIndex
は、次に発話される単語の先頭にある、テキスト内の位置を表します。 -
errorMessage
文字列(省略可)
エラーの説明(イベントタイプが
error
の場合)。 -
長さ
数値(省略可)
Chrome 74 以降発話の次の部分の長さ。たとえば
word
イベントの場合、これは次に読み上げられる単語の長さです。Speech Engine によって設定されない場合は -1 に設定されます。 -
type
タイプは、音声が開始されたらすぐに
start
、単語の境界に達した場合はword
、文の境界に達した場合はsentence
、SSML マーク要素に達した場合はmarker
、発話の終わりに達した場合はend
、発話が最後まで停止または中断された場合はinterrupted
、合成される前にキューから削除された場合はcancelled
、その他のエラーが発生した場合はerror
になります。音声を一時停止すると、特定の発話が途中で一時停止するとpause
イベントが発生します。また、その発話によって音声が再開されるとresume
イベントが発生します。発話間で音声が一時停止されると、一時停止イベントと再開イベントが起動しないことがあります。
TtsOptions
TTS エンジンの音声オプション。
プロパティ
-
desiredEventTypes
文字列 [] 省略可
リッスンする TTS イベントタイプ。指定しなかった場合、すべての種類のイベントが送信されます。
-
キューに追加
ブール値(省略可)
true の場合、TTS がすでに進行中であれば、この発話をキューに追加します。false(デフォルト)の場合、現在の音声を中断し、この新しい発話を読み上げる前に音声キューをフラッシュします。
-
extensionId
文字列(省略可)
使用する音声エンジンの拡張機能 ID(判明している場合)。
-
gender
VoiceGender 省略可
<ph type="x-smartling-placeholder"></ph> Chrome 77 以降非推奨性別はサポートが終了したため、無視されます。
合成音声の性別。
-
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 を超える値は厳格に禁止されますが、多くの音声では最小レートと最大レートがさらに制約されます。たとえば、3.0 より大きい値を指定しても、特定の音声が実際には通常の 3 倍より速く発話するとは限りません。
-
requiredEventTypes
文字列 [] 省略可
音声がサポートする必要がある TTS イベントタイプ。
-
voiceName
文字列(省略可)
合成に使用する音声の名前。空の場合、使用可能な音声が使用されます。
-
音量
数値(省略可)
0 から 1 までの読み上げ音量。0 が最小、1 が最大、デフォルトは 1.0 です。
-
onEvent
void(省略可)
この関数は、発話の過程で発生したイベントによって呼び出されます。
onEvent
関数は次のようになります。(event: TtsEvent) => {...}
-
イベント
この発話のステータスを示すテキスト読み上げエンジンからの更新イベント。
-
TtsVoice
音声合成に使用できる音声の説明。
プロパティ
-
eventTypes
EventType[] 省略可
この音声が送信できるすべてのコールバック イベントタイプ。
-
extensionId
文字列(省略可)
この音声を提供する拡張機能の ID。
-
gender
VoiceGender 省略可
<ph type="x-smartling-placeholder"></ph> Chrome 70 以降非推奨性別はサポートが終了したため、無視されます。
この音声の性別。
-
lang
文字列(省略可)
この音声がサポートする言語(言語-地域の形式)。例: 「en」、「en-US」、「en-GB」、「zh-CN」。
-
リモコン
ブール値(省略可)
true の場合、合成エンジンはリモート ネットワーク リソースです。レイテンシが高くなり、帯域幅の費用が発生する可能性があります。
-
voiceName
文字列(省略可)
音声の名前。
VoiceGender
性別はサポートが終了し、無視されます。
列挙型
「男性」
"女性"
メソッド
getVoices()
chrome.tts.getVoices(
callback?: function,
)
使用可能なすべての音声の配列を取得します。
パラメータ
-
callback
関数(省略可)
callback
パラメータは次のようになります。(voices: TtsVoice[]) => void
-
声
TtsVoice[]
音声合成で使用可能な音声を表す
tts.TtsVoice
オブジェクトの配列。
-
戻り値
-
Promise<TtsVoice[]>
Chrome 101 以降Promise は Manifest V3 以降でサポートされていますが、 下位互換性が確保されます同じ関数呼び出しで両方を使用することはできません。「 Promise はコールバックに渡された型と同じ型で解決されます。
isSpeaking()
chrome.tts.isSpeaking(
callback?: function,
)
エンジンが現在発言しているかどうかを確認します。Mac OS X では、Chrome によって開始された音声でなくても、システム音声エンジンが読み上げているときは常に true になります。
パラメータ
-
callback
関数(省略可)
callback
パラメータは次のようになります。(speaking: boolean) => void
-
話す
ブール値
話す場合は true、それ以外の場合は false。
-
戻り値
-
Promise<boolean>
Chrome 101 以降Promise は Manifest V3 以降でサポートされていますが、 下位互換性が確保されます同じ関数呼び出しで両方を使用することはできません。「 Promise はコールバックに渡された型と同じ型で解決されます。
pause()
chrome.tts.pause()
音声合成を一時停止します。発話の途中でも停止します。通話を再開または停止すると、音声の一時停止が解除されます。
resume()
chrome.tts.resume()
音声が一時停止されていた場合は、中断したところから話を再開します。
speak()
chrome.tts.speak(
utterance: string,
options?: TtsOptions,
callback?: function,
)
テキスト読み上げエンジンを使用してテキストを読み上げます。
パラメータ
-
発話
文字列
読み上げるテキスト。書式なしテキスト、または完全な整形式の SSML ドキュメントのいずれかです。SSML をサポートしていない音声エンジンはタグを取り除き、テキストを読み上げます。テキストの最大長は 32,768 文字です。
-
オプション
TtsOptions(省略可)
音声オプション。
-
callback
関数(省略可)
callback
パラメータは次のようになります。() => void
戻り値
-
約束 <void>
Chrome 101 以降Promise は Manifest V3 以降でサポートされていますが、 下位互換性が確保されます同じ関数呼び出しで両方を使用することはできません。「 Promise はコールバックに渡された型と同じ型で解決されます。
stop()
chrome.tts.stop()
現在の音声を停止し、保留中の発話のキューをフラッシュします。また、音声が一時停止されていた場合は、次の通話で一時停止が解除されます。
イベント
onVoicesChanged
chrome.tts.onVoicesChanged.addListener(
callback: function,
)
getVoices によって返される tts.TtsVoice
のリストが変更されたときに呼び出されます。
パラメータ
-
callback
関数
callback
パラメータは次のようになります。() => void