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)