File size: 1,627 Bytes
56669f6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b7a5d68
56669f6
 
 
b7a5d68
56669f6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e2a052c
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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")