📝 Note

pro/translatert/journal

translaterttaurilivekitopenai-realtimeaudiotranscriptdebounce

Journal — TranslateRT

Sessions de travail · ordre antéchronologique Liens : Architecture · Decisions · TODO


2026-06-01 — Debug transcript + audio + display

✅ Fait

  • Son métallique confirmé résolu (webAudioMix: false déjà en place)
  • Identifié cause duplication transcript : gpt-realtime-translate envoie des deltas cumulatifs (pas incrémentaux malgré la doc officielle) → backend utilisait += → concaténation de tous les états intermédiaires
  • Fix backend translate-stream.ts : +== (assign le dernier delta = texte complet courant) — commit 4732c0e
  • Fix DisplayView.tsx : suppression accumulation prevText + event.text, remplacement direct segmentText(event.text) — commit 0a0723e
  • Fix EventListener.tsx : debounce 400ms via useRef timer — commit 0a0723e + 2a75e8e
  • Fix DisplayView.tsx : debounce 200ms par langue (Map de timers useRef) — commit 2a75e8e
  • Fix distribution.ts : SILENCE_THRESHOLD_MS 60→20ms pour réduire coupures audio — commit 0a0723e
  • Debug SSH Mac mini (10.130.26.13) : vérifié bundle deployed, timestamps, grep = vs +=
  • Identifié que Caddy sert le frontend depuis le .app Tauri (Resources/frontend), pas frontend/out/
  • Identifié build chain : pnpm buildncc bundlebuild tauri.app/Contents/Resources/backend/index.js
  • Voir aussi : Decisions · Architecture

⚠️ Points d’attention

  • session.output_transcript.done / session.input_transcript.done : se déclenche trop fréquemment (par mot) → abandon de l’approche done-based, utilisation du debounce à la place
  • Coupures audio : SILENCE_THRESHOLD_MS réduit mais non testé en conditions réelles Dante
  • WS LiveKit (wss://10.134.53.0:8443/livekit/rtc/v1) : erreur de connexion côté client — non résolu (piste : SEC_LAN_IP non défini dans env Tauri ?)
  • Mac mini sans git pull automatique : rebuild manuel requis à chaque commit

➡️ Prochain

  • Rebuild + test Mac mini avec 2a75e8e
  • Tester transcription + display en conditions réelles (Dante actif)

2026-06-01 — Fix espaces parasites transcription

✅ Fait

  • Identifié bug : backend émettait e.delta (token partiel OpenAI) → frontend accumulait avec " " fixe → espaces dans les mots
  • Fix pipeline.ts L251+L287 : text: e.deltatext: e.full
  • Fix EventListener.tsx : setSegments(segmentText(event.text)) direct, plus d’accumulation manuelle
  • Commit 2d77690 pushé tauri/mac-mini · Voir Decisions

➡️ Prochain

  • Pull + rebuild Mac mini : git pull origin tauri/mac-mini
  • Tester en conditions réelles Dante actif

2026-06-01 — Debug son métallique + test Tauri

✅ Fait

  • Diagnostic : webAudioMix: true + audioTrack.attach() = double lecture → comb filter → son métallique
  • Fix déjà en place commit 1848e0d (webAudioMix: false) · Voir Decisions
  • Debug SSH Mac mini (10.130.26.13) — deux répertoires :
    • /Applications/TranslateRT (ancien 9a0d4e6) — service launchd arrêté
    • /Applications/TranslateRT-app/Millennium-Live-Translate (à jour 1848e0d) — Tauri app lancée
  • Fix webAudioMix: false confirmé dans bundle JS produit (webAudioMix:!1)
  • DVS device [2] = Dante Virtual Soundcard — index correct

⚠️ Points d’attention

  • ttfMs: 97365 : ffmpeg bloque 97s sans source Dante active (normal sans Dante)
  • code: 255 sur audio capture : ffmpeg SIGKILL pendant pipeline stop — zombie subprocess
  • audioOutChunks: 0 : pipeline stoppé trop tôt lors du test
  • Flood /admin/pipeline/stop dans logs → UI bug ou réseau instable

2026-06-01 — Initialisation vault

Vault initialisé. Pipeline bout-en-bout fonctionnel sur Mac mini. Traduction FR → EN/DE/IT/ES opérationnelle. Appliance Mac mini validée sur site.