ブラウザで音声合成を使うためのSpeechSynthesisというWeb APIがある。この機能を使うとテキストの読み上げができる。今のところChromeとFirefox、Safariで対応しているが、ここではChromeで音声合成を試してみる。
ちなみに、ChromeとFirefoxでは使える音声がずいぶん違う。
Chrome
Firefox
※先頭の数字は配列の番号
ただし、音声をgetVoicesで読み込まなくてもテキスト読み上げはできる。その場合は、HTMLで定義された言語を元に音声が選択される。
音声の音程などを変えるにはSpeechSynthesisUtteranceを使う。
音声の読み込み
はじめに音声を読み込む。数種類の言語の音声が用意されており、読み上げる言語によって音声を変えることができる。window.speechSynthesisを参照し、そのメソッドであるgetVoicesを使うと音声の配列を取得できる。Chromeの場合は、onvoiceschangedイベントのタイミングでないと取得できない。var synth = window.speechSynthesis; var voices = []; if ( speechSynthesis.onvoiceschanged !== undefined ) { // Chromeではonvoiceschangedというイベントがあり、onvoiceschangedが呼ばれたタイミングでないと音声を取得できない speechSynthesis.onvoiceschanged = function (){ voices = synth.getVoices(); }; } else { // Firefoxではこれで音声が読み込める voices = synth.getVoices(); }
ちなみに、ChromeとFirefoxでは使える音声がずいぶん違う。
Chrome
Firefox
※先頭の数字は配列の番号
ただし、音声をgetVoicesで読み込まなくてもテキスト読み上げはできる。その場合は、HTMLで定義された言語を元に音声が選択される。
音声オプションの設定
音声の音程などを変えるにはSpeechSynthesisUtteranceを使う。// SpeechSynthesisUtteranceインスタンスの作成 var utterThis = new SpeechSynthesisUtterance(); // 音声の指定(ここでは日本語音声を指定) utterThis.voice = voices[11]; // 音量の指定(0-1.0) utterThis.volume = 1.0; // 速度の指定(0.1-10.0) utterThis.rate = 1.0; // 音程の指定(0-2.0) utterThis.pitch = 1.0; // 言語の指定 utterThis.lang = 'ja-JP';
テキストの読み上げ
SpeechSynthesisUtterance.textに読み上げるテキストを設定し、speechSynthesis.speakで読み上げを行う。utterThis.text = '読み上げるテキスト'; // 読み上げの実行 synth.speak( utterThis );
0 件のコメント:
コメントを投稿