服务器部署
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)