前提・実現したいこと
cordova-plugin-ttsを使ったハイブリッドアプリをAndroid向けにMonacaで作成しています。読み上げる文章を「。」で区切って、javascriptでループさせながら発話させたいのですが、配列に格納した最後の文章しか発話されません。
発生している問題・エラーメッセージ
配列に格納した要素を順に読み上げていく際、発話の終了を待たないまま次が実行されてしまうため、最後の要素しか発話されないことが原因のようです。発話を終了するまでループ処理を一時的に止められたらよいのですが、プラグインに発話の終了を判断する機能がないようで、困っています。
該当のソースコード
javascript
1function OnButtonClick() { 2 target = document.getElementById("text"); 3 var text = target.value; 4 var sentences = text.split("。"); 5 6 for( var i=0 ; i<sentences.length ; i++ ) { 7 var target_sentence = new_sentences[i]; 8 TTS.speak({ 9 text: target_sentence, 10 locale: 'ja-JP' 11 }, function () { 12 console.log('success'); 13 }, function (reason) { 14 console.log(reason); 15 }); 16 } 17
試したこと
function () {
console.log('success');
}, function (reason) {
console.log(reason);
}
の部分がコールバック関数とのことですが、これは発話の開始について成功したかどうかを判断するもので、発話終了のタイミングで呼び出されるわけではないようなので使えないようです
補足情報(FW/ツールのバージョンなど)
関連しようなURLを記載させていただきます
【Monacaのドキュメント】
https://press.monaca.io/atsushi/152
【GitHub】
https://github.com/vilic/cordova-plugin-tts
【その他】
http://d.hatena.ne.jp/rudi/20100810/1281447191
どうにかならないでしょうか。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/20 14:06
2019/03/20 14:47