LoginSignup
41
38

More than 5 years have passed since last update.

WebSpeechAPIの概略

Posted at

ウェブで資料を探している際、「How to」はあっても、概略が意外になかったので、自分用メモも兼ねて記録を残しておきます。

WebSpeechAPIとは

 W3Cコミュニティグループによって策定されている仕様の一つです。いずれは各ブラウザで実装されるかもしれません。が、現段階では完全に動作するのはChromeのみです。後述する音声合成は多くのブラウザで実装済みですが、音声認識がChromeでしか動かないようです。
 音声合成機能と音声認識機能の二つを合わせて、WebSpeechAPIと定義されています。音声合成は文字列を喋らせる機能、音声認識はマイクの音声を認識させる機能です。
 単純に「WebSpeechAPI」で検索すると音声合成機能と音声認識機能の両方が引っかかってきます。音声合成単独では「Web Speech Synthesis API」、音声認識単独では「Web Speech Recognition API」と定義されます。
 音声合成や音声認識の資料をピンポイントで探したい場合は上記の単語で検索すると捗ります。ただ、現状では資料自体が少ないため、「WebSpeechAPI」で検索した後、自身で精査する方が精度が高いように思われます。
 仕様についてはMDNのドキュメントが一次資料になります。が、日本語訳されたページが少ないです。僕のように英検準二級で止まってるような人間には辛いです。個人的には、「Web Speech API | JavaScript プログラミング解説 - so-zou.jp」が一番まとまっていて、分かりやすいと感じました。

音声合成

 音声合成は実装されているボイスがブラウザ依存になっています。男女日欧中などブラウザによって幅広い選択も可能です。逆に言うと、ブラウザ依存のため、ボイス関連は細かく作り込むとドツボにはまりそうな気がします。
 自分が使ってみたもの、使うだろうものをコピペ用にピックアップしています。詳細やその他のパラメータはMDNを見てください。

種別 名称 説明 設定値
パラメータ lang ボイスの種類
volume 再生音量 0~1
rate 再生速度 0.1~2
pitch 再生ピッチ 0~2
関数 speak 再生
cancel 停止
pause 一時中断
resume 再開
イベント start 再生開始時
end 終了時
pause 一時中断時
resume 再開時
error エラー時
boundary テキストの境目に来た場合
ステータス pending 再生待ちキューあり
speaking 再生中
paused 一時中断中

音声認識

 音声認識はGoogleの「Cloud Speech API」を内部で実装しているようです。「Cloud Speech API」は利用時間で料金を支払う仕様ですが、Chrome経由で使用する場合のみ時間制限や利用料金を発生させないことにしているようです。
 Googleにデモページが用意されています。文字入力部分のみ実装されていますが、有用性を理解するのには十分かと思います。
 注意事項として、実行にあたって「マイクの許可」が必要になります。加えて、セキュリティ上の問題から、httpsのサイトでしか動作しません。ローカルでコーディングしても、デバッグはどこかにアップしないといけません。私自身もここではまって、何時間か無駄にしました。
 また、音声認識処理に受付時間が設定されており、一定時間で終了します。Googleのサーバを利用しており、本来は利用時間で料金が設定されているものなので、長時間の受付は想定外なのだと思われます。
 終了時に実行関数を再度呼び出すことで、じゃっかんのラグを挟みつつ、疑似的に音声認識をループさせることは可能です。ただ、つなぎっぱなしにするということはその時間だけGoogleのサーバに負荷をかけることになるので、推奨はされていないように思われます。今後普及した際にブロックされるような気がするので、ループありきの設計はしない方が無難に思われます。
 自分が使ってみたもの、使うだろうものをコピペ用にピックアップしています。詳細やその他のパラメータはMDNを見てください。

種別 名称 説明
パラメータ maxAlternatives 認識候補の数 int
interimResults 認識途中の結果を返す false/true
continuous 認識単位毎の出力 false/true
lang 認識する言語 言語
関数 start 音声認識開始
stop 停止
イベント start 再生開始時
end 終了時
audiostart 音声キャプチャ開始時
audioend 音声キャプチャ終了時
soundstart 音声検出開始時
soundend 音声検出終了時
speechstart 音声認識開始時
speechend 音声認識終了時
nomatch 合致するものがない場合
result 合致するものがある場合
error エラー時

デモページ

音声合成
Web Speech APIの実装 - Speech Synthesis API | CodeGrid
音声認識
Googleデモページ

参考

MDNのドキュメント
「Web Speech API | JavaScript プログラミング解説 - so-zou.jp」
Web Speech APIの実装 - Speech Synthesis API | CodeGrid

41
38
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
41
38