Signatur
Beschreibung
Die schreibgeschützte Eigenschaft transcript des Interfaces SpeechRecognitionAlternative enthält den Text, den die Spracherkennung für ein gesprochenes Wort oder einen Satz ermittelt hat. Sie ist der eigentliche Nutzwert der Spracherkennung: Hier landet das, was die Person gesagt hat.
Man erreicht sie über das result-Event von SpeechRecognition: event.results ist eine SpeechRecognitionResultList, jedes Element davon ein SpeechRecognitionResult, das wiederum eine oder mehrere SpeechRecognitionAlternative-Objekte enthält. Der typische Zugriff lautet daher event.results[i][0].transcript. Wie viele Alternativen geliefert werden, steuert SpeechRecognition.maxAlternatives; ergänzend gibt confidence an, wie sicher sich die Engine bei der jeweiligen Alternative ist.
Bei kontinuierlicher Erkennung (continuous = true) oder mit Zwischenergebnissen (interimResults = true) kann sich das Transkript eines noch nicht finalen Ergebnisses laufend ändern. Ob ein Ergebnis endgültig ist, zeigt SpeechRecognitionResult.isFinal an. Für eine saubere Anzeige trennt man deshalb vorläufigen von endgültigem Text.
Rückgabewert
Beispiele
Einfache Spracheingabe auslesen
const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SpeechRecognition();
recognition.lang = 'de-DE';
recognition.addEventListener('result', (event) => {
const text = event.results[0][0].transcript;
console.log(`Erkannt: ${text}`);
});
document.querySelector('#mic').addEventListener('click', () => recognition.start());
Alle Alternativen mit Konfidenz anzeigen
const recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition)();
recognition.lang = 'de-DE';
recognition.maxAlternatives = 3;
recognition.onresult = (event) => {
const result = event.results[0];
for (const alt of result) {
console.log(`${alt.transcript.trim()} (${(alt.confidence * 100).toFixed(1)} %)`);
}
};
recognition.start();
Diktierfunktion mit Zwischen- und Endergebnissen
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 { transcript } = event.results[i][0];
if (event.results[i].isFinal) {
finalText += transcript.trim() + ' ';
} else {
interim += transcript;
}
}
output.textContent = finalText + interim;
};
recognition.start();
// Wichtig · Fallstricke
- Browser-Kompatibilität: In Chrome und Edge nur als
webkitSpeechRecognitionverfügbar; Firefox unterstützt die Spracherkennung nicht. Immer per Feature-Erkennung prüfen. - Datenschutz: In Chrome wird der Ton zur Erkennung an Google-Server gesendet – ohne Netzwerk kein Transkript. Nutzer sollten darüber informiert werden.
- Die Seite muss in einem sicheren Kontext (HTTPS) laufen, und der Mikrofonzugriff muss erlaubt sein, sonst feuert ein
error-Event stattresult. - Transkripte enthalten teils führende Leerzeichen und keine bzw. uneinheitliche Satzzeichen und Großschreibung – vor Vergleichen mit
trim()undtoLowerCase()normalisieren. - Bei
interimResultsevent.resultIndexbeachten, sonst werden bereits verarbeitete Ergebnisse doppelt übernommen. - Das Transkript als Nutzereingabe behandeln: per
textContentstattinnerHTMLausgeben, um XSS zu vermeiden.