現在、Google Chrome でのみサポートされている HTML5 Web Speech API に関する HTML5Rocks の記事のコードから何かを開発しようとしています。このため、私のコードの問題は Google Chrome でのみ発生します。
私がやろうとしているのは、ユーザーがアラートという言葉を言った後にユーザーが言うすべてに警告することです。したがって、アラートはコマンドのように反応し、アラートを発した後、コードはアラートという単語の後にすべてを警告します。
現在、次の 2 つの問題が発生しています。
最初に「アラート ( ここにアラートを出すメッセージを挿入 ) 」と言った場合、アラートは発生しません。しかし、ユーザーが最初に何かを話し、次に「アラート (ここにアラートを送信するメッセージを挿入)」と言うと、アラートが発生します。「アラート(ここにアラートするメッセージを挿入)」と言われるたびにアラートを出すにはどうすればよいですか?
さて、私の 2 番目の問題は、何が警告されるかです。final_transcript のすべては、alert という単語を除いて警告されます。私がやろうとしているのは、final_transcript を分割して、alert という単語の後のすべてが警告されるようにすることです。アラートという単語の後の final_transcript のテキストのみがアラートされるようにするにはどうすればよいですか。
現在、私がやっていることは、すべてを書き写してから、書き起こしを分割し、変更後にすべてを警告することです。または、少なくとも、それが私がやろうとしていることです。
これら 2 つの問題を理解して修正するための助けをいただければ幸いです。
アラートを実行するコードは次のとおりです。
recognition.onresult = function(event) {
var interim_transcript = '';
for (var i = event.resultIndex; i < event.results.length; ++i) {
if (event.results[i].isFinal) {
final_transcript += event.results[i][0].transcript;
} else {
interim_transcript += event.results[i][0].transcript;
}
}
final_transcript = capitalize(final_transcript);
final_span.innerHTML = linebreak(final_transcript);
interim_span.innerHTML = linebreak(interim_transcript);
var str = final_transcript;
var val = null;
if(/ alert{0,1}/.test(str)) {
val = str.split(/ alert{0,1}/);
alert(val);
}
};
また、サーバー上で実行されていない場合はマイクの許可が拒否されるため、JS Fiddle の例を使用できます。だから私はGoogleドライブからホスティングしています。
これが実際の例です: https://googledrive.com/host/0BwJVaMrY8QdcT0pIdGRmcjB5NkE/mic.html