Files
mission-control-v2/client/lucy-tts/ttfb_test.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

51 lines
2.1 KiB
Python

# -*- coding: utf-8 -*-
"""ttfb_test.py — misst die Stream-TTFB im SERIELLEN Pfad mit kurzem erstem Chunk an/aus.
Ein Modell-Load, dann je Modus 3 Durchläufe -> Median. Belegt, ob keep_first_short Lucys
Sprechbeginn beschleunigt, ohne den Rest zu verschlechtern.
"""
import time, statistics as st
import numpy as np, librosa
from pocket_tts import TTSModel
import pocket_server as ps
LONG = ("Guten Morgen, Commander. "
"Das nächtliche Backup ist sauber durchgelaufen und es gab keine Fehler. "
"Der Dienst läuft stabil und die Engine antwortet zügig. "
"Ich habe die Modelle vorgewärmt und die Latenz im Blick behalten. "
"Die Protokolle zeigen keine Auffälligkeiten in den letzten Stunden. "
"Wenn du möchtest, fasse ich die offenen Punkte für heute zusammen. "
"Danach kümmere ich mich um die anstehenden Updates und melde mich wieder.")
m = TTSModel.load_model(language=ps.LANG, lsd_decode_steps=ps.LSD, temp=ps.TEMP,
noise_clamp=ps.NOISE_CLAMP, quantize=ps.QUANTIZE)
ref = ps._prep_ref()
try:
vs = m.get_state_for_audio_prompt(ps.VOICE_ST)
except Exception:
vs = m.get_state_for_audio_prompt(ref)
ra, _ = librosa.load(ref, sr=m.sample_rate, mono=True)
ps.STATE.clear()
ps.STATE.update(m=m, vs=vs, sr=m.sample_rate, ref_fp=ps._fingerprint(ra, m.sample_rate))
def measure(keep_first):
sents = ps._split_sentences(LONG, keep_first_short=keep_first)
t0 = time.time(); first = None; total = 0
for i, a in enumerate(ps._gen_sentences_ordered(sents)):
if i == 0:
first = time.time() - t0
total += a.size
return first, time.time() - t0, total / 24000.0, len(sents), sents[0]
if __name__ == "__main__":
for keep in (False, True):
ttfbs, walls = [], []
n = s0 = None
for _ in range(3):
f, w, au, n, s0 = measure(keep)
ttfbs.append(f); walls.append(w)
print(f"keep_first_short={str(keep):5} | TTFB={st.median(ttfbs):4.2f}s wall={st.median(walls):5.2f}s "
f"chunks={n} erster='{s0[:38]}'")
print("TTFB_DONE")