09a1c98514
- 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>
51 lines
2.1 KiB
Python
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")
|