Suno / app.py
FACED's picture
Update app.py
b7a5d68 verified
import os
import gradio as gr
from scipy.io.wavfile import write
import tempfile
import shutil
def inference(audio_file):
"""处理上传的音频文件并分离人声和伴奏"""
# 创建输出目录
os.makedirs("out", exist_ok=True)
# 使用demucs分离音频
output_dir = "out"
os.system(f"python -m demucs.separate -n htdemucs --two-stems=vocals '{audio_file}' -o {output_dir}")
# 获取分离后的文件路径
base_name = os.path.basename(audio_file)
name_without_ext = os.path.splitext(base_name)[0]
vocals_path = os.path.join(output_dir, "htdemucs", name_without_ext, "vocals.wav")
no_vocals_path = os.path.join(output_dir, "htdemucs", name_without_ext, "no_vocals.wav")
return vocals_path, no_vocals_path
# 创建API接口
title = "Suno 音乐分离工具"
description = """
### 使用说明
1. 上传音频文件(支持mp3、wav等格式)
2. 点击"Submit"按钮
3. 等待处理完成后下载分离后的人声和伴奏
### 技术说明
- 本工具使用使用独家AI模型进行音频分离
- 分离质量取决于原始音频的质量和特性
"""
# 创建应用界面
demo = gr.Interface(
fn=inference,
inputs=gr.Audio(type="filepath", label="上传音频文件"),
outputs=[
gr.Audio(type="filepath", label="人声"),
gr.Audio(type="filepath", label="伴奏")
],
title=title,
description=description,
theme="huggingface",
examples=[["test.mp3"]]
)
if __name__ == "__main__":
# 启动服务器,API 在新版 Gradio 中自动启用
demo.launch(share=True, server_name="0.0.0.0")