JavaScript | SpeechSynthesisUtteranceでテキストを読み上げる
JavaScriptで使えるWeb Speech APIのSpeechSynthesisUtteranceを利用してテキストを読み上げる方法のサンプルコードです。
See the Pen JavaScript | speech synthesis by yochans (@yochans) on CodePen.
SpeechSynthesisUtteranceの指定方法
SpeechSynthesisUtterance()は自動再生出来ない仕様になっているブラウザが殆どです。
音声読み上げを再生するにはaddEventListenerやonsubmitなどのユーザーアクションが必要なイベントトリガーを経由する必要があります。
<button class="play-btns" id="play-btn">en</button>
サンプルでは再生ボタンを用意して、addEventListenerでイベントを実装しています。
//再生ボタン
const play_btn = document.querySelector('#play-btn');
//読み上げイベントを追加
play_btn_ja.addEventListener( 'click' , speech_play );
function speech_play(){
let speech_play_option = new SpeechSynthesisUtterance();
speech_play_option.text = 'テキストを読み上げます。';
speech_play_option.lang = 'ja-JP';
speechSynthesis.speak(speech_play_option);
};
機能を拡張した際に「pause」状態でブラウザを閉じたり、ページをリロードした際に音声が出なくなる場合があります。
以下のコードを関数外でも良いので読み込んでおくと、この問題を回避できます。
speechSynthesis.cancel();
SpeechSynthesisUtteranceで指定可能なオプション
SpeechSynthesisUtteranceで再生に利用する指定可能なオプションです。
オプション | 意味 | デフォルト | 備考 |
---|---|---|---|
text | 読み上げるテキスト | なし | 必須 |
lang | 言語 | アクセス元に依存 | ja-JP、en-USほか |
rate | 速度 | 1 | 0.1~10 |
pitch | ピッチ | 1 | 0~2 |
voice | 音声 | langに依存 | |
volume | 音量 | 1 | 0~1 |
langは指定しなくても日本からのアクセスであれば「ja-JP」と、アクセスしたブラウザの地域によって自動で設定されます。
「ja-JP」は英語など他の言語も読み上げますが、英語などの他言語をネイティブな発音で読み上げさせたい場合は、それぞれの言語に指定します。
ディスカッション
コメント一覧
まだ、コメントがありません