Web音声合成API “vds” を使う
vds はWebアプリケーションから使える音声合成APIです。
チュートリアルはこちら。
無償版ではコールバック関数が用意されていませんが、isSpeaking というメソッドを使って同等のことができます。
このメソッドは音声出力中に 1、停止中には 0 を返します。ただし VoiceDelivery.speak() を呼んだあと、実際に読み上げが始まるまでには少し間があります。
テキストを読み上げてコールバック関数を呼ぶプログラムは次のようになります。
var vdsp; var vds; window.onload = function() { try { // vdsを初期化 vdsp = new VoiceDeliveryPlayer("vdsp"); vds = new VoiceDelivery(vdsp, "vds"); // 声の種類を選択 vds.setCast("KeikoJPf"); // しゃべらす vds_speak("こんにちは", function() { alert("再生完了!"); }); } catch(e) { alert("vdsの調子がわるいみたいです"); vds = vdsp = null; } }; function vds_speak(text, callback, thisObject) { if (!vds || !vdsp) { return false; } vds.speak(text); switch (vds.getServerError()) { case -301: alert("残念ながら、1ヶ月あたりの再生文字数が規定数を超えました。"); return false; case -501: alert("ページをリロードして、もう一度再生ボタンを押してみてください。"); return false; } var prevState = 0; var tid = setInterval(function() { var state = vdsp.isSpeaking(); if (prevState == 1 && state == 0) { clearInterval(tid); callback && callback.apply(thisObject || this); } prevState = state; }, 50); return true; }