chrome.ttsEngine

更新日: 2026-09-25 robots: noindex

説明

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 つの言語でのみ音声を合成できます。エンジンが複数の言語をサポートしている場合は、言語ごとに個別の音声を簡単に登録できます。1 つの音声で複数の言語を処理できるというまれな状況では、2 つの個別の音声をリストし、内部で同じロジックを使用して処理するのが最も簡単です。ただし、任意の言語の発話を処理する音声を作成する場合は、拡張機能のマニフェストから lang パラメータを省略します。

最後に、エンジンがイベントを送信して音声合成の進行状況をクライアントに通知できる場合は、event_types パラメータが必要です。少なくとも、音声の終了を示す 'end' イベントタイプをサポートすることを強くおすすめします。そうしないと、Chrome はキューに格納された発話をスケジュールできません。

読み込まれた拡張機能は、chrome.ttsEngine.updateVoices を呼び出すことで、宣言された音声のリストを置き換えることができます。(updateVoices へのプログラム呼び出しで使用されるパラメータは、voice_name を使用するマニフェスト ファイルとは異なり、キャメルケース(例: voiceName)であることに注意してください)。

送信可能なイベントタイプは、speak() メソッドが受信するイベントタイプに対応しています。

  • 'start': エンジンが発話の読み上げを開始しました。
  • 'word': 単語の境界に達しました。event.charIndex を使用して、現在の音声位置を特定します。
  • 'sentence': 文の境界に達しました。event.charIndex を使用して、現在の音声位置を特定します。
  • 'marker': SSML マーカーに到達しました。event.charIndex を使用して、現在の音声位置を特定します。
  • 'end': エンジンが発話の読み上げを完了しました。
  • 'error': エンジン固有のエラーが発生したため、この発話は読み上げられません。event.errorMessage でより多くの情報を渡します。

'interrupted' イベントと 'cancelled' イベントは、音声エンジンによって送信されるのではなく、Chrome によって自動的に生成されます。

テキスト読み上げクライアントは、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

Chrome 92 以降

音声バッファと関連データを含むパラメータ。

プロパティ

  • audioBuffer

    ArrayBuffer

    テキスト読み上げエンジンからの音声バッファ。長さは audioStreamOptions.bufferSize と正確に一致し、audioStreamOptions.sampleRate でモノラルとしてエンコードされ、リニア PCM、32 ビット符号付き浮動小数点(JavaScript の Float32Array 型)としてエンコードされている必要があります。

  • charIndex

    number 省略可

    この音声バッファに関連付けられている文字インデックス。

  • isLastBuffer

    boolean 省略可

    この音声バッファが、読み上げられるテキストの最後のバッファである場合は true。

AudioStreamOptions

Chrome 92 以降

エンジンによって生成されることが想定される音声ストリーム形式が含まれます。

プロパティ

  • bufferSize

    数値

    オーディオ バッファ内のサンプル数。

  • sampleRate

    数値

    オーディオ バッファで想定されるサンプルレート。

LanguageInstallStatus

Chrome 132 以降

音声のインストール ステータス。

列挙型

"notInstalled"

"installing"

"installed"

"failed"

LanguageStatus

Chrome 132 以降

言語のインストール ステータス。

プロパティ

  • エラー

    文字列 省略可

    インストール エラーの詳細。言語のインストールに失敗した場合に、必要に応じて入力されます。

  • installStatus

    インストール ステータス。

  • lang

    文字列

    言語コードと地域コードの形式の言語文字列。地域は省略できます。例: en、en-AU、zh-CH。

LanguageUninstallOptions

Chrome 132 以降

特定の言語をアンインストールするためのオプション。

プロパティ

  • uninstallImmediately

    ブール値

    TTS クライアントが言語をすぐにアンインストールする場合は true。エンジンは、このパラメータとリクエスト元の情報に基づいて、言語をアンインストールするかどうか、またはいつアンインストールするかを選択できます。false の場合、最近の使用状況など、他の条件を使用してアンインストールのタイミングを決定することがあります。

SpeakOptions

Chrome 92 以降

tts.speak() メソッドに指定されたオプション。

