Signatur
Beschreibung
Ein SpeechRecognitionResult ist ein Eintrag in der SpeechRecognitionResultList, die Sie über event.results im result-Event einer SpeechRecognition-Instanz erhalten. Jedes Ergebnis steht für einen erkannten Sprachabschnitt (z. B. einen Satz oder eine Phrase).
Das Objekt ist listenartig: Über den Index (result[0]) oder die Methode item(index) greifen Sie auf die einzelnen SpeechRecognitionAlternative-Objekte zu. Diese enthalten jeweils ein transcript (erkannter Text) und eine confidence (Wert zwischen 0 und 1). Die Anzahl der Alternativen wird über SpeechRecognition.maxAlternatives gesteuert; length gibt die tatsächlich gelieferte Anzahl an.
Die Eigenschaft isFinal ist besonders wichtig: Mit interimResults = true liefert der Browser vorläufige Ergebnisse (isFinal === false), die sich noch ändern können. Erst wenn isFinal true ist, steht das Ergebnis fest. So bauen Sie z. B. Live-Untertitel oder Diktierfelder mit Echtzeit-Vorschau.
Mitglieder:
length(schreibgeschützt,number) – Anzahl der Alternativen.isFinal(schreibgeschützt,boolean) – ob das Ergebnis endgültig ist.item(index)– liefert dieSpeechRecognitionAlternativeam Index; alternativ Array-Zugriffresult[index].
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $index Pflicht | number | Nur für item(index): nullbasierter Index der gewünschten SpeechRecognitionAlternative. |
Rückgabewert
item(index) bzw. result[index] liefert eine SpeechRecognitionAlternative mit transcript und confidence. Instanzen von SpeechRecognitionResult selbst werden nicht konstruiert, sondern vom Browser im result-Event bereitgestellt.Beispiele
Ergebnis aus dem result-Event auslesen
const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SpeechRecognition();
recognition.lang = 'de-DE';
recognition.maxAlternatives = 3;
recognition.addEventListener('result', (event) => {
// SpeechRecognitionResult am aktuellen Index
const result = event.results[event.resultIndex];
console.log('Endgültig:', result.isFinal);
console.log('Anzahl Alternativen:', result.length);
console.log('Bestes Transkript:', result[0].transcript);
});
recognition.start();
Alle Alternativen mit Konfidenz auflisten
recognition.onresult = (event) => {
const result = event.results[event.results.length - 1];
for (let i = 0; i < result.length; i++) {
const alt = result.item(i);
console.log(`${i + 1}. ${alt.transcript} (${(alt.confidence * 100).toFixed(1)} %)`);
}
};
Live-Diktat mit vorläufigen und endgültigen Ergebnissen
const recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition)();
recognition.lang = 'de-DE';
recognition.continuous = true;
recognition.interimResults = true;
const output = document.querySelector('#diktat');
let finalText = '';
recognition.onresult = (event) => {
let interim = '';
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;
};
document.querySelector('#start').addEventListener('click', () => recognition.start());
// Wichtig · Fallstricke
- Browser-Unterstützung: Chrome und Edge nutzen den Konstruktor
webkitSpeechRecognition; Safari ab 14.1. Firefox unterstützt die Spracherkennung standardmäßig nicht. Immer per Feature-Erkennung prüfen. - Kein echtes Array:
SpeechRecognitionResulthat keinmapoderforEach. Nutzen Siefor-Schleifen oderArray.from(result). - Vorläufige Ergebnisse ändern sich: Ergebnisse mit
isFinal === falsekönnen im nächsten Event am selben Index ersetzt werden – nur endgültige Ergebnisse dauerhaft speichern. resultIndexbeachten:event.resultsenthält beicontinuous = truealle bisherigen Ergebnisse; neue beginnen beievent.resultIndex.- Konfidenz: Manche Browser liefern
confidencebei Zwischenergebnissen als0;maxAlternativeswird nicht überall voll ausgeschöpft. - Datenschutz: In Chrome wird Audio an Server von Google gesendet; die Nutzung erfordert Mikrofonfreigabe und einen sicheren Kontext (HTTPS).