05: sprekers herkennen getest met een opname van drie stemmen; wat diarize in Dify wel en niet doet
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 24 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 61 KiB |
@@ -18,6 +18,8 @@ Bestanden in deze map:
|
||||
sectieoverleg-script.txt het fictieve overleg (500 woorden)
|
||||
sectieoverleg-opname.mp3 voorgelezen door OpenAI tts-1, stem Alloy, 3:01, 128 kbps (te groot voor de tool)
|
||||
sectieoverleg-opname-klein.mp3 zelfde opname, 32 kbps mono 16 kHz, 707 kB (deze gebruiken)
|
||||
sectieoverleg-drie-stemmen-klein.mp3 zelfde script met drie stemmen (nova, echo, alloy), voor de sprekertest bij stap 6
|
||||
maak_opname_drie_stemmen.py maakt die opname opnieuw (vraagt OPENAI_API_KEY in de omgeving)
|
||||
Gepubliceerde voorbeeld-app: https://udify.app/workflow/7N5dNg8fD9qXHA80
|
||||
-->
|
||||
|
||||
@@ -273,6 +275,24 @@ ffmpeg -i opname.m4a -ac 1 -ar 16000 -b:a 32k opname-klein.mp3
|
||||
|
||||
Controleer met het script (`sectieoverleg-script.txt`) of het klopt. In onze test: twee besluiten gevonden, vijf actiepunten met de juiste eigenaren en data, de leesmethode onder "Doorgeschoven" met de reden, en het koffieapparaat netjes weggelaten.
|
||||
|
||||
### Sprekers herkennen: wat het model wel en niet doet
|
||||
|
||||
Het model heet gpt-4o-transcribe-**diarize**, en "diarisatie" is sprekers uit elkaar houden. Om te zien wat dat in Dify oplevert, staat in de map een tweede testopname: `sectieoverleg-drie-stemmen-klein.mp3`, hetzelfde script maar voorgelezen door drie verschillende computerstemmen (gemaakt met `maak_opname_drie_stemmen.py`).
|
||||
|
||||
5. Draai de workflow nog een keer, nu met `sectieoverleg-drie-stemmen-klein.mp3`.
|
||||
|
||||

|
||||
|
||||
6. Kijk na afloop in **Logs** naar de run, tabblad **TRACING**, en klap **SPEECH TO TEXT** open. Onder OUTPUT staat wat de tool teruggeeft: één veld `text`, met een regeleinde op elke plek waar een andere stem begint.
|
||||
|
||||

|
||||
|
||||
Dat is het eerlijke antwoord: het model **knipt** de tekst op sprekerwisselingen, maar de Speech To Text-tool van Dify geeft **geen labels** (Spreker 1, Spreker 2) door. Wie wat zei, leidt de Verslag-node af uit de inhoud, en dat lukt hier goed omdat de opening de namen noemt ("Aanwezig zijn Karin, Bram en Fatima") en omdat mensen elkaar in een overleg aanspreken. In een overleg zonder zo'n opening worden de actiepunten "niet genoemd".
|
||||
|
||||
Twee dingen vielen verder op. De transcriptie van de drie stemmen bevat meer fouten dan die van de ene stem ("Nederlandsch", een verhaspelde naam): de computerstemmen zijn getraind op Engels en spreken Nederlands met een accent, en dat hoort het spraakmodel. Echte Nederlandse sprekers gaan beter. En de doorlooptijd was hetzelfde, ruim een minuut voor drie minuten audio.
|
||||
|
||||
> **Zelf kiezen: echte sprekerlabels.** Wil je "Karin:" en "Bram:" in het transcript, dan zijn er twee routes. De makkelijke: zet in de prompt van de Verslag-node "De regels in het transcript zijn sprekerwisselingen. Zet vóór elke regel de naam van de spreker als die uit de inhoud blijkt, anders Spreker 1, 2, 3." De precieze: vervang de Speech To Text-tool door een **HTTP Request**-node naar de spraak-API van OpenAI met `response_format=diarized_json`; die geeft per zin een sprekernummer en een tijd. Dat vraagt een sleutel in de node (via een omgevingsvariabele, nooit in de tekst) en is een volgende handleiding.
|
||||
|
||||
## Stap 7. Publiceer
|
||||
|
||||
1. Klik rechtsboven op **Publish** en dan op **Publish**.
|
||||
@@ -320,6 +340,7 @@ Het voorbeeld uit deze handleiding: <https://udify.app/workflow/7N5dNg8fD9qXHA80
|
||||
| Verslag en transcript lopen in elkaar over | De regel "Begin je antwoord met de regel # VERSLAG" ontbreekt in de instructie |
|
||||
| "Upgrade to create more apps" | Sandbox-limiet van vijf apps. Verwijder een oude app via de drie puntjes op de kaart |
|
||||
| Een mp3-link uit een testrun geeft `403 forbidden` | Downloadlinks van Dify-bestanden zijn vijf minuten geldig. Download meteen, of draai de test opnieuw |
|
||||
| Het transcript heeft geen sprekernamen, alleen regeleinden | Zo werkt de Speech To Text-tool: diarize knipt, maar labelt niet in Dify. Zie Sprekers herkennen bij stap 6 |
|
||||
| Melding over temperature | Het model ondersteunt die parameter niet. Negeren |
|
||||
|
||||
---
|
||||
@@ -332,7 +353,8 @@ De opname is verzonnen, de indeling van het verslag is onze keuze. Dit hoofdstuk
|
||||
| --- | --- | --- | --- |
|
||||
| Andere kopjes in het verslag | Stap 4, prompt | makkelijk | Een verslag in de vorm die jullie al gebruiken |
|
||||
| Taal en toon (formeel, informeel, Engels) | Stap 4, prompt | makkelijk | Een verslag dat je zonder herschrijven kunt delen |
|
||||
| Een ander spraakmodel (whisper-1 is goedkoper, diarize onderscheidt sprekers) | Stap 3, instellingen van de tool | makkelijk | Lagere kosten of juist sprekerherkenning |
|
||||
| Een ander spraakmodel (whisper-1 is goedkoper) | Stap 3, instellingen van de tool | makkelijk | Lagere kosten; sprekerwisselingen als regeleinden verlies je dan |
|
||||
| Sprekernamen in het transcript | Stap 6, prompt van Verslag, of een HTTP Request-node (zie het groene kader bij Sprekers herkennen) | gemiddeld | Een transcript met "Karin:" en "Bram:" ervoor |
|
||||
| Een tweede uitvoer: kort bericht voor wie er niet was | Extra LLM-node na stap 4, extra uitvoervariabele in stap 5 | gemiddeld | Twee producten uit één opname |
|
||||
| Actiepunten als aparte lijst die je kunt kopiëren naar een takenlijst | Extra LLM-node met alleen de tabel | gemiddeld | Minder overtypen na het overleg |
|
||||
| Een invoerveld "type overleg" dat de indeling kiest | Stap 2 plus een IF/ELSE-node of een prompt met voorwaarden | gemiddeld | Eén tool voor meerdere soorten overleg |
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user