futhark-hugin / tools /make_samples.py
codah80's picture
Samples without hockey; playable on the model card
5c55227 verified
Raw History Blame Contribute Delete
1.81 kB
"""Regenerates samples/*.mp3 on CPU (run from the repo root; prints name, audio seconds, generation seconds, text)."""
import soundfile as sf, subprocess, os, time
from hugin import Hugin
h = Hugin.from_pretrained(device="cpu")
S = [("01_halsning", "Hej och välkommen! Jag heter Hugin, och jag läser svensk text högt."),
("02_siffror", "Tåget mot Göteborg avgår kl. 19:05 från spår 3, och biljetten kostar 245 kr. Ring 08-123 45 67 om du har frågor."),
("03_berattelse", "Det var en tidig morgon i slutet av augusti. Dimman låg fortfarande kvar över sjön, och någonstans långt borta hördes en båtmotor."),
("04_nyhet", "Under natten väntas kraftiga vindar längs kusten, och flera färjeturer kan bli inställda redan i morgon bitti."),
("05_uttal", "Sju sjösjuka sjömän sköljde skjortorna, medan Rolf ringde runt till rektorerna."),
("06_partikelverb", "Hon tog upp frågan på mötet, men chefen höll inte med. Det kan jag inte berätta eftersom det råder förundersökningssekretess."),
("07_engelska", "Could you send me the updated report before lunch tomorrow? The meeting starts at 10:30."),
("08_blandat", "Vi har en deadline på fredag, så jag bokar ett kort meeting med vårt product team. Alla kortkunder får cashback.")]
os.makedirs("samples", exist_ok=True)
for name, t in S:
h.tts("Hej, ett kort och cashback.") # warm-up (also loads the lazily loaded homograph and English-detection parts)
t0 = time.time(); y, sr = h.tts(t); el = time.time() - t0
sf.write(f"samples/{name}.wav", y, sr)
subprocess.run(["ffmpeg", "-loglevel", "error", "-y", "-i", f"samples/{name}.wav", "-b:a", "96k", f"samples/{name}.mp3"], check=True); os.remove(f"samples/{name}.wav")
print(f"{name}\t{len(y)/sr:.1f}\t{el:.2f}\t{t}", flush=True)