Transkripte und Commit-Strategien
Dieser Leitfaden zeigt Ihnen, wie Sie mit der ElevenLabs Echtzeit-Spracherkennungs-API Transkripte und Commit-Strategien verarbeiten.
Anleitung · Setzt voraus, dass Sie die Anleitung für clientseitiges oder serverseitiges Streaming abgeschlossen haben.
Übersicht
Bei der Audiotranskription erhalten Sie partielle und bestätigte Transkripte.
- Partielle Transkripte – die Zwischenergebnisse der Transkription
- Bestätigte Transkripte – die finalen Ergebnisse des Transkriptionssegments, die gesendet werden, wenn eine „Commit“-Nachricht eingeht. Eine Sitzung kann mehrere bestätigte Transkripte enthalten.
Das Commit-Transkript kann optional Zeitstempel auf Wortebene enthalten. Diese werden nur empfangen, wenn die Option „Zeitstempel einschließen“ auf true gesetzt ist.
Commit-Strategien
Beim Senden von Audio-Chunks über WebSocket können Transkriptsegmente auf zwei Arten bestätigt werden: manueller Commit oder Voice Activity Detection (VAD).
Manueller Commit
Mit der manuellen Commit-Strategie bestimmen Sie, wann Transkriptsegmente bestätigt werden. Dies ist die standardmäßig verwendete Strategie. Das Bestätigen eines Segments löscht das verarbeitete, angesammelte Transkript und startet ein neues Segment, ohne Kontext zu verlieren. Um die Latenz zu verbessern, empfiehlt es sich, alle 20–30 Sekunden zu bestätigen. Auch ohne manuellen Commit bestätigt das Modell nach etwa 36 Sekunden angesammeltem Audio automatisch.
Für beste Ergebnisse bestätigen Sie während Phasen der Stille oder an einem anderen logischen Punkt, etwa bei einem Sprecherwechsel.
Mehrere manuelle Commits in kurzer Folge können die Modellleistung beeinträchtigen.
Vorherigen Textkontext senden
Wenn Sie Audio zur Transkription senden, können Sie zusammen mit dem ersten Audio-Chunk vorherigen Textkontext senden, damit das Modell den Sprachkontext besser versteht. Das ist in einigen Szenarien nützlich:
- Agententext für Anwendungsfälle mit dialogorientierter KI – ermöglicht dem Modell, den Gesprächskontext leichter zu verstehen und bessere Transkripte zu erstellen.
- Wiederverbindung nach einem Netzwerkfehler – ermöglicht dem Modell, die Transkription anhand des vorherigen Texts fortzusetzen.
- Allgemeine Kontextinformationen – eine kurze Beschreibung, worum es in der Transkription geht, hilft dem Modell, den Kontext zu verstehen.
Das Senden von previous_text-Kontext ist nur beim Senden des ersten Audio-Chunks über
connection.send() möglich. Das Senden in nachfolgenden Chunks führt zu einem Fehler. Vorheriger Text funktioniert
am besten, wenn er kürzer als 50 Zeichen ist.
Voice Activity Detection (VAD)
Mit der VAD-Strategie erkennt die Transkriptions-Engine automatisch Sprach- und Stillesegmente. Wenn ein Schwellenwert für Stille erreicht ist, bestätigt die Transkriptions-Engine das Transkriptsegment automatisch.
Bei der Transkription von Mikrofon-Audio in der clientseitigen Integration wird die VAD-Strategie empfohlen.
vad_silence_threshold_secs akzeptiert 0,192 bis 3,0 Sekunden. Die JavaScript- und React-SDKs akzeptieren nur 0,3 bis 3,0.
Hintergrundaudio filtern
Setzen Sie den Abfrageparameter filter_background_audio=true, um Fehlaktivierungen durch Hintergrundsprache, etwa Gespräche in der Nähe, und Umgebungsgeräusche zu reduzieren. Bei aktiviertem Filter verwendet die Voice Activity Detection ein Modell, das darauf abgestimmt ist, Hintergrundsprache zu ignorieren. vad_threshold ist dann standardmäßig auf 0.15 gesetzt, sofern Sie keinen eigenen Wert festlegen.
filter_background_audio kann nicht mit include_timestamps kombiniert werden. Wenn Sie beide festlegen,
sendet der Server einen invalid_request-Fehler und schließt die Verbindung.
Die Filterung ändert nichts an der Abrechnung: Jedes gestreamte Audio wird abgerechnet, auch Audio, das der Filter ignoriert.
Verbindung während Stille aufrechterhalten
Die offiziellen SDKs trennen die Verbindung nicht, wenn keine Nachrichten eingehen. Die meisten Integrationen benötigen dies daher nicht. Wenn Ihr eigener WebSocket-Client oder ein zwischengeschalteter Proxy oder Load Balancer die Verbindung schließt, sobald eine Zeit lang keine Frames eingehen, übergeben Sie beim Verbinden den optionalen Abfrageparameter keepalive_interval_ms. Das ist bei längeren Phasen der Stille relevant, etwa bei einem Telefonat mit Pausen von 10–15 Sekunden. Etwa einmal pro Intervall sendet der Server ein Keepalive-partial_transcript: leer (text: ""), wenn das aktuelle Segment keinen unbestätigten Text enthält, oder als Wiederholung des neuesten partiellen Texts, wenn es welchen enthält.
Keepalives sind kein frei laufender Ping: Sie müssen weiterhin Audio streamen (Stille-Frames sind zulässig). Wenn Sie kein Audio mehr senden, werden keine Keepalives gesendet, und der Server schließt die Verbindung nach 15 Sekunden ohne Client-Nachrichten. Dieses Serverlimit ist nicht konfigurierbar.
- Akzeptiert eine Ganzzahl zwischen
500und10000(Millisekunden). Standardmäßig ist die Funktion deaktiviert; lassen Sie den Parameter weg, um das bisherige Verhalten beizubehalten. - Werte außerhalb des Bereichs oder Nicht-Ganzzahlwerte führen dazu, dass der Server einen
invalid_request-Fehler sendet und die Verbindung schließt. - Keepalives werden dadurch ausgelöst, dass das Modell das gesendete stille Audio tatsächlich verarbeitet, nicht durch einen frei laufenden Timer. Sie bestätigen daher auch, dass der Transkriptionspfad aktiv ist.
- Audio wird in Chunks von etwa 1 Sekunde verarbeitet. Keepalives treffen daher ungefähr einmal pro auf diesen Takt gerundetes Intervall ein (beispielsweise wird
1000etwa einmal pro Sekunde ausgelöst,3000etwa alle 3 Sekunden). Das erste Keepalive einer Sitzung trifft etwa 2 Sekunden nach deren Beginn ein, da der Server die ersten etwa 2 Sekunden Audio vor der Transkription puffert. Setzen Sie Ihr Intervall auf höchstens etwa ein Drittel Ihres eigenen Lese-Timeouts, um einen Puffer zu lassen. - Der
texteines Keepalives ist nur leer, wenn das aktuelle Segment noch keinen unbestätigten Text enthält. Wenn nach Sprache, aber vor einem Commit eine Pause eintritt – besonders sichtbar mitfilter_background_audio=trueoder im manuellen Commit-Modus ohne Commit – wiederholt das Keepalive stattdessen den neuesten partiellen Text, damit Zwischentext nie ausgeblendet wird. Nach einem Commit sind Keepalives wieder leer, bis neue Sprache eintrifft. - Funktioniert mit
commit_strategy=manualundcommit_strategy=vadsowie mitfilter_background_audio=true. Hat keine Auswirkungen auf die Abrechnung über das bereits gestreamte Audio hinaus. - Die
configdersession_started-Nachricht gibtkeepalive_interval_mszurück (null, wenn deaktiviert).
Ein leeres partial_transcript (text: "") bedeutet „keine Sprache im aktuellen Segment“. Ein wiederholtes,
identisches partial_transcript während einer Pause ist ebenfalls ein Keepalive – Clients sollten partielle Transkripte
einfach wie bisher darstellen, statt die Wiederholung gesondert zu behandeln.
Fügen Sie den Parameter zur WebSocket-URL hinzu:
Unterstützte Audioformate
Best Practices
Audioqualität
- Verwenden Sie für ein optimales Verhältnis von Qualität und Bandbreite eine Abtastrate von 16 kHz.
- Sorgen Sie für einen sauberen Audioeingang mit minimalen Hintergrundgeräuschen.
- Verwenden Sie eine geeignete Mikrofonverstärkung, um Clipping zu vermeiden.
- Derzeit wird nur Mono-Audio unterstützt.
Chunk-Größe
- Senden Sie für reibungsloses Streaming Audio-Chunks mit einer Länge von 0,1–1 Sekunde.
- Kleinere Chunks führen zu geringerer Latenz, aber mehr Overhead.
- Größere Chunks sind effizienter, können aber Latenz verursachen.