python系列&deep_study系列:最新ChatTTS语音合成项目本地、服务器部署(可远程访问(全部代码和详细部署步骤))




最新ChatTTS语音合成项目本地、服务器部署(可远程访问(全部代码和详细部署步骤))

最新Chat-tts语音合成技术效果展示

最新Chat-tts语音合成技术效果展示的文本转语音模型。它支持英语和中文。模型经过 100,000+ 小时的中英文训练。HuggingFace 上的开源版本是一个 40,000 小时的预训练模型,没有 SFT。

主要功能:

文字转语音:在文本框中输入文字,ChatTTS会生成对应的语音,并自动调整韵律和停顿。

实时语音对话:与大语言模型结合,实现实时语音对话功能。

调节音色:在“Audio Seed”处可以调节数字指定说话人的音色,或通过摇骰子随机生成一种音色。

控制细节:用户可以在文本中加入特殊标记如[laugh]和[uv_break],手动控制笑声和停顿等效果。

ChatTTS的突出特点

多语言支持:ChatTTS不仅支持中文,还能够生成自然流畅的英文语音。中英文混合语音表现出色,几乎听不出AI生成的痕迹。

细粒度控制:ChatTTS允许用户控制笑声、说话间的停顿以及语气词,使生成的语音更加自然和生动。

多说话人支持:ChatTTS支持多说话人的语音合成,可以复刻各种声音,包括已故人物的经典声音。

大规模训练数据:最大的ChatTTS模型使用了超过 10 万小时的中英文数据进行训练,在HuggingFace开源的版本使用了 4 万小时的训练数据,但未经过监督微调(SFT)。

ChatTTS的应用场景

ChatTTS适用于各种需要高质量语音合成的场景,包括但不限于:

电商直播:为直播提供更加自然的语音配音,提高用户体验。

自媒体:帮助自媒体创作者生成生动的配音,吸引更多观众。

在线教育:为在线课程提供清晰自然的讲解声音,提升学习效果。

客服和售后服务:提供更人性化的语音服务,提高客户满意度。

一、部署

GitHub - 2noise/ChatTTS: ChatTTS is a generative speech model for daily dialogue.

conda create -n chattts python==3.10
 
conda activate chattts
 
pip install -r requirements.txt

二、部署服务

fastapi:

from fastapi import FastAPI, HTTPException
from fastapi.responses import FileResponse
from pydantic import BaseModel
import numpy as np
from wave import Wave_write
import os
 
# 这里应该有 ChatTTS 的导入和模型加载,假设 ChatTTS 和 Chat 已经正确配置
import ChatTTS
chat = ChatTTS.Chat()
chat.load_models(compile=False)
 
app = FastAPI()
 
class AudioRequest(BaseModel):
    text: str
    params_refine_text: dict
 
@app.post("/generate-audio/")
def generate_audio(request: AudioRequest):
    try:
        # 生成音频
        wavs = chat.infer(request.text, params_refine_text=request.params_refine_text)[0]
        sample_rate = 24000
        audio_data_rescaled = (wavs * 28000).astype(np.int16).flatten()
 
        # 确保存储路径存在
        os.makedirs('audio_files', exist_ok=True)
        file_path = 'audio_files/test.wav'
 
        # 写入 WAV 文件
        with Wave_write(file_path) as wave_file:
            wave_file.setparams((1, 2, sample_rate, len(audio_data_rescaled), 'NONE', 'not compressed'))
            wave_file.writeframes(audio_data_rescaled.tobytes())
 
        return FileResponse(path=file_path, filename="test.wav", media_type='audio/wav')
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))
 
if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)

要使用 Postman 访问你的 FastAPI 服务并测试 /generate-audio/ 端点,你可以按照以下步骤操作:

1. 打开 Postman

如果你还没有安装 Postman,可以从其官方网站下载并安装。

2. 创建一个新的请求

  • 在 Postman 的界面中,点击左上角的 “New” 按钮,然后选择 “Request”。

  • 给这个请求命名,比如 “Test Audio Generation”,并可以选择保存到一个集合中(可选步骤)。

  • 点击 “Save”。

3. 配置请求

  • 在请求选项卡中,将请求类型设置为 POST。

  • 在 URL 输入框中输入你的 FastAPI 服务地址和端点,例如 http://localhost:8000/generate-audio/(假设你的服务运行在本地机器上的 8000 端口)。

4. 设置请求体

由于你需要发送 JSON 数据,进行以下设置:

  • 点击 “Body” 标签。

  • 选择 “raw” 选项,并从右侧的下拉菜单中选择 “JSON” 作为数据格式。

  • 在输入框中输入 JSON 数据,例如:

{
  "text": "云澈的意识逐渐苏醒。怎么回事……难道我还没有死?我明明坠下了绝云崖,怎么可能还活着!而且身上居然没有痛感……连不适感都没有?这是怎么回事?云澈一下子睁开了眼睛,快速起身坐起,赫然发现,自己竟在一张松软的大床上,床的上方垂下大红色的曼联,渲染着一种喜庆的气氛。",
  "params_refine_text": {
    "prompt": "[oral_2][laugh_0][break_4]"
  }
}

在这里插入图片描述







学术菜鸟小晨

最新ChatTTS语音合成项目本地、服务器部署(可远程访问(全部代码和详细部署步骤))

posted @ 2024-09-12 18:30  坦笑&&life  阅读(15)  评论(0编辑  收藏  举报  来源