Web Speech API

Web Speech APIとは、音声認識と音声合成のAPIです。

SpeechRecognition (音声認識)

認識結果
信頼度
ログ
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

導入

マイクの許可

マイクの許可を求めるダイアログに対しては、TabEnterと連続して押すことで、キーボードからの操作で[許可]できます。

音声ファイルからの入力

認識対象の音声はマイクから入力することが想定されているようですが、これを音声ファイルからの入力に変更できます。それにはサウンドの設定で、再生デバイスの[スピーカー]と録音デバイスの[ステレオ ミキサー]を、共に[既定のデバイス]とします。

またはプレーヤーで再生デバイスを、そしてブラウザで入力デバイスを明示しても同じです。たとえばChromeではコンテンツの設定で、マイクの入力デバイスを指定できます。


Windows Media Playerでの再生デバイスの指定

Chromeでの入力デバイスの指定

ファイルからの入力時に'no-speech'としてエラーとなる場合には、スピーカーの音量 (レベル) を確認します。

エラーへの対処

'not-allowed'とエラーが返されるときは、マイクの使用が許可されていません。たとえばChromeならばその設定はコンテンツの設定にあり、そこで[カメラやマイクへのアクセスをサイトに許可しない]とされているか、メディアの例外でブロックされていると、音声認識は実行できません。サイトによるカメラとマイクへのアクセスを許可する - Chrome ヘルプ

このメディアの例外に許可として記録されるのはhttpsに対応したサイトのみで、それ以外では許可を毎回指示せねばなりません。

プロパティ

maxAlternatives

認識結果として返される候補の数を指示できます。既定では1つしか結果が返されませんが、これを複数の候補が返されるように変更できます。

認識結果 信頼度

interimResults

認識処理の途中でも、結果を返すように指示できます。

認識されるごとに追記される結果により、処理過程を確認できます。

 

continuous

認識単位ごとに、結果を返すように指示できます。

認識単位ごとに、結果をリスト表示します。確定前の結果はグレー、確定後は黒と、文字色で状態を表します。

 

    lang

    認識対象の言語を指定できます。これを指定しない場合は、html要素のlang属性の値が用いられます。

     

     

    SpeechSynthesis (音声合成)

    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に詳細があります。

    JavaScriptのドキュメントから検索