杰理蓝牙耳机开发--AI蓝牙耳机功能介绍及AI录音功能代码浅析
杰理AI蓝牙耳机开发
- AI蓝牙耳机实现原理
-
- AI录音功能
- 通话录音功能
- AI通话翻译功能
- AI录音功能代码浅析
随着人工智能技术的飞速发展,市面上近期涌现出众多 AI 蓝牙耳机。蓝牙耳机与人工智能技术的深度融合,正推动传统蓝牙耳机从单纯的音频传输设备向 “智能助手” 方向演进。上一篇文章已探讨了当前AI蓝牙耳机的功能及发展方向,本文则聚焦软件层面,以杰理 AC7106为例,详细介绍如何借助杰理蓝牙耳机SDK,在标准耳机SDK V3.0.0_patch04上实现AI蓝牙耳机的录音功能。
AI蓝牙耳机实现原理
市面上常见的AI蓝牙耳机具备AI录音、AI翻译以及AI对话等功能。通常情况下,AI蓝牙耳机只需开启耳机上的麦克风进行录音,随后将录音的语音数据发送至手机APP端,由手机APP端完成大模型的接入,进而实现AI助手或AI翻译等功能。以下将对AI蓝牙耳机常见功能的实现方法进行简要阐述。
AI录音功能
AI录音功能就是开启耳机上的麦克风进行录音,麦克风的语音数据因蓝牙带宽有限,一般不会直接发送语音数据原始数据,而是需要经过压缩编码之后通过蓝牙BLE或SPP等方法传输给手机APP端,手机APP对耳机发来的语音数据进行解码、存储、识别,甚至可以接入AI大模型,用来进行AI对话、AI翻译等功能。AI录音数据流程如下图。
通话录音功能
通话录音是指蓝牙耳机在连接手机,进行通话的过程中,耳机可以将通话的声音录下来,与AI录音不同的地方是,耳机通话录音不仅有通话上行麦克风的数据,还有通话下行喇叭的数据,之后也是通过蓝牙BLE或SPP并发送给APP端,APP对语音数据进行解码、存储等操作。通话录音功能数据流程如下图。
AI通话翻译功能
AI通话翻译功能应用于来自两个不同语言的人之间的通话对话,通话翻译可以分为上行翻译和下行翻译两种形式,耳机将通话上行或下行的数据发给手机APP,APP将翻译好的音频数据发回给耳机,耳机将原来的上行或下行的数据使用APP翻译之后的音频来替代。这样,两个语言不相同的人只需要佩戴耳机翻译,在双方进行通话的时候都能听到本国语言的声音,从而进行无障碍沟通。通话翻译功能数据流程如下。
AI录音功能代码浅析
上面介绍了AI蓝牙耳机常见的功能及数据流程,以下以杰理AC701N-V3.0.0的SDK为例,浅析演示如何在标准的SDK上加入其中的AI录音功能,通过打开耳机上的麦克风,获取到麦克风经过ADC采集后的音频PCM数据,将数据打包编码成OPUS编码,最后使用通过BLE或SPP发送到手机APP端。
- 新建AI语音音频流程
从官方音频流程新建一个“翻译耳机_单声道”和”翻译耳机_立体声”的音频流程,需要同时编码麦克风和喇叭的数据的场景会使用到立体声的音频流,本例只编码采集到的麦克风数据,所以只需要加入“翻译耳机_单声道”的流程,如下图。”翻译耳机_单声道”音频流程由两部分组成,上半部分用来做解码播放流程,用来接收到手机发来的OPUS数据,解码还原成PCM数据提供给DAC进行播报;下半部分是用来将麦克风数据编码发送的流程。以下例子没有使用到解码播放流程,实际项目中如若不需要可以去掉上半部分。
- 打开opus编码
可以直接在可视化工具中的“音频配置”选项打开OPUS编码。
- 加入translation_ear_recoder
SDK代码中加入translation_ear_recoder.c及translation_ear_recoder.h文件,其主要作用是提供了录音音频流以及编码控制的接口,如下图。
这里可以看到opus编码器设定的编码参数,16K采样率,20ms帧间隔时间以及16倍压缩率的设定,所以编码后对应每帧帧长40字节。
- 音频节点的修改
本次演示例子只使用到了”翻译耳机_单声道”音频流的编码发送流程,这里我们详细分析该音频流节点,总体来说可分为以下几个部分:
根据以上信息可知,这里主要修改EffectDev3、Source_Dev1和Sink_Dev1三个自定义节点的代码。
EffectDev3节点代码修改:主要将算法后的数据采集起来,这里直接将收集到的数据送入Source_Dev1节点进行处理。
Source_Dev1节点代码修改:主要是接收来自EffectDev3节点的数据,缓存足够的数据之后传递给编码器进行编码。
Sink_Dev1节点代码修改:主要获取到opus编码完成后输出的数据,将数据上传上传到APP端。
- 启动音频流
在jlstream.h中定义音频流的PIPELINE_UUID提供给translation_ear_recoder使用,PIPELINE_UUID需要与可视化工具配置的UUID保持一致。
在按键事件中调用translation_ear_recoder提供的接口,开启“翻译耳机_单声道”音频流,启动录音功能。
- 数据验证
在音频流开启,录音功能开启之后,APP端便能一直收到耳机发来的经过opus编码之后的音频数据了。
可以将BLE或SPP接收到的数据保存为一个.opus文件;然后使用杰理测试OPUS解码APP进行解码测试。将编码文件(保证后缀是.opus),放到手机文件夹中。
然后进入手机APP解码界面进行解码,解码完成之后在输出界面进行播放操作,测试接收到的数据的正确性。