python系列&deep_study系列:最新ChatTTS语音合成项目本地、服务器部署(可远程访问(全部代码和详细部署步骤))
最新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]"
}
}