vLLM部署glm-4–9b-chat大模型AutoGen+chatTTS自动转语音

AI超元域
7 min readJun 14, 2024

--

colab脚本

https://colab.research.google.com/drive/12ZeWOwPUYqY74WMLqR-0MvBCsP7W5qaK?usp=sharing

安装和配置

conda create -n myenv python=3.9 -y
conda activate myenv
pip install vllm

开启API接口

##通用模型localhost
python -m vllm.entrypoints.openai.api_server --model NousResearch/Meta-Llama-3-8B-Instruct --dtype auto --api-key token-abc123
##通用模型公网访问
python -m vllm.entrypoints.openai.api_server --model NousResearch/Meta-Llama-3-8B-Instruct --dtype auto --api-key token-abc123 --host 0.0.0.0
##glm-4-9b的公网访问
##需要将 trust_remote_code 选项设置为 True
python -m vllm.entrypoints.openai.api_server --model THUDM/glm-4-9b-chat --dtype auto --api-key token-abc123 --host 0.0.0.0 --trust-remote-code

chatTTS配置

ChatTTS是专门为对话场景设计的文本转语音模型,例如LLM助手对话任务。它支持英文和中文两种语言。最大的模型使用了10万小时以上的中英文数据进行训练。在HuggingFace中开源的版本为4万小时训练且未SFT的版本.

##<https://pydigger.com/pypi/chattts-fork>
conda create --name chattts -yconda activate chatttsmkdir chattts
cd chattts
pip install chattts-forkchattts hello,world##查看帮助命令
chattts -h

chatTTS在终端中使用

#女性
chattts -s 2 '你好 今天天气怎么样呀.'
#男性
chattts -s 3333 '你好 今天天气怎么样呀.'

男性

Seed age style 111 young Literary 333 young Gentle 666 middle-aged White-collar 7777 middle-aged Hong Kong-style 9999 middle-aged Deep and resonant

女性

Seed age style 2 young Emotionally rich 4 middle-aged Deeply emotional 1111 middle-aged Clear and pure 3333 middle-aged Calm and serene

chatTTS代码

##项目代码和视频由AI超元域频道原创,禁止盗搬
import subprocess
def run_chattts(text):
command = f"chattts -s 2 '{text}'"
try:
result = subprocess.run(command, shell=True, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
return result.stdout.decode('utf-8')
except subprocess.CalledProcessError as e:
print(f"Error: {e}")
print(f"Output: {e.stdout.decode('utf-8')}")
print(f"Error: {e.stderr.decode('utf-8')}")
return None
# 测试
text = "你好 今天天气怎么样呀."
output = run_chattts(text)
if output:
print(output)

chatTTS调用autogen的代码

##安装autogen
pip install pyautogen
##项目代码和视频由AI超元域频道原创,禁止盗搬
import subprocess
import shlex
def run_chattts(text, output_file, speaker_index):
# 对文本进行转义和格式化
escaped_text = shlex.quote(text)

# 根据说话者的索引选择不同的声音参数
if speaker_index % 2 == 0:
voice_param = "-s 2" # 女性声音
else:
voice_param = "-s 666" # 男性声音

command = f"chattts {voice_param} -o {output_file} {escaped_text}"
try:
subprocess.run(command, shell=True, check=True)
except subprocess.CalledProcessError as e:
print(f"Error: {e}")
print(f"Output: {e.stdout}")
print(f"Error: {e.stderr}")
gpt4 = {
"config_list": [
{
"model": "gpt-4",
"base_url": "<https://api.openai.com/v1>",
"api_key": "sk-proj-bw8wKQbsn0NclaecvN6MT3BlbkFJYwnSpU1VcPtkSEP17sGF",
},
],
"cache_seed": None, # Disable caching.
}
glm = {
"config_list": [
{
"model": "THUDM/glm-4-9b-chat",
"base_url": "<http://216.81.245.215:8000/v1/>",
"api_key": "token-abc123",
},
],
"cache_seed": None, # Disable caching.
}
from autogen import ConversableAgentDarcy = ConversableAgent(
"Darcy (glm)",
llm_config=glm,
system_message="你是《傲慢与偏见》中的男主角达西先生。你是一位富有、高傲但内心善良的绅士。你对伊丽莎白的智慧和独立性格印象深刻,但又常常被她的言语所挑战。请根据伊丽莎白的发言,以达西的口吻和性格进行回应。",
)
Elizabeth = ConversableAgent(
"Elizabeth (gpt4)",
llm_config=gpt4,
system_message="你是《傲慢与偏见》中的女主角伊丽莎白。你是一位聪慧、独立且性格开朗的年轻女性。你对达西先生的傲慢和自负初impression不佳,但渐渐被他的真诚和善良所吸引。请根据达西先生的发言,以伊丽莎白的口吻和性格进行回应。",
)
chat_result = Elizabeth.initiate_chat(Darcy, message="达西先生,我们在上次的舞会上初次见面,我对您的第一印象是傲慢和自负。您几乎没有和任何女士跳舞,只是站在那里评判别人。我想知道,您为什么给人这样的印象?您真的如此高傲,还是有什么其他的原因?请告诉我您的想法。", max_turns=5)# 生成音频文件
for i, message in enumerate(chat_result.chat_history):
text = message["content"]
output_file = f"output_{i}.wav"
run_chattts(text, output_file, i)

🔥如有问题请联系我的徽信 stoeng

🔥🔥🔥本项目代码由AI超元域频道制作,观看更多大模型微调视频请访问我的频道⬇

👉👉👉我的哔哩哔哩频道

👉👉👉我的YouTube频道

--

--