Signatur
Beschreibung
Die Methode item() gehört zum Interface SpeechRecognitionResultList der Web Speech API. Diese Liste steht im result-Event eines SpeechRecognition-Objekts unter event.results bereit und enthält alle bisher erkannten Ergebnisse der aktuellen Sitzung – jedes davon ist ein SpeechRecognitionResult.
Man benutzt item(index) bzw. die gleichwertige Klammerschreibweise results[index], um ein bestimmtes Ergebnis zu lesen. Jedes Ergebnis enthält wiederum eine oder mehrere Alternativen (SpeechRecognitionAlternative) mit transcript und confidence sowie die Eigenschaft isFinal, die angibt, ob das Ergebnis endgültig oder nur vorläufig ist.
Wichtig ist das Zusammenspiel mit event.resultIndex: Im Dauerbetrieb (continuous = true) wächst die Liste. Mit resultIndex erfährt man, ab welcher Position sich Ergebnisse geändert haben, sodass nur diese neu verarbeitet werden müssen.
SpeechRecognitionResultList ist kein echtes Array. Methoden wie map() oder filter() fehlen; zur Umwandlung eignet sich Array.from().
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $index Pflicht | number | Nullbasierter Index des gewünschten Ergebnisses. Wird intern in einen unsigned long umgewandelt. |
Rückgabewert
SpeechRecognitionResult an der Position index. Liegt der Index außerhalb des gültigen Bereichs, liefert item() je nach Browser null oder undefined; der Klammerzugriff liefert undefined.Beispiele
Erstes Ergebnis per item() und Klammerzugriff lesen
const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SpeechRecognition();
recognition.lang = 'de-DE';
recognition.addEventListener('result', (event) => {
const viaItem = event.results.item(0);
const viaIndex = event.results[0]; // gleichwertig
console.log(viaItem === viaIndex);
console.log('Erkannt:', viaItem.item(0).transcript);
console.log('Sicherheit:', viaItem[0].confidence.toFixed(2));
});
recognition.start();
Dauerdiktat: nur neue Ergebnisse ab resultIndex verarbeiten
const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SpeechRecognition();
recognition.lang = 'de-DE';
recognition.continuous = true;
recognition.interimResults = true;
let finalText = '';
recognition.onresult = (event) => {
let interim = '';
for (let i = event.resultIndex; i < event.results.length; i++) {
const result = event.results.item(i);
const text = result.item(0).transcript;
if (result.isFinal) {
finalText += text + ' ';
} else {
interim += text;
}
}
console.log('Endgültig:', finalText.trim());
console.log('Vorläufig:', interim);
};
recognition.start();
Liste in ein echtes Array umwandeln
const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SpeechRecognition();
recognition.lang = 'de-DE';
recognition.maxAlternatives = 3;
recognition.onresult = ({ results }) => {
// SpeechRecognitionResultList hat kein map() – daher Array.from()
const transcripts = Array.from(results, (result) => result.item(0).transcript);
console.log(transcripts.join(' | '));
// Alle Alternativen des ersten Ergebnisses
const alternatives = Array.from(results.item(0)).map(
(alt) => `${alt.transcript} (${alt.confidence.toFixed(2)})`
);
console.log(alternatives);
};
recognition.start();
// Wichtig · Fallstricke
- Browser-Kompatibilität: Die Web Speech API (Erkennung) gibt es in Chrome und Edge (teils nur als
webkitSpeechRecognition) und in Safari 14.1+. Firefox unterstütztSpeechRecognitionstandardmäßig nicht. Verfügbarkeit immer prüfen:'SpeechRecognition' in window || 'webkitSpeechRecognition' in window. - Kein echtes Array:
map(),forEach()usw. fehlen.for-Schleife mitlengthoderArray.from()verwenden. - Index außerhalb des Bereichs: Es wird keine Ausnahme geworfen – das Ergebnis ist
nullbzw.undefined. Vor dem Zugriff auf.transcriptdaher gegenlengthprüfen. - resultIndex beachten: Bei
continuous = trueenthältevent.resultsalle Ergebnisse der Sitzung. Wer immer ab 0 iteriert, verarbeitet Text doppelt. - Datenschutz: In Chrome wird das Audio zur Erkennung an Google-Server geschickt; außerdem wird eine Mikrofonfreigabe und ein sicherer Kontext (HTTPS) benötigt.