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_step trades speed for quality (32 is a good default; 16 is faster).
  • Use speed= (e.g. 0.9, 1.1) or duration= (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
14
Safetensors
Model size
0.6B params
Tensor type
I64
·
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for LocalDoc/omnivoice-azerbaijani

Finetuned
Qwen/Qwen3-0.6B
Finetuned
k2-fsa/OmniVoice
Finetuned
(76)
this model