# -*- coding: utf-8 -*- """umlaut_test.py — prüft den Umlaut-Normalizer. A) Logik: bekannte ASCII-Umlaut-Wörter -> Umlaut, normale Wörter (neue/aktuell/Steuer) UNVERÄNDERT. B) Audio: erzeugt vorher (roh ASCII) vs nachher (mit Fix) auf den Desktop zum Reinhören. """ import os, time import numpy as np, soundfile as sf, librosa import pocket_server as ps DESK = os.path.join(os.path.expanduser("~"), "Desktop", "lucy_samples") os.makedirs(DESK, exist_ok=True) # --- A) Logik --- POS = {"ueber": "über", "Schoen": "Schön", "fuer": "für", "maerz": "März", "natuerlich": "natürlich", "Groesse": "Größe", "moeglich": "möglich", "muessen": "müssen"} NEG = ["neue", "aktuell", "Steuer", "Quelle", "Feuer", "treue", "Museum", "Dauer", "heute", "Frauen", "genau", "blaue"] ok = True for a, exp in POS.items(): got = ps._fix_umlauts(a); good = got == exp; ok &= good print(f"[pos] {a!r:14}-> {got!r:14} erwartet {exp!r:12} {'OK' if good else 'FAIL'}") for w in NEG: got = ps._fix_umlauts(w); good = got == w; ok &= good print(f"[neg] {w!r:14}-> {got!r:14} {'OK (unverändert)' if good else 'FAIL: GEÄNDERT!'}") S = "Ueber fuenf moegliche Gespraeche, natuerlich auch die Groesse." print("SENT roh :", S) print("SENT fix :", ps._fix_umlauts(S)) print("LOGIC_OK" if ok else "LOGIC_FAIL") # --- B) Audio vorher/nachher --- from pocket_tts import TTSModel 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 gen(text): return ps.cleanup(ps._gen_gated(text), m.sample_rate) sf.write(os.path.join(DESK, "umlaut_vorher.wav"), gen(S), m.sample_rate) # roh ASCII (falsch) sf.write(os.path.join(DESK, "umlaut_nachher.wav"), gen(ps._fix_umlauts(S)), m.sample_rate) # mit Fix print("Samples: umlaut_vorher.wav (roh) + umlaut_nachher.wav (fix) ->", DESK) print("UMLAUT_DONE")