Firefox OSでWeb Speech APIを使う

Gecko勉強会の懇親会でGeckoのWeb Speech APIまわりというライトニングトークをしました。

この記事ではライトニングトークではしゃべらなかったこと、Firefox OSでWeb Speech APIを試す方法を書きます。Web Speech API音声認識をしたり、音声合成をするためのAPIです。W3CSpeech 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'));

またMozillaEitan Isaacsonさんが作成したhttp://eeejay.github.io/webspeechdemos/ デモページで試すこともできます。

Firefox OSのスクリーンリーダーとの関係

Firefox OSのスクリーンリーダーも、音声合成部分はWeb Speech APIを使っています。現在のmaster(v1.2でも?)では、設定アプリの開発者向け設定からスクリーンリーダーを有効にすることもできます。

  1. Settings
  2. DeviceをDevice informationを選択
  3. Device informationのMore informationを選択
  4. Developer settingsのDeveloperを選択
  5. AccessibilityのScreen Readerにチェックを入れる

Web Speech APIを有効にした状態では、スクリーンリーダーが音声で読み上げるようになります。が、Peakで試した限りでは音量が調整できませんでした。