Web Speech APIとは、音声認識と音声合成のAPIです。
var recognition = new window.SpeechRecognition();
recognition.onresult = function( event )
{
if( 0 < event.results.length )
{
alert( event.results[ 0 ][ 0 ].transcript );
}
}
// 認識を開始する
recognition.start();
6.1 Speech Recognition Examples - Web Speech API Specification
マイクの許可を求めるダイアログに対しては、Tab、Enterと連続して押すことで、キーボードからの操作で[許可]できます。
認識対象の音声はマイクから入力することが想定されているようですが、これを音声ファイルからの入力に変更できます。それにはサウンドの設定で、再生デバイスの[スピーカー]と録音デバイスの[ステレオ ミキサー]を、共に[既定のデバイス]とします。
またはプレーヤーで再生デバイスを、そしてブラウザで入力デバイスを明示しても同じです。たとえばChromeではコンテンツの設定で、マイクの入力デバイスを指定できます。
Windows Media Playerでの再生デバイスの指定 |
Chromeでの入力デバイスの指定 |
ファイルからの入力時に'no-speech'としてエラーとなる場合には、スピーカーの音量 (レベル) を確認します。
'not-allowed'とエラーが返されるときは、マイクの使用が許可されていません。たとえばChromeならばその設定はコンテンツの設定にあり、そこで[カメラやマイクへのアクセスをサイトに許可しない]とされているか、メディアの例外でブロックされていると、音声認識は実行できません。サイトによるカメラとマイクへのアクセスを許可する - Chrome ヘルプ
このメディアの例外に許可として記録されるのはhttpsに対応したサイトのみで、それ以外では許可を毎回指示せねばなりません。
認識結果として返される候補の数を指示できます。既定では1つしか結果が返されませんが、これを複数の候補が返されるように変更できます。
認識結果 | 信頼度 |
---|
認識処理の途中でも、結果を返すように指示できます。
認識されるごとに追記される結果により、処理過程を確認できます。
認識単位ごとに、結果を返すように指示できます。
認識単位ごとに、結果をリスト表示します。確定前の結果はグレー、確定後は黒と、文字色で状態を表します。
認識対象の言語を指定できます。これを指定しない場合は、html要素のlang属性の値が用いられます。
var utterance = new SpeechSynthesisUtterance(); utterance.text = 'hello'; utterance.lang = 'en-US'; speechSynthesis.speak( utterance );6.2 Speech Synthesis Examples - Web Speech API Specification
langプロパティで指定する言語コードは、Tags for Identifying Languagesに詳細があります。