<!-- Canonical: https://www.tokenmap.com.cn/research/realtime-voice-assistant -->

[返回全部研究](<https://www.tokenmap.com.cn/research>)

词元映射研究工程实践

# 实时语音助手的架构与实现

效果示例：

[视频](<https://cdn.tokenmap.com.cn/paper/originals/realtime-voice-assistant/QcGAbjcHnoGg7MxB6jBcpvEvnud-03fd75d0f470.mp4>)

手把手教大家在【电脑网页上实现ai实时语音】的搭建：

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/ec6bf27c095bebe81dd81b313e0c181592e2e4423a9484898297d37c4d7abd1d.png>)

```
本项目可以在服务器上长期运行，也可以在个人电脑（windows、mac）上进行搭建、体验.本文主要以windows电脑为例
```

## 1.安装node。

- 1. 如果要在服务器上运行，则可以使用命令行拉取：

```
sudo apt install nodejs npm
```

- 1. 如果要在自己电脑上运行，下载地址：https://nodejs.org/zh-cn/download，选择你的电脑系统后，点击安装程序按钮开始下载。

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/8677dee50a83508140052e97247dfe0d5dde8cacc5dae6995bfa7579512d8094.png>)

- 1. 安装过程与安装其他软件类似，注意尽量不要安装在C盘即可。

- 2. 安装可能会有点慢，安装过程中继续往下走，不用刻意等安装完成。

- 3. 安装完成后会有【Type ENTER to exit:】的字样。

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/b2f467f41581a3dd69ba773fbca191ca605837695aa5c6ca0524dfbecd0676eb.png>)

## 2.下载及运行项目。

### 2.1项目介绍

项目分为两部分：

- 1. 声网token的获取、更新（后端程序）

- 2. 网页（前端）

通过下方下载链接下载项目，项目下载时可以先继续往下走，后续会用到。

```
项目下载地址：
https://github.com/15093083169/Agora_AI/archive/refs/heads/main.zip
```

### 2.2注册声网账号，前期准备

- 1. 前往https://console.shengwang.cn，进行注册、登录、个人认证。

- 2. 认证完成后，前往https://console.shengwang.cn/settings/projects，创建新建个项目

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/069470fb346bc2aaae961dcbaf08deffe0e3ae2299ddb3a95a2698f67840cf95.png>)

```
项目类型选择通用项目
项目名称取一个方便区分的即可。
场景标签选择【其他】
鉴权机制选择【安全模式：app id +token】
开启【开通RTM】
开启【开通即时通讯IM】
```

- 1. 创建完成后，前往https://console.shengwang.cn/product/ConversationAI?tab=config**，**点击开通服务，在弹出窗口点确认。

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/ff8bbcfad631119571e8af1bccec9bb2b9241cffa00cc6365be44983506c59f2.png>)

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/af9d9f828c6c40dbccaafe026fc88ae33f53b1f48514fd3127b7067538a7fd88.png>)

### 2.3后端程序部署、运行。（声网token获取，非必须）

```
如果是为了尝鲜，可以跳过该流程，直接查看2.4，后面会讲如何获取有效期为24小时的的token。
如果是为了长期使用，建议走该流程。
```

- 1. 前往https://console.shengwang.cn/overview，选择你的项目，复制APP ID和 主要证书的值。

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/bba315ec7f3bbbd5c89931705e93f4080b9441c70209c288a4cd500523dbb802.png>)

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

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/effda1a599744371d0654c2a88b805fc5eea48f115fe2c0ff1bac4646cb9cea7.png>)

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

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/c015ea62c5bfc0becaa796d46c76dd5a2df8b53451f6d555d3701e446bd757cd.png>)

修改前

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/1099ed89b91188313adaa030600d33f4d014faf9ec338d6947e799dd19618729.png>)

修改后示例，记得保存

- 1. 运行项目：

- a. 打开项目文件夹，进入token文件夹，在地址栏输入cmd，回车。

  - b.  在弹出的终端中，输入：

```
npm i
node DemoServer.js
注意：上面的这是两行，每行输入完成后要按回车键。
除首次运行外，后续运行，只需要执行第二行命令即可。
```

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/43c8cbf8844ddf3b85a11cd81b56851efa1a778e19b516dc519c9ab150dd2a4f.png>)

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/cd440369b6378689f2ddd0f0767560ad6f5417c771781d940e0b10ebc21f028b.png>)

看到：AgoraSignServer starts at 8081，证明运行成功了。

### 2.4网页（前端）

- 1. 前往https://console.shengwang.cn/settings/restfulApi，点击添加密钥按钮，添加一个密钥。

