AI 语音交互逻辑
名词解释
名词 | 解释 |
---|---|
VAD | 语音活动检测 (Voice Activity Detection),用于判断音频信号中是否存在语音的技术。 |
ASR | 自动语音识别(Automatic Speech Recognition),将语音内容转化成计算机可识别的文本或命令的技术。 |
功能介绍
ai_audio 主要用于处理与AI,音频相关的操作,包括音频的输入、输出、配置管理以及创建 AI 会话等功能。以下是对该组件功能的详细描述:
- 采集音频数据
- 播放音频数据
- 创建云端 AI 会话,将采集到的有效数据发送到云端进行 ASR 识别,云端会根据 ASR 识别后的内容进行回复
- 对采集的音频数据进行预处理,识别出有效内容后再发送到云端处理,减少云端处理的压力。
- VAD 检测
- ASR 唤醒词检测
- 根据对话模式以及触发方式的不同提供了四种工作模式:
- 对话模式
- 单轮对话 每次触发都只进行一回合对话即一问一答。
- 自由对话 每次触发后可进行 N 回合对话即连续对话。
- 对话触发方式
- 手动控制 如按键按住等。
- VAD 检测 检测到声音后就开启对话
- 本地 ASR 唤醒检测 即检测到唤醒词后开启对话
- 工作模式
- 手动触发单轮对话
- VAD 触发自由对话
- ASR 唤醒单轮对话
- ASR 唤醒自由对话
- 对话模式
功能模块
该组件主要由五个功能模块组成:
- 音频输入模块 ( input )
- 采集音频数据,
- 音频数据预处理
- 模块状态改变通知
- AI 智能体模块 ( ai agent )
- 创建云端会话
- 数据上报, 默认格式: PCM (OPUS 可选)
- 接收云端数据, 默认格式:MP3, 位宽16bit,采样率16KHz,单声道
- 处理云端 ASR 模块 ( cloud asr )
- 开始上报
- 结束上报
- 等待云端 ASR
- 播放音频模块( player )
- 播放云端返回的音频数据
- 播放内置提示音
- 管理模块( main )
- 组件入口
- 管理以上四个模块
工作流程
手动触发单轮对话
在外部条件触发下用户可发起对话, 每次触发都只进行一回合对话即一问一答。如按键被按下时,用户可输入语音按键松开后则表示语音输入结束,然后等待 AI 回答。
usr: "你是谁" (某种外部条件下 如按键被按着)
ai : "我是xxx"
usr: "今天天气"(某种外部条件下 如按键被按着)
ai : "xxxx"
VAD 触发自由对话
设备会将采集到音频数据发送到 vad 模块进行人声检测。如果检测到人声,则认为会话开启。即用户随时说话,模 块都会将用户的语音数据发送至云端发起会话。
usr: "你是谁"
ai : "我是xxx"
usr: "今天天气"
ai : "xxxx"
ASR 唤醒单轮对话
用户想要对话前都需要说出唤醒词将设备唤醒。设备每次被唤醒后,用户只能发起一次对话。一次对话结束后,用户想要再进行对话先说唤醒词,类似音箱模式。
usr: "你好,xxxx"( 唤醒词 )
ai : "我在"( 提示音 )
usr: "你是谁"
ai : "我是xxx"
usr: "你好,xxxx"( 唤醒词 )
ai : "我在"( 提示音 )
usr: "今天天气"
ai : "xxxx"
ASR 唤醒自由对话
用户说出唤醒词唤醒设备后可进行连续的对话。设备被唤醒后,如果有30S没有检测到任何声音,设备会重新进入检测唤醒词状态。
usr: "你好,xxxx"( 唤醒词 )
ai : "我在"( 提示音 )
usr: "你是谁"
ai : "我是xxx"
usr: "今天天气"
ai : "xxxx"