单USB方案*
GX8008/GX8008C 支持 USB 输出,对外可以包装为一个标准的 USB 声卡,支持 capture 和 play 功能。
协议上支持 UAC1.0 和 UAC2.0。linux, mac系统免驱使用。
UAC1.0 linux, mac,win10, win7, winXP等系统免驱使用,即插即用。
UAC2.0 win10 2017年3月以前的,UAC2.0需要安装驱动,以后的免驱。win7, winXP等需要安装驱动。linux, mac免驱使用。
对于主控有 USB 接口,可以做主设备,支持 USB 声卡的系统,比如 linux, Android等,可以使用上面的接法。
如果主控需要播放声音的话,可以把两路回采拉回,做回声消除。
做回声消除拉回采的方式有多种,这个主要和硬件选型有关。这里重点讨论应用软件上的开发,就不多说回采的事情了。
GX8008/Gx8008C 对外有两类数据输出:
- 通过 USB 输出降噪后的音频,格式为 16K 16bit 单声道 PCM
- 通过 USB 虚拟的串口 ttyACM 输出唤醒的事件
另外,如果需要 GX8008/GX8008C 播放音频的话,比如一些唤醒后的简单应答,可以通过 USB 传回音频。相当于一个支持播放的USB声卡。
如果不考虑回采的话,该方案只需要通过一根USB线和其它设备连接,就提供了AI语音唤醒和提高降噪音频的功能,非常简单方便。
1. USB 音频传输*
在 linux 平台上,打开 Alsa 设备,通过标准的API接口,即可获取 GX8008/GX8008C 的输出音频。
在linux kerenl中开启USB声卡的配置参考:
注意要开启 USB sound devices
录制音频简单示例如下(完整的代码见 章节3):
lvp_tws/app/sample/lvp_app_sample.c | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
|
2. ttyACM 串口传输*
可以把 GX8008/8008C 的USB暴露为一个标准的串口设备,在linux下,一般名称为 ttyACM。
linux 平台都支持。需要在内核里配置,开启该功能。
需要具体了解如何配置的话,推荐咨询下对应方案的原厂。
另外,给出个参考资料:https://blog.csdn.net/xhoufei2010/article/details/43966889
使用我们开发板,通过 USB 接 linux PC,然后查看 /dev/ 目录下,会出现个 ttyACM 设备。使用串口工具,打开该设备,选择波特率115200。然后唤醒,就可以看到有对应的打印输出。
下面给出读取ttyACM的参考代码示例(完整的代码见 章节3):
lvp_tws/app/sample/lvp_app_sample.c | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
3. 参考代码*
miss_active_record.zip (https://yunpan.360.cn/surl_yv2Cstd6pYV)
该代码在 PC ubuntu 16.04上验证过
4. ACM串口Windows驱动*
针对win10前的系统,如果不安装驱动,可能无法识别ACM串口。因此想在windows上使用的话,在无法识别的情况下需要安装下面的驱动
GX80XX-CDC-ACM串口Windows驱动.zip (https://yunpan.360.cn/surl_yvIwq8bSgIy)