yinelenen ifadeler, bu benim Android (ve masaüstünde çoğaltmak değil) ifadeleri sonucu speech recognition API çoğaltmaları bulundu.Konuşma tanıma API Android
Her bir deyim için, iki sonuç döndürür. İlki
ve ikincisi Gördüğünüz gibi, ikinci karşılığında, ifade yineleniyor
, her kopya final
olarak işaretlenir ve ikincisi ötesinde olduğunu resultIndex
. İlk dönüşte sadece bir kopya var, final
ve resultIndex
'un ötesindedir.
Yalnızca ikinci bir dönüş alırım, ancak sorun mobil Chrome'da gerçekleşmesi, ancak masaüstü Chrome
'da gerçekleşmemesidir. Masaüstü Chrome
yalnızca ilk dönüşü döndürür.
Yani, soru şu: tasarım davranışından mı bu? Öyleyse, daha sonra tüm bilgisayarlar için tek bir son ifade nasıl ayırt edilir?
Ya da ses yankısı gibi bir hata olabilir, o zaman soru nasıl eko önlemek/kontrol etmektir?
GÜNCELLEME
Html olduğunu şöyle:
<input id="recbutton" type="button" value="Recognize">
<div id="output">
<div>
Initial text
</div>
</div>
Kod aşağıdaki gibidir:
var recognition = null;
var recognitionStarted = false;
var printcount = 1;
var lastPhrase = null;
$(function() {
attachRecognition();
});
$('#recbutton').click(function() {
if(!recognitionStarted) {
recognition.start();
}
else {
recognition.stop();
}
});
function printOut(text) {
var id = 'printcount' + printcount;
printcount++;
$('#output').append(
"<div id='" + printcount + "'>" + text + "</div>"
);
$("#output").animate({ scrollTop: $("#output").prop('scrollHeight')});
return printcount;
}
function attachRecognition() {
if (!('webkitSpeechRecognition' in window)) {
$('button').prop('disabled', true);
recognition = null;
} else {
$('button').prop('disabled', false);
recognition = new webkitSpeechRecognition();
recognition.continuous = true;
recognition.interimResults = true;
recognition.lang = "en-US";
recognition.onstart = function(event) {
recognitionStarted = true;
printOut("speech recognition started");
};
recognition.onend = function(event) {
recognitionStarted = false;
printOut("speech recognition stopped");
};
recognition.onresult = function(event) {
var finalPhrase = '';
var interimPhrase = '';
var result;
var printcount;
for(var i=0; i<event.results.length; ++i) {
result = event.results[i];
if(result.isFinal) {
finalPhrase = finalPhrase.trim() + ' ' + result[0].transcript;
}
else {
interimPhrase = interimPhrase.trim() + ' ' + result[0].transcript;
}
}
if(!lastPhrase) {
printcount = printOut('');
lastPhrase = $('#' + printcount);
}
lastPhrase.html(finalPhrase.trim() + ' ' + interimPhrase.trim());
if(finalPhrase.trim()) {
lastPhrase = null;
}
};
}
}
JsFiddle: https://jsfiddle.net/dimskraft/envwao8o/1/
recognition.continuous olay işleyicisi kapsamı dışında başlatmak bir değişken olduğunu
; kullanıcıdan sürekli girişi kabul etmeyecektir. – dirtyhandsphp