File size: 1,813 Bytes
8c4a637 fd13602 5c55227 8c4a637 fd13602 8c4a637 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | """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)
|