kctts / app.py
kochit's picture
Update app.py
0caefce verified
Raw
History Blame Contribute Delete
2.38 kB
import os
# PyTorch Dynamo နဲ့ Asyncio Warning တွေကို System level ကနေ ပိတ်ခြင်း
os.environ["TORCHDYNAMO_DISABLE"] = "1"
import asyncio
import warnings
warnings.filterwarnings("ignore")
import gradio as gr
import numpy as np
import spaces
import torch
from voxcpm import VoxCPM
model = None
def get_model():
global model
if model is None:
print("Loading VoxCPM2 Model...")
model = VoxCPM.from_pretrained("openbmb/VoxCPM2")
return model
@spaces.GPU
def generate_speech(target_text, reference_audio):
cpm_model = get_model()
# Reference Audio သို့မဟုတ် Target Text ကို စစ်ဆေးခြင်း
if reference_audio:
wav = cpm_model.generate(
text=target_text,
prompt_wav_path=reference_audio,
prompt_text=target_text,
cfg_value=2.0,
inference_timesteps=10,
)
else:
wav = cpm_model.generate(
text=target_text, cfg_value=2.0, inference_timesteps=10
)
# wav ထွက်လာမှု စစ်ဆေးခြင်း
if wav is None:
raise ValueError("Audio generation failed and returned None.")
# Audio Data ကို Gradio ဖတ်နိုင်သော numpy float32 / int16 သို့ သေချာပြောင်းပေးခြင်း
sample_rate = getattr(cpm_model.tts_model, "sample_rate", 24000)
if torch.is_tensor(wav):
wav = wav.cpu().numpy()
wav = np.squeeze(wav)
return (sample_rate, wav)
# UI Layout
demo = gr.Interface(
fn=generate_speech,
inputs=[
gr.Textbox(
label="Target Text (မြန်မာစာ)",
value="မင်္ဂလာပါ၊ ဒီမှာမြန်မာလို စာသားရိုက်ထည်ပြီး အသံထုတ်နိုင်ပါတယ်။",
lines=3,
),
gr.Audio(
label="Reference Audio (မြန်မာလို ပြောထားသည့် အသံဖိုင် ၃-၅ စက္ကန့်)",
type="filepath",
sources=["upload", "microphone"],
),
],
outputs=gr.Audio(label="Generated Audio"),
title="VoxCPM2 myanmar voice",
)
if __name__ == "__main__":
demo.launch()