Signatur
Beschreibung
Die Eigenschaft length gibt an, wie viele Erkennungsergebnisse (SpeechRecognitionResult) eine SpeechRecognitionResultList enthält. Du bekommst diese Liste über event.results im result-Event einer SpeechRecognition-Instanz.
Gebraucht wird length vor allem, um mit einer klassischen for-Schleife über alle Ergebnisse zu laufen, etwa um bei continuous = true ein vollständiges Transkript aus allen bisher erkannten Satzteilen zusammenzusetzen. Zusammen mit event.resultIndex lässt sich außerdem gezielt nur der Bereich verarbeiten, der sich seit dem letzten Event geändert hat.
Die Liste ist ein array-ähnliches Objekt, aber kein echtes Array. Über item(index) oder die Klammerschreibweise list[index] greifst du auf einzelne Einträge zu. Gültige Indizes reichen von 0 bis length - 1.
Rückgabewert
unsigned long) mit der Anzahl der SpeechRecognitionResult-Objekte in der Liste.Beispiele
Anzahl der Ergebnisse ausgeben
const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SpeechRecognition();
recognition.lang = 'de-DE';
recognition.addEventListener('result', (event) => {
// event.results ist eine SpeechRecognitionResultList
console.log(`Ergebnisse in der Liste: ${event.results.length}`);
});
recognition.start();
Vollständiges Transkript im Dauermodus zusammensetzen
const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SpeechRecognition();
recognition.lang = 'de-DE';
recognition.continuous = true;
recognition.interimResults = true;
const ausgabe = document.querySelector('#transkript');
recognition.onresult = (event) => {
let endgueltig = '';
let vorlaeufig = '';
for (let i = 0; i < event.results.length; i++) {
const result = event.results[i];
if (result.isFinal) {
endgueltig += result[0].transcript;
} else {
vorlaeufig += result[0].transcript;
}
}
ausgabe.textContent = `${endgueltig} ${vorlaeufig}`.trim();
};
recognition.start();
Nur neue Ergebnisse ab resultIndex verarbeiten
const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SpeechRecognition();
recognition.continuous = true;
recognition.addEventListener('result', (event) => {
const { results, resultIndex } = event;
for (let i = resultIndex; i < results.length; i++) {
if (results[i].isFinal) {
console.log(`Neu erkannt (#${i}): ${results[i][0].transcript}`);
}
}
});
recognition.start();
Liste in ein echtes Array umwandeln
recognition.onresult = (event) => {
// Array.from nutzt length und die Index-Zugriffe
const texte = Array.from(event.results, (r) => r[0].transcript);
console.log(texte.length === event.results.length, texte);
};
// Wichtig · Fallstricke
- Schreibgeschützt: Wenn du
lengthetwas zuweist, passiert nichts (im Strict Mode gibt es einenTypeError). Kürzen lässt sich die Liste so nicht. - Kein echtes Array:
map,filterusw. gibt es nicht direkt. Wandle die Liste vorher mitArray.from()oder Spread-Syntax ([...event.results]) um. - Wachsende Liste: Bei
continuous = trueenthältevent.resultsalle Ergebnisse der Sitzung, undlengthwächst mit jedem Event. Wenn du immer von0an durchläufst und dabei Text anhängst, entstehen Duplikate. Nutze dafürevent.resultIndex. - Vorläufige Ergebnisse: Mit
interimResults = truekann der letzte Eintrag noch vorläufig sein (isFinal === false) und in späteren Events ersetzt werden. - Kompatibilität: Chrome und Edge unterstützen die Web Speech API nur mit dem Präfix
webkitSpeechRecognition. Die Erkennung läuft dort meist über einen Server und braucht daher eine Internetverbindung. Firefox unterstützt die Spracherkennung standardmäßig nicht. Nötig sind außerdem ein sicherer Kontext (HTTPS) und die Freigabe des Mikrofons.