import gradio as gr import torch from pathlib import Path import os import sys # 添加项目根目录到 Python 路径 sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from src.deploy.voice_clone import VoiceCloneSystem # 创建临时目录 TEMP_DIR = Path("temp") TEMP_DIR.mkdir(exist_ok=True) # 初始化系统 system = VoiceCloneSystem(device="cpu" if not torch.cuda.is_available() else "cuda") def clone_voice(text: str, reference_audio) -> str: """ 克隆语音的 Gradio 接口函数 Args: text: 要转换的文本 reference_audio: 参考音频文件路径 Returns: 生成的音频文件路径 """ try: # 生成语音 speech = system.clone_voice(text, [reference_audio]) # 保存音频 output_path = str(TEMP_DIR / "output.wav") system.save_audio(speech, output_path) return output_path except Exception as e: raise gr.Error(str(e)) # 创建 Gradio 界面 demo = gr.Interface( fn=clone_voice, inputs=[ gr.Textbox( label="输入文本", placeholder="请输入要转换的文本...", lines=3 ), gr.Audio( label="参考音频", type="filepath" ) ], outputs=gr.Audio(label="生成的语音"), title="语音克隆系统", description="上传一段参考音频,输入文本,系统会生成具有相同声音特征的语音。支持中文和英文!", article=""" ## 使用说明 1. 上传一段清晰的参考音频(WAV格式最佳,建议5-10秒) 2. 输入要转换的文本(支持中文和英文) 3. 点击提交,等待系统生成语音 ## 注意事项 - 参考音频质量会影响克隆效果 - 建议使用安静环境下录制的清晰语音 - 首次运行时需要下载模型,可能需要等待一段时间 """, examples=[ ["你好,这是一段测试文本。", None], ["Hello, this is a test message.", None], ] ) # 启动应用 if __name__ == "__main__": demo.launch()