プロパティ

  • gender

    VoiceGender 省略可

    Chrome 92 以降、非推奨

    gender は非推奨となり、無視されます。

    合成音声の性別。

  • lang

    文字列 省略可

    合成に使用する言語(言語-地域の形式)。例: 'en'、'en-US'、'en-GB'、'zh-CN'。

  • 投球

    number 省略可

    0 ~ 2 の範囲の音声ピッチ。0 が最も低く、2 が最も高くなります。1.0 は、この音声のデフォルトのピッチに対応します。

  • 速度

    number 省略可

    この音声のデフォルトの速度に対する発話速度。1.0 はデフォルトの速度で、通常は 1 分あたり 180 ~ 220 語程度です。2.0 はその 2 倍の速さで、0.5 は半分の速さです。この値は 0.1 ~ 10.0(両端の値を含む)の範囲内であることが保証されます。音声がこの範囲のレートをサポートしていない場合でも、エラーを返さないでください。代わりに、音声がサポートする範囲にレートをクリップします。

  • voiceName

    文字列 省略可

    合成に使用する音声の名前。

  • ボリューム

    number 省略可

    発話音量は 0 ~ 1 の範囲で指定します。0 が最小、1 が最大で、デフォルトは 1.0 です。

TtsClient

Chrome 131 以降

ステータスをリクエストしているクライアントの識別子。

プロパティ

  • id

    文字列

    言語管理リクエストを行うクライアント。拡張機能の場合は、一意の拡張機能 ID です。Chrome の機能の場合、これは人が読める形式の機能名です。

  • ソース

    リクエスト元のタイプ。

TtsClientSource

Chrome 131 以降

リクエスト元のタイプ。

列挙型

"chromefeature"

"extension"

VoiceGender

Chrome 54 以降 Chrome 70 以降は非推奨

gender は非推奨となり、無視されます。

列挙型

"male"

"female"

メソッド

updateLanguage()

Chrome 132 以降
chrome.ttsEngine.updateLanguage(
  status: LanguageStatus,
)
: void

言語のインストールが試行されたときと、言語がアンインストールされたときに、エンジンによって呼び出されます。クライアントからのステータス リクエストに応答して呼び出されることもあります。音声がインストールまたはアンインストールされた場合、エンジンは ttsEngine.updateVoices を呼び出して音声を登録する必要があります。

パラメータ

  • ステータス

    言語のインストール ステータス。

updateVoices()

Chrome 66 以降
chrome.ttsEngine.updateVoices(
  voices: TtsVoice[],
)
: void

音声のリストを更新するためにエンジンによって呼び出されます。このリストは、この拡張機能のマニフェストで宣言されている音声をオーバーライドします。

パラメータ

  • 声

    音声合成に使用できる音声を表す tts.TtsVoice オブジェクトの配列。

イベント

onInstallLanguageRequest

Chrome 131 以降
chrome.ttsEngine.onInstallLanguageRequest.addListener(
  callback: function,
)

TTS クライアントが新しい言語のインストールをリクエストしたときに呼び出されます。エンジンは、言語のダウンロードとインストールを試み、その結果を引数として ttsEngine.updateLanguage を呼び出す必要があります。成功すると、エンジンは ttsEngine.updateVoices を呼び出して、新しく利用可能になった音声を登録する必要があります。

パラメータ

  • callback

    関数

    callback パラメータは次のようになります。

    (requestor: TtsClient, lang: string) => void

    • リクエスト元
    • lang

      文字列

onLanguageStatusRequest

Chrome 132 以降
chrome.ttsEngine.onLanguageStatusRequest.addListener(
  callback: function,
)

TTS クライアントが言語のインストール ステータスをリクエストしたときに呼び出されます。

パラメータ

  • callback

    関数

    callback パラメータは次のようになります。

    (requestor: TtsClient, lang: string) => void

    • リクエスト元
    • lang

      文字列

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 92 以降
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

onUninstallLanguageRequest

Chrome 132 以降
chrome.ttsEngine.onUninstallLanguageRequest.addListener(
  callback: function,
)

TTS クライアントが言語が不要になったことを示すと呼び出されます。

パラメータ