效果示例:
手把手教大家在【电脑网页上实现ai实时语音】的搭建:

本项目可以在服务器上长期运行,也可以在个人电脑(windows、mac)上进行搭建、体验.本文主要以windows电脑为例1.安装node。
- 1. 如果要在服务器上运行,则可以使用命令行拉取:
sudo apt install nodejs npm- 1. 如果要在自己电脑上运行,下载地址:https://nodejs.org/zh-cn/download,选择你的电脑系统后,点击安装程序按钮开始下载。

- 1. 安装过程与安装其他软件类似,注意尽量不要安装在C盘即可。
- 2. 安装可能会有点慢,安装过程中继续往下走,不用刻意等安装完成。
- 3. 安装完成后会有【Type ENTER to exit:】的字样。

2.下载及运行项目。
2.1项目介绍
项目分为两部分:
- 1. 声网token的获取、更新(后端程序)
- 2. 网页(前端)
通过下方下载链接下载项目,项目下载时可以先继续往下走,后续会用到。
项目下载地址:
https://github.com/15093083169/Agora_AI/archive/refs/heads/main.zip2.2注册声网账号,前期准备
- 1. 前往https://console.shengwang.cn,进行注册、登录、个人认证。
- 2. 认证完成后,前往https://console.shengwang.cn/settings/projects,创建新建个项目

项目类型选择通用项目
项目名称取一个方便区分的即可。
场景标签选择【其他】
鉴权机制选择【安全模式:app id +token】
开启【开通RTM】
开启【开通即时通讯IM】- 1. 创建完成后,前往https://console.shengwang.cn/product/ConversationAI?tab=config,点击开通服务,在弹出窗口点确认。


2.3后端程序部署、运行。(声网token获取,非必须)
如果是为了尝鲜,可以跳过该流程,直接查看2.4,后面会讲如何获取有效期为24小时的的token。
如果是为了长期使用,建议走该流程。- 1. 前往https://console.shengwang.cn/overview,选择你的项目,复制APP ID和 主要证书的值。

- 2. 解压【步骤3.1时下载的项目】,打开项目文件夹,在token文件夹找到里面的.env文件。(.env文件默认无法打开,可以右键点击打开方式,选择记事本即可)

将<your_appid>修改为复制的APP ID的值
将<your_app_Certificate>修改为复制的主要证书的值。
注意: <>也要一起改掉,=后面只有复制的值。修改后需要保存。

- 1. 运行项目:
- a. 打开项目文件夹,进入token文件夹,在地址栏输入cmd,回车。
- b. 在弹出的终端中,输入:
npm i node DemoServer.js 注意:上面的这是两行,每行输入完成后要按回车键。 除首次运行外,后续运行,只需要执行第二行命令即可。


看到:AgoraSignServer starts at 8081,证明运行成功了。
2.4网页(前端)
- 1. 前往https://console.shengwang.cn/settings/restfulApi,点击添加密钥按钮,添加一个密钥。
- a. 添加完成后,客户密钥会有一个下载按钮,下载你的key和密钥。下载后密钥无法再重新获取,请注意妥善保管。
- b. 下载后打开如图2,复制客户ID/key和客户密钥/secret的值。


- 1. 前往https://console.shengwang.cn/overview,复制APP ID的值。

- 1. 解压【步骤3.1时下载的项目】,打开项目文件夹,进入到web文件夹,找到.env文件。(.env文件默认无法打开,可以右键点击打开方式,选择记事本即可)

将<your_appid>修改修改为APP ID的值
将<your_client_id>修改为key的值
将<your_client_secret>修改为secret的值
注意: <>也要一起删掉,=后面只有复制的值。修改后需要保存

- 1. 运行项目
- a. 进入到web文件夹,在地址栏输入cmd,回车。
- b. 在弹出的终端中,输入:
npm i npm start 注意:上面的这是两行。每行输入完成后要按回车键。 除首次运行外,后续运行,只需要执行第二行命令即可。

看到:有环境变量已正确配置!证明运行成功了。 - 2. 运行成功后可打开浏览器,输入localhost:3000,即可访问。
注意不要用微信浏览器,要用系统的浏览器。能够访问后继续往下走。

3.项目配置:
3.1声网token
- 1. 如果你没有按照2.3做,要使用临时token:
前往https://console.shengwang.cn/overview,临时token生成器,选择产品RTC,频道名写一个方便区分的。
生成后,复制你获取到的临时token,以及你的频道名。
输入到【步骤3.4.5打开的网页】的声网token选项卡的临时token输入框中。



- 1. 如果你按照2.3做了:那就选择后端获取token。 地址我已经预设过了,如果是放在服务器上的话,要把localhost改为服务器ip或域名。

3.2llm(大语言模型)
- 1. 大模型的接入,采用标准化ai的api接入方式。理论上所有平台均可,包括工作流平台、中转站、ai提供商。