- a. 添加完成后，客户密钥会有一个下载按钮，下载你的key和密钥。下载后密钥无法再重新获取，请注意妥善保管。

  - b. 下载后打开如图2，复制客户ID/key和客户密钥/secret的值。

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/5d1bb6d1a7a1ebe64f7d8f4ad1a2f8abf1ec0ef877072dc986a12e69623b0a0b.png>)

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/22b6aad9533dc4b7f96a1a2f54f642ad647126c1206d739e344ec3d379b363e1.png>)

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

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/c4f19a8fb8c3e10f2d946de2e28e82c55bda14939a54da2768a8f5dea004e31d.png>)

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

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/effda1a599744371d0654c2a88b805fc5eea48f115fe2c0ff1bac4646cb9cea7.png>)

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

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/51f8ae05ee866defdbe47a49dc9203a58de557b9e91ad597990030081257f50d.png>)

修改前

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/6ed3689616a168a13722fec6f95cc7c69901ff0440bc425a9d43404e6ebeee9b.png>)

修改后示例，记得保存

- 1. 运行项目

- a. 进入到web文件夹，在地址栏输入cmd，回车。

  - b.  在弹出的终端中，输入：

```
npm i
npm start
注意：上面的这是两行。每行输入完成后要按回车键。
除首次运行外，后续运行，只需要执行第二行命令即可。
```

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/542cc3168575958d8c593f34225006b490f97a9a942ab11fcf3766ee29258a4d.png>)

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/7eaed2bfdff6f4dc65e12f3290d5a8aee15fe29529211f369ff007fcf3120e51.jpg>)

看到：有环境变量已正确配置！证明运行成功了。

- 2. 运行成功后可打开浏览器，输入localhost:3000,即可访问。

注意不要用微信浏览器，要用系统的浏览器。能够访问后继续往下走。

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/af30164171c21fed1bf8882f9f93305d73de90c6bc1662434fd3e405cd6a43c7.png>)

## 3.项目配置：

### 3.1声网token

- 1. 如果你没有按照2.3做，要使用临时token：

前往https://console.shengwang.cn/overview，临时token生成器，选择产品RTC，频道名写一个方便区分的。

生成后，复制你获取到的临时token，以及你的频道名。

输入到【步骤3.4.5打开的网页】的声网token选项卡的临时token输入框中。

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/90888147b8b952c111abf513e4e2671f15d4610b755d0eeb514b713d7489570e.png>)

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/d311cb10811428d9eab69e3f448554f6bc936a87fc6faa89bed30842ea372de4.png>)

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/b40dfb4ee0246eb00d3616a765d184a8ec3dd5a1dd777656504646930e07a7b5.png>)

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

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/4e9569fd0e55ca9fd7bc7470e48d64a62c287516e23317cb7efaacf4fc5172e0.png>)

### 3.2llm（大语言模型）

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

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/3f0e7c358596939a6e9389e4fdb3721f7ac2d69a604405bd1b62e10e5cc2e3e3.png>)

- 1. 本文以火山平台的大模型为例，其他平台填入内容的方式一致，各个平台获取方法可能会有差异。

- a. 前往火山方舟https://console.volcengine.com/ark/ ，如果没有使用过的话，需要先进行注册、登录、认证。

  - b. 登录认证完成后：

- i. 前往在线推理，创建推理接入点。 接入点名称方便后续区分即可。模型选择，选择你想使用的模型。（模型的速度会影响语音回复的速度，如果希望更快速，可以选择doubao1.5lite）然后点击右侧的开通模型并接入。创建完成后，复制接入点id的值。

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/247a8a6ceb077a7fb001b6f0d2323f3902d8c1de94953af1e41fe391a79c9e93.jpg>)

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/b8f3f500e48fb63aac83c1ce8855213ce4857a50d25aa2a7dd9dc38f385b58f0.png>)

这里创建时可能会已经实名认证过了，但是开通按钮仍然置灰，悬停提示请先进行实名认证，需要刷新页面。

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/155034a8ffc1928569499b263b7fc47af2c88f7f0b95f363b85046868281279a.png>)

- i. 前往apikey管理，创建apikey。名称方便后续区分即可。创建完成后，先点击apikey后面的小眼睛，使你能看到apikey的值，然后点击复制。获得apikey的值

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/3a6cb49a009eefba4c52f38f9545718f88a93824245e848080715b0fbec52675.png>)

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/3e53c7f87e276de86bc4b8c136601c39e86c27f65ba6c5e1449f52d1882dd792.png>)

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/1afffd003ac9bffe356844bb2f9302023c4c1980028c751681b6dc969e7cf4d9.png>)

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

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/3f0e7c358596939a6e9389e4fdb3721f7ac2d69a604405bd1b62e10e5cc2e3e3.png>)

