服务器部署

from fastapi import FastAPI, HTTPException, Form
from fastapi.responses import FileResponse
import os
from TTS.api import TTS
 
app = FastAPI()
 
# 初始化TTS模型
tts = TTS("tts_models/multilingual/multi-dataset/xtts_v2")
tts.to("cuda") # 或者 tts.to("cpu"),取决于你的服务器配置
 
# 指定一个固定的speaker_wav文件路径
fixed_speaker_wav_path = "5.wav"
 
# 确保temp目录存在
temp_dir = "temp"
os.makedirs(temp_dir, exist_ok=True)
 
@app.post("/tts/")
async def create_audio(text: str = Form(...)):
    # 生成安全的临时文件名
    output_file_name = f"{os.urandom(8).hex()}.wav"
    output_path = os.path.join(temp_dir, output_file_name)
    
    try:
        # 调用TTS模型生成语音,使用固定的speaker_wav文件
        tts.tts_to_file(text=text,
                        file_path=output_path,
                        speaker_wav=fixed_speaker_wav_path,
                        language="zh-cn")
    except Exception as e:
        # 如果出现错误,返回错误信息
        raise HTTPException(status_code=500, detail=str(e))
    
    # 如果成功,返回生成的音频文件
    return FileResponse(output_path)
 
if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8001)
posted on 2025-03-02 22:05  leapss  阅读(9)  评论(0)    收藏  举报