- 1. 本文以火山平台的大模型为例,其他平台填入内容的方式一致,各个平台获取方法可能会有差异。
- a. 前往火山方舟https://console.volcengine.com/ark/ ,如果没有使用过的话,需要先进行注册、登录、认证。
- b. 登录认证完成后:
- i. 前往在线推理,创建推理接入点。 接入点名称方便后续区分即可。模型选择,选择你想使用的模型。(模型的速度会影响语音回复的速度,如果希望更快速,可以选择doubao1.5lite)然后点击右侧的开通模型并接入。创建完成后,复制接入点id的值。


这里创建时可能会已经实名认证过了,但是开通按钮仍然置灰,悬停提示请先进行实名认证,需要刷新页面。 
- i. 前往apikey管理,创建apikey。名称方便后续区分即可。创建完成后,先点击apikey后面的小眼睛,使你能看到apikey的值,然后点击复制。获得apikey的值



- 2. 回到我们的项目,将获取到的值输入到对应位置:

api地址:https://ark.cn-beijing.volces.com/api/v3/chat/completions api密钥:前面复制的apikey的值 模型名称:前面复制的接入点id的值 系统提示词,填入你的提示词。 问候语,ai首次打招呼的话术。其他平台接入原理也一致,只要获取到对应的api地址、api密钥、模型名称即可。
3.3VAD语音灵敏度参数配置
- 1. 这些参数是对ai灵敏度的参数配置,默认值是我调试后我认为合适的值。
- 2. 每个字段具体含义,在项目中也有气泡解释,悬停可以查看具体介绍。

人声持续阈值 (ms):持续检测到人声信号的最小时间长度,人声持续时长超过该数值时视为有声输入,避免误打断。取值120-1200
前缀填充阈值 (ms):开始新的语音片段所需的最短语音持续时间,避免非常短的声音触发语音活动检测。取值0-5000
静音持续阈值 (ms):语音结束时的最短静音持续时间,确保短暂的停顿不会过早结束语音片段。取值0-2000
灵敏度:ai识别人声的灵敏度,越低越灵敏,取值0-1
启用优雅打断:启用后,会允许用户说话时,打断ai说话3.4tts(文本转语音)
我预设好了【火山引擎、腾讯云】的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的值。



- 1. 把这几个获取到的值,填入到项目中,调整你想要的语速等。保存配置就可以开始体验喽。
3.4.2腾讯tts:

- 1. 前往https://console.cloud.tencent.com/cam/capi,登录认证。
- 2. 新建密钥,获取【APPID、SecretId、SecretKey】,下载后密钥无法再重新获取,请注意妥善保管。
- 3. 语音类型,可以前往https://console.cloud.tencent.com/tts/complexaudio进行试听,选择好合适的音色后,可以前往https://cloud.tencent.com/document/product/1073/92668找到你选择的音色所对应的音色 ID的值。


这些配置完成后,点击保存配置。
4.开始体验网页ai语音对话:
我们先点击创建智能体,点击创建智能体成功后。再点击开始对话,即可开启与ai对话内容。
- 1. 创建智能体,实际是通过声网创建了一个我们与ai对话的通道。这里使用声网的频道连接,会消耗声网资源,所以使用完成后记得点击停止智能体。
- a. 声网赠送的有部分免费额度,测试使用时无需担心付费问题。
- 2. 开始对话相当于请求了我们电脑的麦克风,开始与ai对话。

5.接入电话:
将ai语音接入电话的能力,需要对接线路运营商。需要公司资质、服务器、一定的开发能力,以下教程会基于有一定开发能力来讲:
5.1接入线路运营商:
以声网官方提供的供应商【小樱桃科技】为例。
5.1.1资质申请:
【小樱桃科技】官网:https://xswitch.cn/,联系【小樱桃科技】进行申请资质以及线路,获取账号密码。
5.1.2接口对接:
- 1. 获取【小樱桃科技】的token。调用/api/sessions接口。
- a. 传参为账号(login),密码(password),从而获取token。
- b. 获取到的token需要放在外呼接口的header里,作为接口外呼时鉴权。
- 2. 进行外呼。
5.1.2.1调用小樱桃/api/agora/callPSTN接口。
- a. hearder需要传刚刚获取到的token的值
- b. 传参为声网频道(channnel)、主叫号码(cidNumber)、进入声网顺序(dialPhoneFirst)(true,为先呼叫手机,手机接听后才进入声网),被叫号码(destNumber),声网token(token)
5.1.2.2调用声网/join接口。
- a. 小樱桃呼出时,我们需要将ai的频道提前准备好。所以在呼出的同时,需要调用声网的创建频道的接口。
- b. 声网接口调用示例:
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", } } } } '- a. 声网详细内容可参考声网开发文档:https://doc.shengwang.cn/doc/convoai/restful/get-started/quick-start
5.1.3示例代码



