来了!小伙伴们,初心不改 教程依旧,咱们的每月干货教程虽迟但到!特别的是这次的教程终于是我们团队小伙伴写的了!
这次给大家带来的是我们团队开发的项目demo,能够把AI智能体接入到电话中,让用户通过电话进行沟通。
与手机上自带的AI助手不同,这是完全自主可控的智能体接入,你可以自由的为智能体配备知识库和工具,让AI电话助手真正的能为你所有且为你所用。
我们先看效果:
可实现在用户说话时,随时打断ai说话、模拟真人对话节奏,并且具有很好的扩展场景,比如接入到电话中,成为你的ai电销助手、同声传译、智能家居语音控制、健康咨询等。
整个项目并不难,只要跟着教程就可以完成,一共四个步骤:
1、环境安装,代码部署
2、项目配置,账号注册
3、启动项目,搭建语音机器人
4、接入电话,完成。
-
注意:接入电话这一步骤是需要有企业才可以申请线路的。不过如果只想体验动手的快乐,那么可以忽略接入电话,先自己搭建一个在电脑上的语音问答机器人。
本次教程由我们团队小伙伴完成,
创作不易,建议大家收藏、点赞、加关注,给他点鼓励
话不多说,开始教程
(教程已同步在通往AGI之路飞书知识库,点击底部的阅读原文可以跳转查看)
本项目可以在服务器上长期运行,也可以在个人电脑(windows、mac)上进行搭建、体验。本文主要以windows电脑为例。
`0
1
安装node
如果要在服务器上运行,则可以使用命令行拉取:sudo apt install nodejs npm
如果要在自己电脑上运行,下载地址:https://nodejs.org/zh-cn/download选择你的电脑系统后,点击安装程序按钮开始下载。
下载node js
安装过程与安装其他软件类似,注意不要安装在C盘即可。安装可能会有点慢,安装过程中继续往下走,不用刻意等安装完成。安装完成后会有【Type ENTER to exit:】的字样。
安装nodejs`
02
下载及运行项目
2.1、项目内容介绍
项目分为两部分:
1、声网token的获取、更新(后端程序)
2、网页(前端)
项目下载,下载地址( 项目下载时,可以先继续往下进行,后续会用到):
https://github.com/15093083169/Agora\_AI/archive/refs/heads/main.zip
2.2、注册声网账号,前期准备
2.2.1、前往声网:
https://console.shengwang.cn,前往链接进行注册、登录、个人认证。
2.2.2、认证完成后:
https://console.shengwang.cn/settings/projects,前往链接,新建一个项目。
项目类型选择通用项目项目名称取一个方便区分的即可。场景标签选择【其他】鉴权机制选择【安全模式:app id +token】开启【开通RTM】开启【开通即时通讯IM】
2.2.3、创建完成后:
https://console.shengwang.cn/product/ConversationAI?tab=config,前往链接,点击开通服务,在弹出窗口点确认。
2.3、声网token获取。(非必须)
如果是为了尝鲜,可以跳过该流程,查看2.4,会讲获取有效期为一天的token。
如果是为了长期使用,长期获取token,建议走该流程。
2.3.1、获取声网APP ID 和主要证书的值
https://console.shengwang.cn/overview,选择你的项目,复制APP ID和 主要证书的值。
2.3.2、解压【步骤2.1时下载的项目】
打开项目文件夹,在token文件夹找到里面的.env文件。(.env文件默认无法打开,可以右键点击打开方式,选择记事本即可)
将<your_appid>修改为复制的APP ID的值
将<your_app_Certificate>修改为复制的主要证书的值。
注意: <>也要一起改掉,=后面只有复制的值。修改后需要保存。
2.3.3、运行项目:
①、打开项目文件夹,进入token文件夹,在地址栏输入cmd,回车。
②、在弹出的终端中,输入:
npm i
node DemoServer.js
注意:上面的这是两行,每行输入完成后要按回车键。除首次运行外,后续运行,只需要执行第二行命令即可。
看到:AgoraSignServer starts at 8081,证明运行成功了。
2.4、网页(前端)
2.4.1、添加密钥
https://console.shengwang.cn/settings/restfulApi,点击添加密钥按钮,添加一个密钥。
①、添加完成后,客户密钥会有一个下载按钮,下载你的key和密钥。下载后密钥无法再重新获取,请注意妥善保管。
②、下载后打开,如下图,复制客户ID/key和客户密钥/secret的值。
2.4.2、获取APP ID的值
https://console.shengwang.cn/overview,复制APP ID的值。
2.4.3、解压【步骤2.1时下载的项目】
打开项目文件夹,进入到web文件夹,找到.env文件。(.env文件默认无法打开,可以右键点击打开方式,选择记事本即可)
将<your_appid>修改修改为APP ID的值
将<your_client_id>修改为key的值
将<your_client_secret>修改为secret的值
注意: <>也要一起删掉,=后面只有复制的值。修改后需要保存
2.4.4、运行项目
①、进入到web文件夹,在地址栏输入cmd,回车。
②、在弹出的终端中,输入:
npm i
npm start
注意:上面的这是两行。每行输入完成后要按回车键。
除首次运行外,后续运行,只需要执行第二行命令即可。
2.4.5、运行成功后可打开浏览器,输入localhost:3000,即可访问。
注意不要用微信浏览器,要用系统的浏览器。
能够访问后继续往下走。接下来我们要配置的内容,都是要在这个页面里进行配置
03
项目配置
3.1、声网token
3.1.1、如果你没有按照2.3做,要使用临时token:
3.1.2、如果你按照2.3做了:
选择【后端获取token】
如果你是在windows电脑上运行,地址我已经预设过了。
如果是放在服务器上的话,要把localhost改为服务器ip或域名。
3.2、llm(大语言模型)
大模型的接入,采用标准化ai的api接入方式。理论上所有平台均可,包括工作流平台、中转站、ai提供商。
本文以火山平台的大模型的接入为例,其他平台填入内容的方式一致,各个平台获取方法可能会有差异。
3.2.1、注册、登录、认证
https://console.volcengine.com/ark/ ,如果没有使用过的话,需要先进行注册、登录、认证。
3.2.2、认证完成后:
①、前往在线推理,创建推理接入点:
②、接入点名称方便后续区分即可。模型选择,选择你想使用的模型。(模型的速度会影响语音回复的速度,如果希望更快速,可以选择doubao1.5lite)然后点击右侧的开通模型并接入。
创建时,如果已经实名认证过了,开通按钮仍然置灰,悬停提示先进行实名认证,刷新页面即可。
③、创建完成后,复制接入点id的值。
3.2.3、创建API Key
①、前往API Key管理,创建API Key。
②、名称方便后续区分即可。
③、创建完成后,先点击apikey后面的小眼睛,使你能看到apikey的值,然后点击复制。获得apikey的值
3.2.4、将获取的值写进项目中
回到我们之前打开的网页,将获取到的值输入到对应位置
API地址:
https://ark.cn-beijing.volces.com/api/v3/chat/completionsAPI
密钥:前面复制的'apikey'的值
模型名称:前面复制的接入点'id'的值
系统提示词,填入你的'提示词'。
问候语,ai首次打招呼的话术。
其他平台接入原理也一致,只要获取到对应的api地址、api密钥、模型名称即可。
3.3、VAD(语音活动检测)配置
这些参数是对ai灵敏度的参数配置,默认值是我调试后我认为合适的值。每个字段具体含义,在项目中也有气泡解释,悬停可以查看具体介绍。
人声持续阈值 (ms):持续检测到人声信号的最小时间长度,人声持续时长超过该数值时视为有声输入,避免误打断。取值120-1200
前缀填充阈值 (ms):开始新的语音片段所需的最短语音持续时间,避免非常短的声音触发语音活动检测。取值0-5000
静音持续阈值 (ms):语音结束时的最短静音持续时间,确保短暂的停顿不会过早结束语音片段。取值0-2000
灵敏度:ai识别人声的灵敏度,越低越灵敏,取值0-1启用
优雅打断:启用后,会允许用户说话时,打断ai说话
3.4、tts(文本转语音)
我预设好了【火山引擎、腾讯云】的tts模板,可以按照你想用的平台来配置。3.4.1和3.4.2任选其一即可。
3.4.1、火山引擎:
1、https://console.volcengine.com/speech,登录认证。
2、在语音合成大模型板块,创建个应用。应用名称方便区分即可,选择服务中,要勾选语音合成大模型,语音合成。
3、侧边点击语音合成,获取【APPID、AccessToken、ClusterID】的值。
4、语音类型,可以前往https://www.volcengine.com/product/tts,能力体验板块进行试听。选择好合适的音色后,前往
https://www.volcengine.com/docs/6561/1257544,找到你选择的音色所对应的voice\_type的值。
把这几个获取到的值,填入到项目中,调整你想要的语速等。点击保存配置。
3.4.2、腾讯tts:
- https://console.cloud.tencent.com/cam/capi,登录认证。
- 新建密钥,获取【APPID、SecretId、SecretKey】,下载后密钥无法再重新获取,请注意妥善保管。
3. 语音类型,可以前往https://console.cloud.tencent.com/tts/complexaudio进行试听,选择好合适的音色后,前往https://cloud.tencent.com/document/product/1073/92668找到你选择的音色所对应的音色 ID的值。
把这几个获取到的值,填入到项目中,调整你想要的语速等。点击保存配置。
04
开始体验网页ai语音对话:
我们先点击创建智能体,点击创建智能体成功后。再点击开始对话,即可开启与ai对话内容。
-
创建智能体,实际是通过声网创建了一个我们与ai对话的通道。这里使用声网的频道连接,会消耗声网资源,所以使用完成后记得点击停止智能体。
-
声网赠送的有部分免费额度,测试使用时无需担心付费问题。
-
点击开始对话,首次会请求麦克风权限,需要同意权限。同意后即可开始与ai对话。
05
接入电话:
将ai语音接入电话的能力,需要对接线路运营商。需要公司资质、服务器、一定的开发能力,以下教程会基于有一定开发能力来讲:
5.1、接入线路运营商,资质申请:
以声网官方提供的供应商【小樱桃科技】为例。
【小樱桃科技】官网:https://xswitch.cn/
联系【小樱桃科技】进行申请资质以及线路,获取账号密码。
5.2、接口对接:
5.2.1、获取【小樱桃科技】的token。
①调用/api/sessions接口。
②传参为账号(login),密码(password),从而获取token。
③获取到的token需要放在外呼接口的header里,作为接口外呼时鉴权。
5.2.2、进行外呼。
调用小樱桃/api/agora/callPSTN接口:
hearder需要传刚刚获取到的token的值。
传参:
声网频道(channnel)
主叫号码(cidNumber)
进入声网顺序(dialPhoneFirst)(true为先呼叫手机,手机接听后才进入声网)
被叫号码(destNumber)``声网token(token)
调用声网/join接口。
小樱桃呼出时,我们需要将ai的频道提前准备好。所以在呼出的同时,需要调用声网的创建频道的接口。
声网详细内容可参考声网开发文档:https://doc.shengwang.cn/doc/convoai/restful/get-started/quick-start
声网接口调用示例:
curl --request post \
--url https://api.agora.io/cn/api/conversational-ai-agent/v2/projects/<your_app_id>/join \
--header 'Authorization: Basic <credentials>' \
--data '
{
"name": "unique_name",
"properties": {
"channel": "channel_name",
"token": "token",
"agent_rtc_uid": "0",
"remote_rtc_uids": [
"*"
],
"asr": {
"language": "zh-CN"
},
"llm": {
"url": "https://api.xxxx/v1/xxxx",
"api_key": "xxx",
"system_messages": [
{
"role": "system",
"content": "You are a helpful chatbot."
}
],
"greeting_message": "您好,有什么可以帮您?",
"failure_message": "抱歉,我无法回答这个问题。",
"max_history": 10,
"params": {
"model": "xxxx",
}
},
"tts": {
"vendor": "vendor_name",
"params": {
"key": "xxxx",
"voice_id": "xxxx",
}
}
}
}
5.3、外呼项目示例
我已经做好了外呼demo,申请好资质后,将小樱桃账号密码,以及声网接口中所需的内容填入代码中,即可开始使用。
06
结语:
以上便是整个搭建过程,遇到任何任何问题,都可以评论区留言,尽力解答~
自从上一篇鼓励大家输出的分享《我是如何把AI从爱好做成“副业”和“全职”的》,我已知的已经有两个人迈出了输出的第一步,非常开心见证大家的改变。
我是梦飞,我们下次见~
既然看到这里了,如果你喜欢,请随手点个赞、在看、转发三连吧,感谢你的支持~
往期推荐
2、抛砖引玉 | 为什么DeepSeek-R1是推理模型?(万字长文)
3、二次元女友陪你上班是种什么体验?手把手教你用AI打破次元壁!
4、手把手教你把AI大模型接入小米音箱,无需任何代码基础详细操作教程