File size: 1,752 Bytes
579ca46 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #!/usr/bin/env python3
"""Run several synthesis cases on the board and save wavs (for ASR / listening)."""
import os, sys, time
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from cutetts_ax import CuteTTSAX
from cutetts_ax import audio as A
MODEL = os.environ.get("CUTETTS_MODEL_DIR", "compile")
ASSETS = os.environ.get("CUTETTS_ASSETS", "sdk/assets")
OUT = os.environ.get("CUTETTS_OUT", "scratch/board_samples")
os.makedirs(OUT, exist_ok=True)
CASES = [
("en_default", "The voice generated by this model sounds amazing!",
"sdk/samples/reference.wav", 42),
("en_long", "Hello, this is a test of the CuteTTS text to speech system running on the AX650 neural processing unit.",
"sdk/samples/reference.wav", 7),
("zh_default", "今天天气很好,我们一起去公园散步吧。",
"sdk/samples/reference.wav", 123),
("en_other_voice", "Quick brown fox jumps over the lazy dog.",
"/ai_data/AX615/hy/workspace/Speech-Translation-ZipVoice/samples/en_16k.wav", 2024),
]
tts = CuteTTSAX(MODEL, ASSETS, engine=os.environ.get("CUTETTS_ENGINE", "ax"))
for tag, text, ref, seed in CASES:
if not os.path.exists(ref):
print("skip (no ref)", tag); continue
t0 = time.time()
wav = tts.synthesize(text, ref, seed=seed)
A.write_wav(os.path.join(OUT, tag + ".wav"), wav, tts.sr)
tm = tts.last_timing
print(f"{tag}: {tm['audio_seconds']:.2f}s audio, {tm['steps']} patches, "
f"total {tm['total']:.2f}s, RTF {tm['total']/max(tm['audio_seconds'],1e-6):.2f} | "
f"vae_enc {tm['vae_enc']:.2f} spk {tm['speaker_enc']:.2f} prefill {tm['prefill']:.2f} "
f"ar {tm['ar_loop']:.2f} (dit {tm['dit']:.2f} dec {tm['lm_decode']:.2f}) vae_dec {tm['vae_dec']:.2f}")
|