chrome.tts

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

説明

chrome.tts API を使用して、合成されたテキスト読み上げ(TTS)を再生します。拡張機能で音声エンジンを実装できるようにする、関連する ttsEngine API もご覧ください。

権限

tts

概要

Chrome は、オペレーティング システムが提供する音声合成機能を使用して、Windows(SAPI 5 を使用)、Mac OS X、ChromeOS で音声をネイティブにサポートしています。すべてのプラットフォームで、ユーザーは代替音声エンジンとして登録される拡張機能をインストールできます。

音声を生成しています

内線から 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);
    }
  }
);

コールバックは、エンジンが音声の生成を開始する前にすぐに戻ります。コールバックの目的は、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 つは最終です。これらのイベントのいずれかを受信すると、この発話はそれ以上読み上げられず、この発話からの新しいイベントは受信されなくなります。

一部の音声は、すべてのイベントタイプをサポートしていない場合があります。また、一部の音声はイベントをまったく送信しない場合があります。特定のイベントを送信しない限り音声を使用しない場合は、必要なイベントをオプション オブジェクトの requiredEventTypes メンバーに渡すか、getVoices() を使用して要件を満たす音声を選択します。以下では、この両方の指定方法について説明します。

SSML マークアップ

この API で使用される発話には、音声合成マークアップ言語(SSML)を使用したマークアップが含まれる場合があります。SSML を使用する場合、speak() の最初の引数は、ドキュメント フラグメントではなく、XML ヘッダーと最上位の <speak> タグを含む完全な SSML ドキュメントにする必要があります。

次に例を示します。

chrome.tts.speak(
  '<?xml version="1.0"?>' +
  '<speak>' +
  '  The <emphasis>second</emphasis> ' +
  '  word of this sentence was emphasized.' +
  '</speak>'
);

すべての音声エンジンがすべての SSML タグをサポートしているわけではなく、SSML をまったくサポートしていないエンジンもありますが、すべてのエンジンは、サポートしていない SSML を無視し、基になるテキストを読み上げる必要があります。

音声の選択

デフォルトでは、Chrome は言語に基づいて、読み上げる各発話に最も適した音声を選択します。ほとんどの Windows、Mac OS X、ChromeOS システムでは、オペレーティング システムが提供する音声合成機能により、少なくとも 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

Chrome 54 以降

列挙型

"start"

"end"

"word"

"sentence"

"marker"

"interrupted"

"cancelled"

"error"

「一時停止」

"resume"

TtsEvent

発話のステータスを伝える TTS エンジンからのイベント。

プロパティ

  • charIndex

    number 省略可

    発話内の現在の文字のインデックス。単語イベントの場合、イベントは 1 つの単語の終わりと次の単語の始まりの間に発生します。charIndex は、次に読み上げられる単語の先頭にあるテキスト内のポイントを表します。

  • errorMessage

    文字列 省略可

    イベントタイプが error の場合のエラーの説明。

  • 長さ

    number 省略可

    Chrome 74 以降

    発話の次の部分の長さ。たとえば、word イベントでは、次に読み上げられる単語の長さです。音声エンジンによって設定されていない場合は、-1 に設定されます。

  • type

    タイプは、音声が開始されるとすぐに start、単語の境界に達すると word、文の境界に達すると sentence、SSML マーク要素に達すると marker、発話の終わりに達すると end、発話が終わりに達する前に停止または中断されると interrupted、合成される前にキューから削除されると cancelled、その他のエラーが発生すると error になります。音声を一時停止すると、特定の発話が途中で一時停止された場合は pause イベントが、発話が再開された場合は resume イベントが呼び出されます。発話の合間に音声が一時停止された場合、一時停止イベントと再開イベントは発生しないことがあります。

TtsOptions

Chrome 77 以降

TTS エンジンの音声オプション。

