"""Minimal inference example for qwen3_voice_design_t1. Install: pip install qwen-tts transformers torch soundfile Run: python example_inference.py # loads from local dir (./) python example_inference.py --repo macminix/qwen3_voice_design_t1 # or pull from HF The model is self-contained. No base model download is required. """ from __future__ import annotations import argparse from pathlib import Path import soundfile as sf import torch from qwen_tts import Qwen3TTSModel PROMPTS = [ dict( name="happy_male", text="Come and look at this, you are not going to believe it.", instruct="A male speaker delivers his happy speech at a moderate pace with standard energy.", ), dict( name="sad_female_slow", text="I'm sorry. I tried everything I could think of.", instruct="A female voice speaks slowly with a sad, quiet tone.", ), dict( name="angry_male_low_fast", text="You were warned, and you did it anyway.", instruct="A low-pitched male speaker, angry and forceful, speaking at a fast pace.", ), ] GEN_KWARGS = dict( language="english", temperature=0.9, top_k=50, top_p=1.0, repetition_penalty=1.05, max_new_tokens=600, do_sample=True, ) def main() -> None: ap = argparse.ArgumentParser() ap.add_argument("--repo", default=".", help="HF repo id or local path (default: current dir)") ap.add_argument("--out-dir", default="./out", help="where to write wavs") ap.add_argument("--dtype", default="bfloat16", choices=["bfloat16", "float16", "float32"]) ap.add_argument("--device", default="cuda:0" if torch.cuda.is_available() else "cpu", help="torch device (default: cuda:0 if available, else cpu)") args = ap.parse_args() dtype = {"bfloat16": torch.bfloat16, "float16": torch.float16, "float32": torch.float32}[args.dtype] print(f"loading model from {args.repo} (device={args.device}, dtype={args.dtype})") wrap = Qwen3TTSModel.from_pretrained(args.repo, device_map=args.device, dtype=dtype) out_dir = Path(args.out_dir) out_dir.mkdir(parents=True, exist_ok=True) for p in PROMPTS: wavs, sr = wrap.generate_voice_design(text=p["text"], instruct=p["instruct"], **GEN_KWARGS) path = out_dir / f"{p['name']}.wav" sf.write(path, wavs[0], sr) print(f" {path} ({len(wavs[0]) / sr:.1f} s @ {sr} Hz)") print("done") if __name__ == "__main__": main()