Views
No views yet
1omnivoice
2torch
3soundfile
4numpy1ref_audio.wav
2ref_text.txt1from pathlib import Path
2
3import numpy as np
4import soundfile as sf
5import torch
6from omnivoice import OmniVoice
7
8repo_id = "kawshikbuet17/OmniVoice-bf16"
9
10text = "আমি কৌশিকের কনভার্ট করা মডেল ব্যবহার করে এই অডিওটি তৈরি করছি।"
11ref_audio = "./ref_audio.wav"
12ref_text = Path("./ref_text.txt").read_text(encoding="utf-8").strip()
13out_wav = "./omnivoice_bf16_output.wav"
14
15model = OmniVoice.from_pretrained(
16 repo_id,
17 device_map="cuda:0",
18 dtype=torch.float16,
19)
20
21model.eval() if hasattr(model, "eval") else None
22
23with torch.inference_mode():
24 output = model.generate(
25 text=text,
26 language="Bengali",
27 ref_audio=ref_audio,
28 ref_text=ref_text,
29 num_step=32,
30 guidance_scale=2.0,
31 speed=1.0,
32 t_shift=0.1,
33 denoise=True,
34 postprocess_output=True,
35 layer_penalty_factor=5.0,
36 position_temperature=5.0,
37 class_temperature=0.0,
38 audio_chunk_duration=15.0,
39 audio_chunk_threshold=30.0,
40 )
41
42if isinstance(output, dict):
43 for key in ["audio", "audios", "wav", "wavs", "waveform", "samples"]:
44 if key in output:
45 output = output[key]
46 break
47
48if isinstance(output, (tuple, list)):
49 output = output[0]
50
51if isinstance(output, torch.Tensor):
52 audio = output.detach().float().cpu().numpy()
53else:
54 audio = np.asarray(output, dtype=np.float32)
55
56while audio.ndim > 1 and audio.shape[0] == 1:
57 audio = audio[0]
58
59if audio.ndim == 2 and audio.shape[0] <= 8 and audio.shape[1] > audio.shape[0]:
60 audio = audio.T
61
62audio = np.clip(audio, -1.0, 1.0)
63sample_rate = getattr(model, "sampling_rate", None) or getattr(model, "sample_rate", None) or 24000
64
65sf.write(out_wav, audio, sample_rate)
66print(f"Saved: {out_wav}")device_map="cuda:0" or device_map="cuda:1" based on your GPU.device_map="cpu" only if GPU is not available. CPU inference can be slow.