Webkit 之间的语音到文本中断
Speech to text breaking in between Webkit
我创建了一个表格,其中会自动填充问题并通过语音获取答案。我尝试使用 JS webkit 库,但它无法正常工作并且无法识别语音。它拾取以前的语音文本并继续添加到新生成的字符串中,但有时它工作正常。如果有人正在捕获语音并将其转换为文本,请告诉我。任何帮助将不胜感激。
代码如下-
var recognition = new webkitSpeechRecognition();
recognition.lang = "en-IN";
// recognition.lang = "hi-IN";
function startTextToSpeech(){
var recognizing = false;
var ignore_onend;
var start_timestamp;
recognition.continuous = true;
recognition.interimResults = true;
var interim_text = document.getElementById('Mytext')
var final_text = document.getElementById('final_span')
var textExtracted = "";
var final_transcript = '';
recognition.onstart = function() {
recognizing = true;
};
recognition.onerror = function(event) {
console.log("some error ouccured");
console.log(event)
recognition.stop();
try{
recognition.start();
}catch(ex){
console.log(ex)
}
if (event.error == 'no-speech') {
ignore_onend = true;
}
if (event.error == 'audio-capture') {
ignore_onend = true;
}
if (event.error == 'not-allowed') {
ignore_onend = true;
}
};
recognition.onend = function() {
console.log("ended")
// recognizing = false;
// recognition.start();
// //switchApi();
// if (ignore_onend) {
// $("#toggleStart").text("Start");
// $("#listenStatus").text("Speak something to convert it to text");
// //clearInterval(StartAnalyzing);
// return;
// }
recognition.stop();
try{
recognition.start();
}catch(ex){
console.log(ex)
}
// if (window.getSelection) {
// recognition.start();
// switchApi();
// window.getSelection().removeAllRanges();
// var range = document.createRange();
// range.selectNode(document.getElementById('final_span'));
// window.getSelection().addRange(range);
// }
};
recognition.onresult = function(event) {
var interim_transcript = '';
if (typeof(event.results) == 'undefined') {
recognition.onend = null;
//recognition.stop();
return;
}
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_text.innerHTML = final_transcript;
interim_text.innerHTML = interim_transcript;
textExtracted = final_transcript+interim_transcript;
}
recognition.start();
}
您的代码没有错误,它应该可以在最新版本的 chrome 或 opera 中运行,但不确定 Firefox、IE 和 Safari,请尝试更新您的浏览器以确保您在做什么。
我创建了一个表格,其中会自动填充问题并通过语音获取答案。我尝试使用 JS webkit 库,但它无法正常工作并且无法识别语音。它拾取以前的语音文本并继续添加到新生成的字符串中,但有时它工作正常。如果有人正在捕获语音并将其转换为文本,请告诉我。任何帮助将不胜感激。
代码如下-
var recognition = new webkitSpeechRecognition();
recognition.lang = "en-IN";
// recognition.lang = "hi-IN";
function startTextToSpeech(){
var recognizing = false;
var ignore_onend;
var start_timestamp;
recognition.continuous = true;
recognition.interimResults = true;
var interim_text = document.getElementById('Mytext')
var final_text = document.getElementById('final_span')
var textExtracted = "";
var final_transcript = '';
recognition.onstart = function() {
recognizing = true;
};
recognition.onerror = function(event) {
console.log("some error ouccured");
console.log(event)
recognition.stop();
try{
recognition.start();
}catch(ex){
console.log(ex)
}
if (event.error == 'no-speech') {
ignore_onend = true;
}
if (event.error == 'audio-capture') {
ignore_onend = true;
}
if (event.error == 'not-allowed') {
ignore_onend = true;
}
};
recognition.onend = function() {
console.log("ended")
// recognizing = false;
// recognition.start();
// //switchApi();
// if (ignore_onend) {
// $("#toggleStart").text("Start");
// $("#listenStatus").text("Speak something to convert it to text");
// //clearInterval(StartAnalyzing);
// return;
// }
recognition.stop();
try{
recognition.start();
}catch(ex){
console.log(ex)
}
// if (window.getSelection) {
// recognition.start();
// switchApi();
// window.getSelection().removeAllRanges();
// var range = document.createRange();
// range.selectNode(document.getElementById('final_span'));
// window.getSelection().addRange(range);
// }
};
recognition.onresult = function(event) {
var interim_transcript = '';
if (typeof(event.results) == 'undefined') {
recognition.onend = null;
//recognition.stop();
return;
}
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_text.innerHTML = final_transcript;
interim_text.innerHTML = interim_transcript;
textExtracted = final_transcript+interim_transcript;
}
recognition.start();
}
您的代码没有错误,它应该可以在最新版本的 chrome 或 opera 中运行,但不确定 Firefox、IE 和 Safari,请尝试更新您的浏览器以确保您在做什么。