Signatur
Beschreibung
SpeechRecognitionResultList ist Teil der Web Speech API und enthält alle Erkennungsergebnisse der laufenden Sitzung. Du erzeugst die Liste nie selbst. Sie steht dir im result-Event eines SpeechRecognition-Objekts über event.results zur Verfügung.
Jeder Eintrag ist ein SpeechRecognitionResult. Das ist ein erkannter Sprachabschnitt mit einer oder mehreren Alternativen (SpeechRecognitionAlternative), die jeweils transcript und confidence enthalten. Mit recognition.continuous = false (Standard) enthält die Liste in der Regel nur ein einzelnes Ergebnis. Im fortlaufenden Modus wächst sie mit jedem erkannten Satz.
Die Schnittstelle bietet:
length: Anzahl der Ergebnisse (nur lesbar).item(index): gibt das Ergebnis an der Positionindexzurück. Alternativ geht der Index-Zugriffresults[index].
Zusammen mit event.resultIndex kannst du gezielt nur die neuen oder geänderten Ergebnisse verarbeiten. Das ist wichtig, wenn Zwischenergebnisse (interimResults = true) angezeigt werden sollen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $index Pflicht | number | Nur für item(index): nullbasierter Index des gewünschten SpeechRecognitionResult. |
Rückgabewert
item(index) bzw. results[index] liefert das Ergebnis an dieser Position. length liefert eine number.Beispiele
Instanz erhalten: einfache Erkennung im nicht fortlaufenden Modus
const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SpeechRecognition();
recognition.lang = 'de-DE';
recognition.addEventListener('result', (event) => {
// event.results ist eine SpeechRecognitionResultList
const list = event.results;
console.log('Anzahl Ergebnisse:', list.length);
const text = list.item(0)[0].transcript;
console.log('Erkannt:', text);
});
// Muss durch eine Nutzeraktion ausgelöst werden
document.querySelector('#start').addEventListener('click', () => recognition.start());
Fortlaufendes Diktat mit Zwischenergebnissen
const SR = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SR();
recognition.lang = 'de-DE';
recognition.continuous = true;
recognition.interimResults = true;
const output = document.querySelector('#diktat');
let finalText = '';
recognition.onresult = (event) => {
let interim = '';
// Nur neue/geänderte Ergebnisse ab resultIndex durchlaufen
for (let i = event.resultIndex; i < event.results.length; i++) {
const result = event.results[i];
if (result.isFinal) {
finalText += result[0].transcript + ' ';
} else {
interim += result[0].transcript;
}
}
output.textContent = finalText + interim;
};
recognition.start();
Liste in ein Array umwandeln und alle Alternativen auswerten
recognition.maxAlternatives = 3;
recognition.onresult = ({ results }) => {
const alle = Array.from(results, (result) =>
Array.from(result, (alt) => ({
text: alt.transcript,
sicherheit: Math.round(alt.confidence * 100) + ' %'
}))
);
console.table(alle.flat());
};
// Wichtig · Fallstricke
- Browser-Unterstützung: Chrome und Edge bieten die Schnittstelle nur mit Präfix an (
webkitSpeechRecognition), Safari ab 14.1. Firefox unterstützt die Spracherkennung standardmäßig nicht. Prüfe deshalb immer vorher, ob die Funktion vorhanden ist (Feature Detection). - Kein echtes Array: Methoden wie
mapoderfilterfehlen. NutzeArray.from()oder den Spread-Operator. Iteration mitfor…offunktioniert in aktuellen Browsern. - Im fortlaufenden Modus enthält die Liste alle bisherigen Ergebnisse der Sitzung. Verarbeitest du jedes Mal die ganze Liste, erscheinen Texte doppelt. Beginne daher bei
event.resultIndex. - Zwischenergebnisse (
isFinal === false) können sich im nächsten Event noch ändern. - Datenschutz: In Chrome wird der Ton zur Erkennung an Google-Server geschickt. Die Erkennung braucht HTTPS und die Erlaubnis für das Mikrofon.