プロパティ

  • desiredEventTypes

    string[] 省略可

    リッスンする TTS イベントタイプ。指定しない場合、すべてのイベントタイプが送信される可能性があります。

  • enqueue

    boolean 省略可

    true の場合、TTS がすでに進行中であれば、この発話をキューに入れます。false(デフォルト)の場合、現在の音声を中断し、音声キューをフラッシュしてから、この新しい発話を発音します。

  • extensionId

    文字列 省略可

    使用する音声エンジンの拡張機能 ID(わかっている場合)。

  • gender

    VoiceGender 省略可

    Chrome 77 以降、非推奨

    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 を超える値は厳密に禁止されていますが、多くの音声では最小速度と最大速度がさらに制限されます。たとえば、特定の音声では、3.0 より大きい値を指定しても、実際には通常の 3 倍より速く話すことはできません。

  • requiredEventTypes

    string[] 省略可

    音声がサポートする必要がある TTS イベントタイプ。

  • voiceName

    文字列 省略可

    合成に使用する音声の名前。空の場合、使用可能な音声が使用されます。

  • ボリューム

    number 省略可

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

  • onEvent

    void optional

    この関数は、発話の読み上げプロセスで発生するイベントとともに呼び出されます。

    onEvent 関数は次のようになります。

    (event: TtsEvent) => {...}

    • イベント

      この発話のステータスを示す、テキスト読み上げエンジンからの更新イベント。

TtsVoice

音声合成に使用できる音声の説明。

プロパティ

  • eventTypes

    EventType[] 省略可

    この音声が送信できるすべてのコールバック イベントタイプ。

  • extensionId

    文字列 省略可

    この音声を提供する拡張機能の ID。

  • gender

    VoiceGender 省略可

    Chrome 70 以降、非推奨

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

    この音声の性別。

  • lang

    文字列 省略可

    この音声がサポートする言語(言語-地域の形式)。例: 'en'、'en-US'、'en-GB'、'zh-CN'。

  • リモコン

    boolean 省略可

    true の場合、合成エンジンはリモート ネットワーク リソースです。レイテンシが高くなり、帯域幅の費用が発生する可能性があります。

  • voiceName

    文字列 省略可

    音声の名前。

VoiceGender

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

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

列挙型

"male"

"female"

メソッド

getVoices()

Promise
chrome.tts.getVoices(
  callback?: function,
)
: Promise<TtsVoice[]>

利用可能なすべての音声の配列を取得します。

パラメータ

  • callback

    function 省略可

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

    (voices: TtsVoice[]) => void

    • 声

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

戻り値

  • Promise<TtsVoice[]>

    Chrome 101 以降

    Promise は Manifest V3 以降でのみサポートされています。他のプラットフォームではコールバックを使用する必要があります。

isSpeaking()

Promise
chrome.tts.isSpeaking(
  callback?: function,
)
: Promise<boolean>

エンジンが現在発話しているかどうかを確認します。Mac OS X では、Chrome によって音声が開始されていない場合でも、システム音声エンジンが話しているときは常に結果が true になります。

パラメータ

  • callback

    function 省略可

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

    (speaking: boolean) => void

    • 話す

      ブール値

      発言中の場合は true、それ以外の場合は false。

戻り値

  • Promise<boolean>

    Chrome 101 以降

    Promise は Manifest V3 以降でのみサポートされています。他のプラットフォームではコールバックを使用する必要があります。

pause()

chrome.tts.pause(): void

音声合成を一時停止します。発話の途中で一時停止することもあります。再開または停止を呼び出すと、音声の一時停止が解除されます。

resume()

chrome.tts.resume(): void

音声が一時停止していた場合は、中断したところから再開します。

speak()

Promise
chrome.tts.speak(
  utterance: string,
  options?: TtsOptions,
  callback?: function,
)
: Promise<void>

テキスト読み上げエンジンを使用してテキストを読み上げます。

パラメータ

  • 発話

    文字列

    読み上げるテキスト。書式なしテキストまたは完全で整形式の SSML ドキュメント。SSML をサポートしていない音声エンジンは、タグを削除してテキストを読み上げます。テキストの最大長は 32,768 文字です。

  • オプション

    TtsOptions 省略可

    音声オプション。

  • callback

    function 省略可

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

    () => void

戻り値

  • Promise<void>

    Chrome 101 以降

    音声が終了する前にすぐに解決します。エラーが発生すると、Promise は拒否されます。options.onEvent を使用して、より詳細なフィードバックを取得します。

    Promise は Manifest V3 以降でのみサポートされています。他のプラットフォームではコールバックを使用する必要があります。

stop()

chrome.tts.stop(): void

現在の音声を停止し、保留中の発話のキューをフラッシュします。また、音声が一時停止されていた場合は、次の speak 呼び出しで一時停止が解除されるようになりました。

イベント

onVoicesChanged

Chrome 124 以降
chrome.tts.onVoicesChanged.addListener(
  callback: function,
)

getVoices によって返される tts.TtsVoice のリストが変更されたときに呼び出されます。

パラメータ

  • callback

    関数

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

    () => void