python系列&deep_study系列:TTS语音合成部署服务器,可远程访问(全部代码和详细部署步骤)




TTS语音合成部署服务器,可远程访问(全部代码和详细部署步骤)

TTSText-to-Speech,文本转语音)是一种将书面文本转换成口头语言输出的技术。用户输入文本,TTS系统将这些文本“读”出来,通常是通过合成语音的形式。这种技术可以使计算机、智能手机、平板电脑和其他设备通过语音与用户交流。

TTS系统通常包括以下几个步骤:

  1. 文本预处理:将输入的文本转换成适合处理的格式,包括文本归一化(比如数字转换成文字)、去除无用字符、识别句子和词语边界等。

  2. 文本分析:对处理后的文本进行语法分析,确定词语的发音和句子的语调。这一步可能包括词性标注、句法分析等。

  3. 发音转换:根据文本分析的结果,将文本转换成发音符号或直接转换成语音波形。这可能涉及到查阅发音字典或应用语音合成算法。

  4. 语音合成:将发音转换成可听见的语音。这一步通常使用数字信号处理技术,可以通过不同的方法实现,如连接法(串联存储的语音片段)和参数法(实时生成语音波形)。

TTS技术有着广泛的应用和重要的社会意义:

  • 辅助技术:对于视力障碍人士或阅读障碍者,TTS可以提供一个听觉上的阅读方式,使他们能够“阅读”电子书、网页、文档等。

  • 教育:TTS可以帮助学习语言的人们更好地理解和发音新词汇,也可以作为教学辅助工具,为学生提供更多样的学习方式。

  • 交互系统:在自动应答系统、虚拟助手、导航系统等应用中,TTS能够提供用户界面的语音输出,使得用户交互更加自然和便捷。

  • 媒体和娱乐:TTS可以用于新闻阅读、播客、视频内容的语音旁白等,扩展内容的接触和消费方式。

随着技术的发展,TTS的自然度和可理解性在不断提高,使得它在我们日常生活中的应用越来越广泛

一、环境配置

pip install TTS
 
git clone https://github.com/coqui-ai/TTS
 
make system-deps
make install

https://huggingface.co/coqui/XTTS-v2

下载模型
在这里插入图片描述

在这里插入图片描述

from TTS.api import TTS
tts = TTS("tts_models/multilingual/multi-dataset/xtts_v2")
tts.to("cuda") # 如果你想要使用GPU
 
# generate speech by cloning a voice using default settings
tts.tts_to_file(text="It took me quite a long time to develop a voice, and now that I have it I'm not going to be silent.",
                file_path="output.wav",
                speaker_wav="5.wav",
                language="en")

运行后会下载模型到指定目录,会一直下不下来,将上面文件夹复制过去即可。

成功后,会生成output.wav

二、服务器部署

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)

在这里插入图片描述

问答:

问:博主在吗,我用postman提示 无法打开5.wav
“detail”: “Error opening ‘5.wav’: System error.”,请问怎么解决

答:将你的音频文件重命名为5.wav,或者代码替换它,音频文件最好5秒,不要太长







学术菜鸟小晨

TTS语音合成部署服务器,可远程访问(全部代码和详细部署步骤)

posted @ 2024-07-03 11:34  坦笑&&life  阅读(33)  评论(0编辑  收藏  举报  来源