Download tools/make_samples.py from codah80/futhark-hugin: direct link, hf CLI and curl.
- Browser
- Download file 1.81 kB
-
https://huggingface.co/codah80/futhark-hugin/resolve/main/tools/make_samples.py
- Command line
-
hf download hf://codah80/futhark-hugin/tools/make_samples.py
-
curl -L -o make_samples.py https://huggingface.co/codah80/futhark-hugin/resolve/main/tools/make_samples.py
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) | |