手把手带你搭建一个语音对话机器人,5分钟定制个人AI小助手(新手入门篇)

手把手带你搭建一个语音对话机器人,5分钟定制个人AI小助手(新手入门篇)

写在前面

如果你的身边有一个随时待命、聪明绝顶的AI小助手,能够听懂你的话,理解你的需求,用温暖的声音回应你,会是一种什么体验?

今天,带大家从0到1搭建一个语音对话机器人,分分钟拥有一个专属的个人AI小助手。

本文面向技术小白,以最通俗易懂的语言,最贴心的步骤指导,确保你能够轻松上手,快速掌握。

语音对话系统的基本组成有哪些?

一个可以实现语音对话的机器人,通常需要由硬件和软件构成,硬件可以理解为机器人的躯体。

本篇主要来聊聊语音对话机器人的软件部分。

说到软件部分,通常又可以抽象为三个部分:

自动语音识别(Automatic Speech Recognition, 简称 ASR),相当于 机器人的耳朵,用于把我们的语音识别成文字;

自然语言处理(Natural Language Processing, 简称 NLP),相当于 机器人的大脑,理解上一步得到的文字信息,并进行答复,当前主流的解决方案是大语言模型LLM;

文本到语音合成(Text to Speech,简称 TTS),相当于 机器人的嘴巴,把上一步的答复用语音回答出来

如何快速搭建语音对话系统?

为了帮助大家从0到1快速完成一个系统的搭建,本文将完全采用开源方案来实现。具体而言:

ASR 采用 FunASR,相比 OpenAI 开源的 Whisper,中文识别效果更好;

NLP 采用大语言模型(LLM)方案,比如我们这里可以采用 LLaMA3-8B,采用本地的 GPU 部署和运行,如果没有本地 GPU 资源,也可以调用云端 API 实现这一步;

TTS 采用 最新开源的 ChatTTS,它是专门为对话场景设计的文本转语音模型,支持英文和中文两种语言,效果非常惊艳。

1 语音识别 ASR

ASR 采用阿里开源的 FunASR,相比 OpenAI 开源的 Whisper,中文识别效果更好。

GitHub地址:https://github.com/modelscope/FunASR 模型调用参考:https://modelscope.cn/studios/iic/funasr_app_clipvideo/summary

通过如下代码,我们简单测试一下返回结果和模型效果:

from funasr import AutoModel

# asr model

funasr_model = AutoModel(model="iic/speech_seaco_paraformer_large_asr_nat-zh-cn-16k-common-vocab8404-pytorch",

vad_model="damo/speech_fsmn_vad_zh-cn-16k-common-pytorch",

punc_model="damo/punc_ct-transformer_zh-cn-common-vocab272727-pytorch",

spk_model="damo/speech_campplus_sv_zh-cn_16k-common",

)

rec_result = funasr_model.generate("test.wav", return_raw_text=False, is_final=True)

接下来我们需要将其封装成一个 API ,方便后续调用。最简单的我们可以采用 FastAPI 来实现封装,示例代码如下:

# 定义asr数据模型,用于接收POST请求中的数据

class ASRItem(BaseModel):

wav : str # 输入音频,base64编码

time_stamp : int = 0 # 时间戳,可选,默认为0

app = FastAPI()

@app.post("/asr")

async def asr(item: ASRItem):

time_stamp = int(item.time_stamp)

try:

data = base64.b64decode(item.wav)

rec_result = funasr_model.generate(data, return_raw_text=False, is_final=True)

res = rec_result[0]['sentence_info'] if time_stamp else rec_result[0]['text']

result_dict = {

"code": 0, "msg": "ok"<

相关推荐

为什么很多人看直播刷礼物:深度解析背后的心理、社交与情感驱动
【多图预警】关于台服的所有信息,
365外网足球

【多图预警】关于台服的所有信息,

📅 07-01 👁️ 1645
红手指云手机全攻略:轻松玩转云端应用,随时随地畅享体验!
轻松筹为什么余额是0
365外网足球

轻松筹为什么余额是0

📅 08-21 👁️ 2929
GITI佳通轮胎质量怎么样?佳通轮胎的优缺点点评
人人贷借款好审批吗?需要多久?
beat365中国

人人贷借款好审批吗?需要多久?

📅 07-16 👁️ 3815
7. Luna 说
365bet苹果版

7. Luna 说

📅 08-26 👁️ 5372
查找飞利浦电视机的型号
365bet苹果版

查找飞利浦电视机的型号

📅 08-18 👁️ 7086
学饮杯十大品牌排行榜
365外网足球

学饮杯十大品牌排行榜

📅 07-14 👁️ 1970