OmniVoice โ Azerbaijani
Azerbaijani text-to-speech model fine-tuned from k2-fsa/OmniVoice (Qwen3-0.6B backbone + Higgs Audio V2 codec, 24 kHz output). Supports zero-shot voice cloning from a short reference clip as well as generation without any reference audio.
Installation
pip install omnivoice soundfile
Usage
Load the model
import soundfile as sf
import torch
from omnivoice import OmniVoice
device = "cuda:0" if torch.cuda.is_available() else "cpu"
dtype = torch.float16 if device != "cpu" else torch.float32
model = OmniVoice.from_pretrained(
"LocalDoc/omnivoice-azerbaijani",
device_map=device,
dtype=dtype,
)
Runs on GPU (fp16) or CPU (fp32); CPU inference works but is noticeably slower.
1. With a reference voice (voice cloning)
Provide a clean 5โ15 s reference recording and its exact transcript. The model reproduces the speaker's timbre and speaking style.
audio = model.generate(
text="Salam, sizษ necษ kรถmษk edษ bilษrษm?",
ref_audio="ref.wav",
ref_text="Referans sษsin dษqiq mษtni.",
language="az",
num_step=32,
)
sf.write("cloned.wav", audio[0], 24000)
If you synthesize many sentences with the same voice, build the prompt once and reuse it:
prompt = model.create_voice_clone_prompt(
ref_audio="ref.wav",
ref_text="Referans sษsin dษqiq mษtni.",
)
sentences = [
"Sifariลiniz qษbul olundu.",
"Kartฤฑnฤฑz sabah hazฤฑr olacaq.",
]
audios = model.generate(
text=sentences,
voice_clone_prompt=prompt,
language="az",
num_step=32,
)
for i, a in enumerate(audios):
sf.write(f"cloned_{i}.wav", a, 24000)
2. Without a reference voice
Auto voice โ pass only the text; the model picks a voice itself:
audio = model.generate(
text="Bu gรผn hava gรผnษลli olacaq.",
language="az",
num_step=32,
)
sf.write("auto.wav", audio[0], 24000)
Voice design โ describe the desired voice with instruct (comma-separated attributes such as
male / female, young adult / middle-aged / elderly, low pitch / high pitch, whisper):
audio = model.generate(
text="Bu gรผn hava gรผnษลli olacaq.",
instruct="female, young adult, moderate pitch",
language="az",
num_step=32,
)
sf.write("designed.wav", audio[0], 24000)
Voice design comes from the base OmniVoice model; for a stable, consistent voice across many utterances, voice cloning from a reference is recommended.
Tips
- Write numbers, dates and abbreviations as words: the model expects normalized text (e.g. iyirmi beล instead of 25).
num_steptrades speed for quality (32 is a good default; 16 is faster).- Use
speed=(e.g.0.9,1.1) orduration=(seconds) to control pacing.
Limitations
- Numbers, dates and abbreviations must be written out as words.
- Voice cloning quality depends on the reference: use clean 5โ15 s audio with an exact transcript.
- Without a reference, the voice may vary from call to call.
License
The base OmniVoice weights are released under CC BY-NC 4.0, so this fine-tune is non-commercial.
- Downloads last month
- 77