BigVGAN-main / app.py
Arrcttacsrks's picture
Update app.py
4b99cd3 verified
import torch
import gradio as gr
import bigvgan
import librosa
import soundfile as sf
from meldataset import get_mel_spectrogram
# Tải mô hình BigVGAN
device = 'cuda' if torch.cuda.is_available() else 'cpu'
model = bigvgan.BigVGAN.from_pretrained('nvidia/bigvgan_v2_44khz_128band_512x', use_cuda_kernel=False)
model = torch.nn.utils.parametrizations.weight_norm(model, name="weight_norm") # Cập nhật weight_norm
model = model.eval().to(device)
# Hàm tổng hợp âm thanh
def synthesize_audio(audio_file):
# Tải và xử lý tệp âm thanh
wav, sr = librosa.load(audio_file, sr=model.h.sampling_rate, mono=True)
wav = torch.FloatTensor(wav).unsqueeze(0).to(device)
# Tính toán mel spectrogram
mel = get_mel_spectrogram(wav, model.h).to(device)
# Tổng hợp âm thanh từ mel spectrogram
with torch.inference_mode():
wav_gen = model(mel)
# Chuyển đổi tín hiệu âm thanh sang định dạng PCM 16 bit
wav_gen_float = wav_gen.squeeze(0).cpu()
wav_gen_int16 = (wav_gen_float * 32767.0).numpy().astype('int16')
# Lưu tệp âm thanh
output_path = "output.wav"
sf.write(output_path, wav_gen_int16, model.h.sampling_rate, subtype='PCM_16')
return output_path
# Tạo giao diện Gradio
iface = gr.Interface(
fn=synthesize_audio,
inputs=gr.Audio(type="filepath"),
outputs=gr.Audio(type="filepath"),
title="BigVGAN Audio Synthesis",
description="Upload an audio file to synthesize a new audio waveform using BigVGAN."
)
# Chạy ứng dụng
iface.launch()