Web Speech API

これは実験的な機能です。本番で使用する前にブラウザー実装状況をチェックしてください。

Web Speech API は、音声データをウェブアプリに組み入れることを可能にします。Web Speech API は、SpeechSynthesis (Text-to-Speech; 音声合成) と SpeechRecognition (Asynchronous Speech Recognition; 非同期音声認識) の 2 つの部分から成り立っています。

Web Speech API のコンセプトと使用法

Web Speech API は、ウェブアプリが音声データを扱えるようにします。この API には 2 つの構成要素があります。

  • 音声認識は SpeechRecognition インターフェイス経由でアクセスされます。これは、音声入力 (通常はデバイスのデフォルト音声認識サービスを経由) から音声の文脈を認識し、適切に応答する機能を提供します。通常は、インターフェイスのコンストラクターを使用して新しい SpeechRecognition オブジェクトを生成します。このオブジェクトは、デバイスのマイクを通して入力された音声を検知するための、いくつものイベントハンドラーを持ちます。SpeechGrammar インターフェイスは、あなたのアプリが認識すべき特定の文法群のコンテナーを表します。文法は、JSpeech Grammar Format (JSGF) を使用して定義されています。
  • 音声合成は、SpeechSynthesis インターフェイス経由でアクセスされます。これは、プログラムに、そのテキストコンテンツを読み上げる機能を提供します (通常はデバイスのデフォルトの音声合成を経由)。異なる音声の種類は、SpeechSynthesisVoice オブジェクトで表され、発話してほしいテキストの異なる部分は、SpeechSynthesisUtterance オブジェクトで表されます。これらを SpeechSynthesis.speak() メソッドに渡すことによって発話されます。

これらの機能の使い方についての詳細は、Using the Web Speech API を参照してください。

Web Speech API インターフェイス

音声認識

SpeechRecognition
認識サービスのコントローラーインターフェイスです。認識サービスから送信された SpeechRecognitionEvent も扱います。
SpeechRecognitionAlternative
音声認識サービスにより認識されている単語を表します。
SpeechRecognitionError
認識サービスからのエラーメッセージを表します。
SpeechRecognitionEvent
result イベントおよび nomatch イベントのためのイベントオブジェクトです。暫定あるいは最終の音声認識結果に関連付けられたすべてのデータを含みます。
SpeechGrammar
認識サービスに認識してほしい言葉または言葉のパターンです。
SpeechGrammarList
SpeechGrammar オブジェクトのリストを表します。
SpeechRecognitionResult
一致した一つの認識結果を表します。これには、複数の SpeechRecognitionAlternative オブジェクトが含まれることがあります。
SpeechRecognitionResultList
SpeechRecognitionResult オブジェクトのリストを表します。または、continuous モードで結果が捕捉された場合は、一つだけになります。

音声合成

SpeechSynthesis
音声サービスのコントローラーインターフェイスです。これは、デバイスで利用可能な合成音声についての情報を取得したり、発話の開始や一時停止などのコマンドを実行するために使用されます。
SpeechSynthesisErrorEvent
音声サービスで SpeechSynthesisUtterance オブジェクトの処理中に発生したあらゆるエラーについての情報を含みます。
SpeechSynthesisEvent
音声サービスで処理されている SpeechSynthesisUtterance オブジェクトの現在の状態についての情報を含みます。
SpeechSynthesisUtterance
音声リクエストを表します。これは、音声サービスが読み上げるコンテンツとその読み上げ方 (言語、音声の高低、音量など) についての情報を含みます。
SpeechSynthesisVoice
システムがサポートする音声を表します。すべての SpeechSynthesisVoice は、それ自身に関連する音声サービス (言語、名前、URI についての情報を含む) を持ちます。
Window.speechSynthesis
SpeechSynthesisGetter と呼ばれる [NoInterfaceObject] インターフェイスの一部として定義され、Window オブジェクトによって実装されたことで、speechSynthesis プロパティは SpeechSynthesis コントローラーへのアクセスを提供します。したがって、音声合成機能へのエントリーポイントになります。

Github 上の Web Speech API リポジトリー には、音声合成や音声認識を説明するデモが含まれています。

仕様

仕様書 策定状況 備考
Web Speech API ドラフト 初期定義

ブラウザーの実装状況

SpeechRecognition

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
SpeechRecognition
実験的
Chrome 完全対応 33
接頭辞付き 補足
完全対応 33
接頭辞付き 補足
接頭辞付き webkit のベンダー接頭辞が必要
補足 You'll need to serve your code through a web server for recognition to work.
Edge ? Firefox 未対応 なしIE 未対応 なしOpera 未対応 なしSafari 未対応 なしWebView Android 完全対応 あり
接頭辞付き 補足
完全対応 あり
接頭辞付き 補足
接頭辞付き webkit のベンダー接頭辞が必要
補足 You'll need to serve your code through a web server for recognition to work.
Chrome Android 完全対応 あり
接頭辞付き 補足
完全対応 あり
接頭辞付き 補足
接頭辞付き webkit のベンダー接頭辞が必要
補足 You'll need to serve your code through a web server for recognition to work.
Firefox Android 未対応 なしOpera Android 未対応 なしSafari iOS 未対応 なしSamsung Internet Android ?

凡例

完全対応  
完全対応
未対応  
未対応
実装状況不明  
実装状況不明
実験的。動作が変更される可能性があります。
実験的。動作が変更される可能性があります。
実装ノートを参照してください。
実装ノートを参照してください。
使用するには、ベンダー接頭辞または異なる名前が必要です。
使用するには、ベンダー接頭辞または異なる名前が必要です。

SpeechSynthesis

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
SpeechSynthesis
実験的
Chrome 完全対応 33Edge 完全対応 ありFirefox 完全対応 49IE 未対応 なしOpera 完全対応 21Safari 完全対応 7WebView Android 完全対応 4.4.3Chrome Android 完全対応 33Firefox Android 完全対応 62
完全対応 62
未対応 61 — 62
無効
無効 From version 61 until version 62 (exclusive): this feature is behind the media.webspeech.synth.enabled preference (needs to be set to true). To change preferences in Firefox, visit about:config.
Opera Android 未対応 なしSafari iOS 完全対応 7Samsung Internet Android ?

凡例

完全対応  
完全対応
未対応  
未対応
実装状況不明  
実装状況不明
実験的。動作が変更される可能性があります。
実験的。動作が変更される可能性があります。
ユーザーが明示的にこの機能を有効にしなければなりません。
ユーザーが明示的にこの機能を有効にしなければなりません。

関連項目