Files
mission-control-v2/client/lucy-tts/verify_clip.py
T
Hitonabi 09a1c98514 Lucy-TTS/F5: Skripte + Batches versionieren, schwere Assets ignoriert
- pocket_server.py (Produktions-TTS mit Stimmen-Waechter), text_norm, Bench-/Diag-Skripte
- lucy-f5: f5_server/f5_test/bench_dml (DirectML-Experiment, Phase C/D offen)
- .gitignore: venvs/Modelle/Audio/Logs der beiden Ordner + box_recon/gemma_swap-Scratch

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 10:29:33 +02:00

29 lines
1.4 KiB
Python

# -*- coding: utf-8 -*-
"""Verify: fehlen WÖRTER (Content-Cut) oder ist es nur gefühltes abruptes Einsetzen?
Whisper-Rücktranskription der v2-Samples + Energie am 1./letzten Audio-Sample."""
import os, numpy as np, soundfile as sf
from faster_whisper import WhisperModel
DIR = r"C:\Users\TobisPC\Desktop\lucy_lsd_v2"
EXPECT = {
"kurz": "Hallo Commander, ich höre dich.",
"mittel":"Guten Morgen, Commander. Das Backup ist sauber durchgelaufen und es gab keine Fehler.",
"lang": "Natürlich kümmere ich mich darum, Commander. Ich starte den Dienst neu, prüfe die Protokolle und melde mich, sobald alles wieder läuft.",
}
w = WhisperModel("small", device="cpu", compute_type="int8")
for lsd in [5, 6]:
print(f"=== lsd {lsd} ===")
for name in ["kurz", "mittel", "lang"]:
p = os.path.join(DIR, f"lsd{lsd}_{name}.wav")
a, sr = sf.read(p)
a = np.asarray(a, dtype=np.float32).reshape(-1)
# Energie der ersten/letzten 100ms NICHT-Pad (überspringe 90ms Pad)
pad = int(0.09*sr)
core = a[pad:-pad] if a.size > 2*pad else a
seg, _ = w.transcribe(p, language="de", beam_size=5)
txt = " ".join(s.text for s in seg).strip()
print(f"[{name:6}] EXPECT: {EXPECT[name]}")
print(f" GOT : {txt}")
print(f" dur={a.size/sr:.2f}s core_start_amp={np.abs(core[:5]).max():.3f} core_end_amp={np.abs(core[-5:]).max():.3f}")
print("VERIFY_DONE")