Spaces:
Runtime error
Runtime error
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() | |