Sprecherdiarisierung
Dieser Leitfaden zeigt, wie Sie in Echtzeit-Transkripten mit der Echtzeit-Spracherkennung-API markieren, wer spricht.
Anleitung · Setzt voraus, dass Sie die Anleitung für clientseitiges oder serverseitiges Streaming abgeschlossen haben.
Übersicht
Die Sprecherdiarisierung weist Wörtern Sprecher-IDs zu, damit Sie unterscheiden können, wer was gesagt hat. Bei aktivierter Diarisierung enthalten partielle Transkripte vorläufige Sprecherlabels, und auf jedes bestätigte Transkript folgt ein separates diarized_transcript-Ereignis. Sprecherlabels können sich ändern, wenn mehr Audio eingeht.
Diarisierung aktivieren
Setzen Sie beim Öffnen einer WebSocket-Verbindung mit model_id=scribe_v3_live den booleschen Abfrageparameter diarize=true. Standardmäßig ist die Diarisierung auf false gesetzt.
Die folgenden serverseitigen Beispiele öffnen eine Verbindung und empfangen Ereignisse. Installieren Sie für Python websockets oder für TypeScript ws und die Entwicklungsabhängigkeit @types/ws. Setzen Sie ELEVENLABS_API_KEY in der Umgebung Ihres Servers; die Beispiele senden ihn im Header xi-api-key. Bewahren Sie diesen Schlüssel auf dem Server auf, nicht im Browsercode.
Diese Beispiele senden kein Audio. Integrieren Sie sie mit Ihrem Audio-Producer aus der Anleitung für serverseitiges Streaming: Senden Sie input_audio_chunk-Nachrichten über dieselbe Verbindung, während Sie Ereignisse empfangen. Die Beispiele wählen pcm_16000, verwenden Sie also passendes Audio. Führen Sie in Python die Aufgabe zum Senden von Audio parallel zur Empfangsschleife aus; senden Sie in TypeScript Audio, nachdem die Verbindung geöffnet wurde.
Ereignisse verarbeiten
Partielle Transkripte
Bei aktivierter Diarisierung enthält jedes partial_transcript vorläufige words in derselben Wortstruktur wie die Batch-Transkription. Die speaker_id jedes Worts ist speaker_0, speaker_1 und so weiter, sobald ein Sprecher erkannt wurde, oder null, solange sie nicht aufgelöst ist.
Behandeln Sie diese Wörter als vorläufig: Sprecher-IDs und Zeitstempel können sich mit weiterem Audio ändern. Wörter, die noch nicht ausgerichtet wurden, haben keine Zeitstempel (start und end sind null oder nicht vorhanden).
Bestätigte und diarisiert Transkripte
Die Diarisierung verzögert committed_transcript nicht. Bei aktivierter Diarisierung fügt dieses Ereignis einen nullbasierten ganzzahligen segment_index hinzu:
Auf jede Bestätigung folgt ein separates diarized_transcript-Ereignis mit dem passenden segment_index, text und words:
Das obige Wort zeigt nur den Text und das Sprecherlabel. Die vollständige Wortstruktur verwendet dieselben Felder start, end, type, logprob und characters wie die Batch-Transkription, zusätzlich zu speaker_id. Ein nicht aufgelöster Sprecher hat eine null-Sprecher-ID.
Diarisierte Transkripte werden in der Reihenfolge der Bestätigungen gesendet. Ordnen Sie sie mit segment_index den bestätigten Transkripten zu, nicht anhand des Texts oder des nächsten empfangenen Ereignisses. Für jede Bestätigung wird immer ein diarized_transcript gesendet, auch wenn die Sprecheridentifizierung fehlschlägt; in diesem Fall sind nicht aufgelöste Sprecher-IDs null.
Sprecherzusammenführungen
Ein speakers_merged-Ereignis bedeutet, dass zwei Sprecher-IDs dieselbe Person bezeichnen:
Ersetzen Sie jede frühere Verwendung von from_speaker_id durch to_speaker_id, sowohl in partiellen als auch in diarisierten Transkripten. Sprecher-IDs werden nie wiederverwendet. Zusammenführungen können verkettet sein, wenden Sie sie daher in Empfangsreihenfolge an: Wenn speaker_2 mit speaker_1 zusammengeführt wird und anschließend speaker_1 mit speaker_0, müssen alle früheren Wörter beider IDs letztlich mit speaker_0 gekennzeichnet sein.
Rufen Sie beispielsweise diesen Handler für jedes empfangene Ereignis auf. Hier speichert transcript_history jedes von der Anwendung beibehaltene partielle und diarisiert Transkript, einschließlich früherer partieller Snapshots. Jede Zusammenführung aktualisiert alle gespeicherten Wörter direkt, sodass verkettete Zusammenführungen auch zuvor zusammengeführte Wörter aktualisieren. Rendern Sie Sprecherlabels aus diesem aktualisierten Speicher; null-Labels bleiben null.
Einschränkungen
- Die Diarisierung wird nur von
scribe_v3_liveunterstützt. Andere Modelle geben eineninvalid_request-Fehler mit der Meldung"The 'diarize' parameter is only supported by scribe_v3_live."zurück und schließen dann die Verbindung. - Die Diarisierung kann nicht mit
filter_background_audiokombiniert werden. Diese Kombination gibt eineninvalid_request-Fehler zurück, dessen Meldung"cannot be combined with filter_background_audio"enthält, und schließt dann die Verbindung. - Sprecherlabels können nicht aufgelöst bleiben (
null), und späterespeakers_merged-Ereignisse können frühere Labels ändern. Diese Zusammenführungsereignisse werden nur gesendet, wenn die Diarisierung aktiviert ist.