今回はHTMLのAPIであるSpeechSynthesis APIを使った音声読み上げ機能の紹介です。
注意点として、現在(2021年11月時点) AndroidのWebViewではSpeechSynthesis APIはサポートされていません(標準ブラウザでは動作します)。
アプリのソースコードは、こちらのリンクよりMonacaアカウントへインポートできます。
ベースになるアプリについて
今回はベースとしてFramework7フレームワークを用いています。
Monacaではテンプレートの中にも用意されていますので、導入は簡単です。
www/index.htmlについて
www/index.html ではdivタグだけ配置して、 data-url 属性にて /home
に該当するファイルを読み込んでいます。
ルーティングを担当するファイル js/routes.js
では /home
にて pages/home.html
を読み込む指定をしておきます。
pages/home.html について
home.htmlのHTML部分は次のようになります。読み上げる文字列の入力と、それを実行するボタンになります。
なお、ここで name=voices
というselectタグを用意しています。ここには選択可能な音声読み上げオプション(女性、男性の声など)が入ります。
音声オプションを取得する
speechSynthesis
が存在するかどうかでSpeechSynthesis APIが利用できるかどうかを判定できます。実際に音声が使えるようになったかどうかは synth.onvoiceschanged
のステータスで判定できます。これが呼ばれれば getVoices
が利用できます。
音声読み上げの実行
そしてテキストを入力した後で、読み上げボタンを押します。読み上げるテキストを SpeechSynthesisUtterance
のインスタンスに渡して、ボイスを指定します。iOSのようにボイスがない場合はデフォルトの音声が使われるようです。
最後に speak
メソッドで読み上げを実行します。