Firefox OSでWeb Speech APIを使う
Gecko勉強会の懇親会でGeckoのWeb Speech APIまわりというライトニングトークをしました。
この記事ではライトニングトークではしゃべらなかったこと、Firefox OSでWeb Speech APIを試す方法を書きます。Web Speech APIは音声認識をしたり、音声合成をするためのAPIです。W3CのSpeech API Community Groupで議論されています。このうちFirefox OSでは音声合成をするAPI(Speech Synthesis)がそれなりに使えます(デフォルトでは無効化されています)。
準備
Firefox OSをビルドします(MDNの文書)。私はmasterしかビルドしかことがありませんが、ソースコードを見る限りv1.2でも大丈夫そうです。
ビルドできたら、adbを使ってWeb Speech APIの設定を有効化します。
まず、設定ファイル(prefs.js)を落としてきます。
adb pull /data/b2g/mozilla/(プロファイル名)/prefs.js
prefs.jsにuser_prefs("media.webspeech.synth.enabled", true);
を追加して、設定ファイルをアップロードします。
adb push prefs.js /data/b2g/mozilla/(プロファイル名)/prefs.js
試してみる
Firefox OSが使っている音声合成ライブラリはPicoTTSです。これはAndroidの標準の音声合成エンジンで英語などに対応していますが、残念ながら日本語には対応していません。それでも以下のようなコードを書けば、手軽に音声合成を試すことができます。
speechSynthesis.speak(new SpeechSynthesisUtterance('Hello World'));
またMozillaのEitan Isaacsonさんが作成したhttp://eeejay.github.io/webspeechdemos/ デモページで試すこともできます。
Firefox OSのスクリーンリーダーとの関係
Firefox OSのスクリーンリーダーも、音声合成部分はWeb Speech APIを使っています。現在のmaster(v1.2でも?)では、設定アプリの開発者向け設定からスクリーンリーダーを有効にすることもできます。
- Settings
- DeviceをDevice informationを選択
- Device informationのMore informationを選択
- Developer settingsのDeveloperを選択
- AccessibilityのScreen Readerにチェックを入れる
Web Speech APIを有効にした状態では、スクリーンリーダーが音声で読み上げるようになります。が、Peakで試した限りでは音量が調整できませんでした。