```
api地址：https://ark.cn-beijing.volces.com/api/v3/chat/completions
api密钥：前面复制的apikey的值
模型名称：前面复制的接入点id的值
系统提示词，填入你的提示词。
问候语，ai首次打招呼的话术。
```

其他平台接入原理也一致，只要获取到对应的api地址、api密钥、模型名称即可。

### 3.3VAD语音灵敏度参数配置

- 1. 这些参数是对ai灵敏度的参数配置，默认值是我调试后我认为合适的值。

- 2. 每个字段具体含义，在项目中也有气泡解释，悬停可以查看具体介绍。

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/0fa8df5555f33f091790533fa117aa3898295c5ed4501d4c96e547807878340a.png>)

```
人声持续阈值 (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火山引擎：

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/6376fadfc4f26d08fe5f56dc0af9db0dc7b4a304a37730e69780c655ecdb4129.png>)

- 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的值。

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/454a9109740f802d540d9e167e68e145c48d7b047835de255bcadd95ba8b33e5.png>)

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/418ccb8a96356b7bcc511d1bb2d97d784677d4678e6ae656fdd5ed68735e4d38.png>)

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/9af00369b554ca72e5a901b123a1cda84e4d1b2c51c97076ddf916deff6a1e24.png>)

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

#### 3.4.2腾讯tts：

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/31bd9306407892c3ac21446ade4a4b540d8d022cb410d4686033b7d9bb3e49da.png>)

- 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的值。

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/0811c763897ac001782c3cb97733827fe54e4412d85244588f935c266dc1eb3a.png>)

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/844cb17269d8980f944dbf9b6f811d23f1e49357b1052532be74f6506103bfae.png>)

#### 这些配置完成后，点击保存配置。

## 4.开始体验网页ai语音对话：

我们先点击创建智能体，点击创建智能体成功后。再点击开始对话，即可开启与ai对话内容。

- 1. 创建智能体，实际是通过声网创建了一个我们与ai对话的通道。这里使用声网的频道连接，会消耗声网资源，所以使用完成后记得点击停止智能体。

- a. 声网赠送的有部分免费额度，测试使用时无需担心付费问题。

- 2. 开始对话相当于请求了我们电脑的麦克风，开始与ai对话。

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/eb1fc43cc25112cb7827a8632a4b20a112ea5b5313a5335f82e3b71965703d7b.png>)

## 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示例代码

![图片](<https://cdn.tokenmap.com.cn/paper/website/media/7771794c8f10b2285e60b3f9b50f0f8cdb3f0d77fbcbf8d976d90e2ccc146917.png>)

我已经做好了外呼demo，将小樱桃账号密码，以及声网接口中所需的内容填入代码中，即可开始使用。

## 继续探索

[全部研究](<https://www.tokenmap.com.cn/research>)

[!\[图片\](<https://cdn.tokenmap.com.cn/paper/website/media/099524a655650974a30da3bf36f06912bb90f60b4979560d140e7bb700aabe91.png>)

模型实测

### 编程智能体的代码修复轨迹与 Harness 对照

DeepSeek V4 Pro、GLM-5.3 接连更新，豆包推出了 Seed-Evolving，DeepSeek 还发布了自己的 Harness。模型能力在涨，给模型提供工具和执行环境的 Harness 也在进化。](<https://www.tokenmap.com.cn/research/coding-agent-execution-trajectories>)

[!\[图片\](<https://cdn.tokenmap.com.cn/paper/website/media/ade857cef09291a717028457f79933984766492797dac06e4a5ca5f9dc01792f.png>)

模型实测

### DeepSeek、GLM 与 Kimi 的真实任务对比

说实话，现在的大模型已经多到让人有点选择困难了。](<https://www.tokenmap.com.cn/research/deepseek-glm-kimi-task-comparison>)

[!\[图片\](<https://cdn.tokenmap.com.cn/paper/website/media/f5f58d8cf68c45464ea27801580251f7dfce851241f38eceda00d088b875b263.png>)

模型实测

### Doubao Seed 2.1 Pro 工程任务实测

6 月 23 日，火山引擎在北京举办 2026 夏季 FORCE 原动力大会，正式发布豆包大模型 2.1。](<https://www.tokenmap.com.cn/research/doubao-seed-21-pro-engineering-tests>)
