本文最后更新于 2024-06-12,文章内容可能已经过时。

原理

响应式语音对话是基于Chat TTS实现的,通过在本地部署TTS模型进行实时推理,下面是实现原理:

搭建

环境要求:

  1. windows 10/11

  2. python 3.7及以上版本(亲测python3.11版本可用)

Chat TTS本地服务搭建过程:

为了方便部署在服务器上使用API远程调用,这里是直接拉取的ChatTTS_Webui的源代码

  • 使用pip安装根目录下requirements.txt文件中依赖项

python -r requirements.txt

  • 安装完即可使用一下命令启动Webui

python webui.py

  • Web ui中提供了多个API接口请求方式,以python为例

from gradio_client import Client

client = Client("http://localhost:8080/")
result = client.predict(
		text="你好呀",
		temperature=0.3,
		top_P=0.7,
		top_K=20,
		audio_seed_input=2,
		text_seed_input=42,
		refine_text_flag=True,
		api_name="/generate_audio"
)
print(result)
  • 到这里基本就完成了,下面是关于音色种子的一些示例:

使用

可以通过下列实例代码使用

from gradio_client import Client
import time
import os
import openai

openai.api_key = "API-key"
uuu = input("user:")
messages = [
    {"role": "system", "content": '你是一个助手'},
    {"role": "user", "content": uuu}
]

response = openai.ChatCompletion.create(
    model="gpt-4o",  # 选择使用的模型
    messages=messages,          # 设定对话历史消息
    temperature=0.7,            # 控制生成文本的创造性(可选)
    max_tokens=50               # 生成的最大标记数(可选)
)
generated_text = response['choices'][0]['message']['content']

# 输出 OpenAI 的回复
print("API 响应:", generated_text.strip())
client = Client("http://localhost:8080/")
result = client.predict(
		text=generated_text.strip(),
		temperature=0.35709,
		top_P=0.7,
		top_K=20,
		audio_seed_input=41438986,
		text_seed_input=59862103,
		refine_text_flag=True,
		api_name="/generate_audio"
)

print(result)
api_response = (result)
path = api_response[0]  # 获取路径部分
print(path)
import pygame
pygame.mixer.init()
pygame.time.delay(2000)
pygame.mixer.music.load(path)  
pygame.mixer.music.set_volume(0.5) 
pygame.mixer.music.play()
while pygame.mixer.music.get_busy():
    time.sleep(1)  # 等待1秒钟