| """Local inference script (same model settings as the API).""" |
| from pathlib import Path |
|
|
| from omnivoice import OmniVoice |
| import soundfile as sf |
| import torch |
|
|
| MODEL_DIR = Path(__file__).resolve().parent / "KhanhTTS-OmniVoice" |
|
|
| model = OmniVoice.from_pretrained( |
| str(MODEL_DIR), |
| device_map="cpu", |
| dtype=torch.float32, |
| local_files_only=True, |
| ) |
| REF_AUDIO = MODEL_DIR.parent / "refs" / "reference.wav" |
| REF_TEXT = (MODEL_DIR.parent / "refs" / "reference.txt").read_text(encoding="utf-8").strip() if (MODEL_DIR.parent / "refs" / "reference.txt").is_file() else None |
|
|
| if REF_AUDIO.is_file(): |
| voice = model.create_voice_clone_prompt(ref_audio=str(REF_AUDIO), ref_text=REF_TEXT) |
| audio = model.generate(text="Xin chào các bạn.", voice_clone_prompt=voice) |
| else: |
| raise SystemExit(f"Đặt file giọng mẫu tại: {REF_AUDIO}") |
|
|
| sf.write("out.wav", audio[0], 24000) |
|
|