Javascript
1const utter = new SpeechSynthesisUtterance(); 2utter.text = 'hello world'; 3window.speechSynthesis.speak(utter);
上記のようなコードで音声読み上げ機能を使おうとしたところ、
PCのChromeブラウザでは「ハローワールド」という音声が流れるが
AndroidスマホのChromeブラウザでは音声が流れませんでした。
Javascript
1alert(window.speechSynthesis.getVoices());
getVoices()の結果、PCだと配列で複数個の[object SpeechSynthesisVoice]というのが表示されます。
スマホではgetVoices()で何も返ってきません。
スマホで読み上げ音声が流れないのは、読み上げエンジンがそもそも入っていないのが原因でした。
GooglePlayストアで「Googleテキスト読み上げ」というアプリをインストールしたところ、
window.speechSynthesis.speak()を使って、スマホでも音声が再生できるようになりました。
ここで疑問なのですが、AndroidやiPhoneでは、初期状態で「音声読み上げエンジン」は入っていないのでしょうか?
(自分のandroidの場合、もともと入っていないのか、プリインストールされていたものを自分が削除したのか定かではない)
Androidの
設定 > 言語と入力 > テキスト読み上げの出力
を見るとエンジンが選べるようになっています。
Androidのスペック的にはAndroidバージョン11.0以降ならば「テキスト読み上げ対応」のようです。
しかし、「テキスト読み上げ対応」だったとしても「読み上げエンジン」を別途インストールが必要となると、
Javascriptでwindow.speechSynthesis.speak()の機能は使いにくいなと感じます。
・最新機種のAndroid、iOSでも、「読み上げエンジン」は別途インストールが必要になっているのでしょうか?
もしも、最新機種では読み上げエンジンがデフォルトでインストールされている場合は
・いつ頃から「読み上げエンジン」がプリインストールされるようになったのか?
・プリインストールされているかは、OSのバージョンではなく、スマホのメーカーによる違いだったりするのか?
などご存知の方がいれば教えてください。
もしくは、window.speechSynthesis.speak()以外に
Javascriptで音声読み上げを行う良い方法があれば教えてください。
DBにセリフのテキストが大量に登録してあり、ブラウザでクリックした拍子に音声を流す
というような機能を想定しています。