xxxxxxxxxx
86
var myRec = new p5.SpeechRec(); // new P5.SpeechRec object
var is_recognition_activated = false;
function setup() {
// キャンバスは使わない
noCanvas();
// スピーチの切れ目があったときに呼び出す関数を登録
myRec.onEnd = endSpeech;
// 随時音声入力をテキスト化する際に呼び出される関数を登録
myRec.onResult = parseResult;
// 連続した音声認識は行わない.プログラム内で適時音声認識のstopとstartを制御する
myRec.continuous = false; // no continuous recognition
// 読み上げている最中の認識途中の文字列も利用する場合
myRec.interimResults = true; // allow partial recognition (faster, less accurate)
// プログラム制御用変数(true: 音声認識利用中を示す)
is_recognition_activated = false;
// 認識言語は日本語
myRec.rec.lang = "en";
// start/stop のDOMボタンを押したときに音声認識切り替えを行う
select("#button_start_or_stop").mouseClicked(toggleSpeechRecognition);
}
// 認識途中随時呼び出される関数(認識途中の文字列を取得できる)
function parseResult() {
// javascript native な記述
// document.getElementById("label").innerHTML = "speaking...";
select("#label").html("speaking...");
// javascritp native な記述
// document.getElementById("text").value = myRec.resultString;
select("#text").value(myRec.resultString);
}
function toggleSpeechRecognition() {
// 認識ステータスを反転させる(trueならfalse,falseならtrue)
is_recognition_activated = !is_recognition_activated;
// 音声認識アクティベート
if (is_recognition_activated == true) {
myRec.rec.lang = "en";
myRec.start(); // 認識スタート
this.html("stop"); //ボタンの表示をstopにする
}
// 音声認識を停止させる
else {
// 音声認識をとめる
myRec.stop();
// ボタンの表示をstartにする
this.html("start");
}
}
function endSpeech() {
// 音声認識アクティベート中なら
if (is_recognition_activated == true) {
// 認識文字列に何も入っていなければ(タイムアウトでendSpeechになった場合)
if (!myRec.resultValue) {
myRec.start(); // start engine
return;
}
// 認識文字列になんか入ってれば
if (myRec.resultString.length > 0) {
console.log("End");
document.getElementById("label").innerHTML = "quiet";
document.getElementById("textarea").innerHTML +=
myRec.resultString + "。";
document.getElementById("text").value = "";
console.log(myRec.resultString);
// document.getElementById('body').style.background = myRec.resultString;
select('#body').style("background-color", myRec.resultString);
myRec.resultString = "";
}
myRec.start(); // start engine
console.log("start");
}
}