【Python】部署语音聊天机器人 Sencevoice+通义千问+Cosyvoice
本文介绍了一个基于本地ASR模型和API调用的语音对话系统实现方案。该系统通过FunASR处理输入音频生成文本,调用阿里云百炼平台的通义千问大模型进行对话处理,最后使用达摩院TTS服务合成回复语音。方案支持Linux/Windows系统,采用Python实现,核心步骤包括:1)本地部署SenseVoiceSmall模型进行语音识别;2)调用百炼API实现自然语言处理;3)通过TTS服务合成回复音频
·
使用说明
linux/windows应该都可以,原理是本地部署ASR,NPL和TTS使用API调用
(使用百炼平台有一定的免费额度)
实现效果
把一个音频文件放进去,出来一个回答的音频文件

获取API-KEY
首次调用通义千问API_大模型服务平台百炼(Model Studio)-阿里云帮助中心
环境配置
pip install dashscope
pip install openai
pip install funasr
代码实现
import dashscope
from dashscope.audio.tts_v2 import *
from funasr import AutoModel
from funasr.utils.postprocess_utils import rich_transcription_postprocess
from openai import OpenAI
import json
model_dir = "iic/SenseVoiceSmall"
model = AutoModel(# 加载ASR模型
model=model_dir, # 指定模型路径
trust_remote_code=False,
device="cuda:0",
disable_update=True,
)
res = model.generate(# 使用模型生成文本
input=f"输入音频文件路径", # 输入音频文件路径
cache={}, # 缓存字典,用于存储中间结果
language="auto", # 自动检测语言,也可以指定具体语言如"zn", "en", "yue", "ja", "ko", "nospeech"
use_itn=True, # 是否使用反规范化处理
batch_size_s=30, # 减少批处理大小以加快速度
)
text = rich_transcription_postprocess(res[0]["text"])# 对生成的文本进行后处理
print(text) # 输出最终的文本结果
api_key = "替换为您的百炼API-KEY"#替换为您的百炼API-KEY
client = OpenAI(
api_key=api_key,
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen-turbo",#可以替换LLM
messages=[
{'role': 'system', 'content': '你是章鱼哥'},#可以修改系统prompt
{'role': 'user', 'content': text}
],
)
response_dict = json.loads(completion.model_dump_json())# 解析响应并提取消息内容
message_content = response_dict['choices'][0]['message']['content']
print(message_content)
dashscope.api_key = api_key
model = "cosyvoice-v1"#可以替换TTS模型
voice = "longxiaochun"#可以替换音色
synthesizer = SpeechSynthesizer(model=model, voice=voice)
audio = synthesizer.call(message_content)
print('requestId: ', synthesizer.get_last_request_id())
with open('output.mp3', 'wb') as f:
f.write(audio)
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)