1

Ich versuche zu erkennen, wenn der Benutzer pausiert und wieder zu sprechen, ohne zu stoppen zu erkennen. Dies ist der Code, den ich zu erkennen, auf, wenn der Benutzer Gespräche und Ausgabe, die es auf der Seite:Ermitteln Sie die Zeit, wenn der Benutzer SpeechRecognition API spricht?

//set up vars 
 
var final_transcript; 
 
var recognizing = false; 
 
//check if using chrome and up to date 
 
if ('webkitSpeechRecognition' in window) { 
 
//init 
 
    var recognition = new webkitSpeechRecognition(); 
 

 
    recognition.continuous = true; 
 
    recognition.interimResults = true; 
 

 
    recognition.onstart = function() { 
 
    recognizing = true; 
 
    }; 
 
//if there is error somewhere 
 
    recognition.onerror = function(event) { 
 
    console.log(event.error); 
 
    }; 
 

 

 
    recognition.onend = function() { 
 
    recognizing = false; 
 
    }; 
 
//after giving the spech 
 
    recognition.onresult = function(event) { 
 
    var interim_transcript = ''; 
 
    for (var i = event.resultIndex; i < event.results.length; ++i) { 
 
     if (event.results[i].isFinal) { 
 
     // finilize and show the compleated text 
 
     final_transcript += event.results[i][0].transcript; 
 
     } else { 
 
     // run the speech and output it 
 
     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 two_line = /\n\n/g; 
 
var one_line = /\n/g; 
 
function linebreak(s) { 
 
    return s.replace(two_line, '<p></p>').replace(one_line, '<br>'); 
 
} 
 

 
function capitalize(s) { 
 
    return s.replace(s.substr(0,1), function(m) { return m.toUpperCase(); }); 
 
} 
 

 
function startDictation(event) { 
 
    if (recognizing) { 
 
    recognition.stop(); 
 
    return; 
 
    } 
 
    final_transcript = ''; 
 
    recognition.lang = 'en'; 
 
    recognition.start(); 
 
} 
 
//startDictation();
<div id="results"> 
 
     <span id="final_span" class="final"></span> 
 
     <span id="interim_span" class="interim"></span> 
 

 
    </div>

So gibt es eine Möglichkeit zu erkennen, wenn der Benutzer Pausen und die Länge der Zeit, er machte eine Pause ?

Antwort

1

Dies ist keine vollständige Antwort, aber es ist Start.

https://jsfiddle.net/persianturtle/7uygdyy1/1/

Ich bin mir nicht sicher, ob das onspeechstart Ereignis nur einmal ausgelöst wird, oder wenn es würde wieder feuern, wenn ich in einer weniger lauten Umgebung bin.

Wenn es mehrere Male ausgelöst wird, wird dies sehr einfach, da wir speech start und speech end Zeiten speichern und die Ruhezeiten von dort aus herausfinden können.

Wenn es onspeechstart nur einmal feuert, dann können Sie wahrscheinlich einen Weg finden, um die durchschnittliche Rede Dauer gegeben Text und herauszufinden, Schweigen von dort.

Es gibt jedoch ein Ereignis, das jedes Mal ausgelöst wird, wenn Wörter erfasst werden: onresult.

Also die Grundidee ist, ein Array von activity, dass Sie push Sprachdaten in definieren können, und analysieren Sie anschließend Stille Perioden danach.

Code:

let activity = [] 

recognition.onresult = event => { 
    console.log(event) 
    activity.push('Ended:' + event.timeStamp) 
} 

recognition.onspeechstart = event => { 
    activity.push('Started:' + event.timeStamp) 
} 

recognition.onend = event => { 
    console.log(activity) 
} 
+0

Dies funktioniert gut, aber ich habe eine letzte Frage, ich möchte den Text zeigen, wenn ich auf ‚END‘ klicken. Also das habe ich ausprobiert https://jsfiddle.net/rp45c1rw/, ich habe die console.log zur window.end Funktion hinzugefügt und es gab undefined zurück, also gibt es eine Möglichkeit, sogar auf dem window.end zu zeigen? – Mohammed

+0

Das funktioniert: https://jsfiddle.net/persianturtle/7uygdyy1/2/ –

+1

Das war, was ich suche danke – Mohammed

Verwandte Themen