专栏名称: 安信可科技
全球领先的联网模组、智能家居等物联网硬件方案提供商。
目录
相关文章推荐
今日闵行  ·  再加码、无门槛!6折打车福利别错过→ ·  昨天  
班主任家园  ·  中国监狱2025招聘公告 ·  昨天  
896汽车调频  ·  武大靖,有新身份 ·  2 天前  
896汽车调频  ·  武大靖,有新身份 ·  2 天前  
51好读  ›  专栏  ›  安信可科技

安信可VC系列离线语音SDK开发环境搭建——基于Linux系统

安信可科技  · 公众号  ·  · 2025-03-10 18:03

正文

图片


之前的文章已经介绍了VC系列出厂固件的一些基本用法, 本期就主要介绍VC系列云知声SDK 的二次开发环境搭建。


正式搭建开发环境之前,请确认:

有一个Linux 系统,虚拟机或者真机,推荐使用ubuntu

熟悉Linux 系统的基础指令,“ls”,"cd"之类的

具备Makefile


一、SDK生成

因为产品的语音词条是要通过平台训练生成语音模型和回复语,因此每个产品对应一个SDK,当然,如果是指令一致的产品可以共用一个SDK。为此,我们给各位同学开放了定制SDK的平台,主要提供:

· 唤醒词及指令词定制功能

· GPIO控制功能

· 回复语定制功能


其他功能就需要通过二次开发来实现了,比如指令码的串口输出和输入。这部分的内容会在《安信可语音开放平台》的使用介绍会做讲解。


二、编译工具链下载


1. 依赖工具安装

如果你使用的Ubuntu 16.04 / centos7以上版本作为开发环境,请使用以下指令:

sudo apt-get install python
sudo apt-get install lame
sudo apt-get install lib32stdc++6 lib32z1 lib32ncurses5 lib32bz2-1.0


对于ubuntu20.04的话,安装32位兼容库使用:

sudo apt-get install lib32stdc++6 lib32z1 lib32ncurses5 libbz2-1.0:i386


安装完成依赖之后,拉取编译工具链:

sudo git clone https://github.com/Ai-Thinker-Open/Andestech.git /opt/Andestech


如果github 太慢了。也可以使用:

sudo git clone https://gitee.com/Ai-Thinker-Open/Andestech.git /opt/Andestech


注意:/opt/Andestech 一定要带,不然就需要修改SDK中编译工具的实际路径


三、SDK下载编译测试

在云平台上下载好SDK 之后,将其复制到Linux 当中的某一个文件夹


1.下载解压

使用以下命令进行解压:

tar -zxvf uni_hb_m_solution-xxxxx.tar.gz


解压过程:


SDK 文档架构:

├── build --------------------------------------> Makefile系统


├── build.sh -----------------------------------> 编译脚本


├── ci.yml -------------------------------------> 自动化平台构建脚本,对用户无用


├── include ------------------------------------> 语音识别引擎及其他自动化生成外部头文件,不可修改


├── lib ----------------------------------------> 语音识别引擎及其他底层驱动库


├── middleware ---------------------------------> RTOS系统


├── nds32-ae210p.ld ----------------------------> 链接信息脚本,不可修改


├── nds32-ae210p.sag ---------------------------> 内存段分布配置,不可修改


├── readme.txt ---------------------------------> 发布版本信息


├── src ----------------------------------------> 架构代码文件夹


│ ├── app ------------------------------------> APP层代码文件夹


│ │ ├── inc


│ │ └── src


│ │ ├── main.c -------------------------> 系统启动主程序,main函数入口


│ │ ├── sessions -----------------------> sessions代码文件夹


│ │ │ ├── uni_setting_session.c ------> setting类事件处理session


│ │ │ ├── uni_wakeup_session.c -------> wakeup类事件处理session


│ │ │ └── uni_watchdog_session.c -----> watchdog事件处理session


│ │ ├── uni_record_save.c --------------> 录音保存功能实现,蜂鸟M暂不支持


│ │ ├── uni_session.c ------------------> 创建释放session对象


│ │ ├── uni_session_manage.c -----------> 管理session注册


│ │ └── uni_user_meeting.c -------------> APP层与USER层交互接口


│ ├── hal ------------------------------------> HAL层实现代码


│ ├── sdk ------------------------------------> SDK层实现代码


│ │ ├── audio ------------------------------> Audio播放器


│ │ ├── idle_detect ------------------------> 设备空闲计时管理


│ │ ├── player -----------------------------> MP3解码器


│ │ └── vui --------------------------------> 语音识别功能


│ └── utils ----------------------------------> UTILS层实现代码


│ ├── arpt -------------------------------> ARPT自动化测试工具


│ ├── auto_string ------------------------> 变长字符串


│ ├── bitmap -----------------------------> 二值状态变量集合


│ ├── black_board ------------------------> 系统状态管理


│ ├── cJSON ------------------------------> JSON格式解析


│ ├── config -----------------------------> config.bin文件内容解析


│ ├── crc16 ------------------------------> CRC16算法


│ ├── data_buf ---------------------------> 一个不用互斥锁管理的Ring Buffer


│ ├── event ------------------------------> 创建事件对象


│ ├── event_list -------------------------> 事件队列


│ ├── event_route ------------------------> 事件分发


│ ├── float2string -----------------------> 浮点转字符串,用于无float类型打印能力的printf


│ ├── fsm --------------------------------> 状态机


│ ├── hash -------------------------------> 一个简易HASH算法


│ ├── interruptable_sleep ----------------> 非阻塞的sleep方式


│ ├── list -------------------------------> 通用链表


│ ├── log --------------------------------> 带等级控制的LOG输出接口


│ ├── string -----------------------------> 一套简易的string操作接口


│ ├── timer ------------------------------> 基于RTOS系统的Timer


│ └── uart -------------------------------> 通用的UART接口


├── startup ------------------------------------> 芯片启动代码,不可修改


├── tools --------------------------------------> 自动化构建工具


│ └── scripts --------------------------------> 自动化构建脚本


│ ├── aik_debug.json ---------------------> Debug固件对应的AIK配置文件


│ ├── aik_release.json -------------------> Release固件对应的AIK配置文件


│ ├── asrfix.dat -------------------------> 声学模型


│ ├── cmd_reply_data.json ----------------> UDP平台用户定制命令词和回复语信息


│ ├── config_debug.bin -------------------> Debug固件对应的应用配置文件


│ ├── config_release.bin -----------------> Release固件对应的应用配置文件


│ ├── custom_config.json -----------------> UDP平台用户定制系统配置信息


│ ├── default_tones ----------------------> 默认保底音频文件文件夹


│ ├── grammar.dat ------------------------> 语法模型


│ ├── grammar_jsgf.zip -------------------> 语法模型对应的构建脚本


│ ├── grammar.zip ------------------------> 语法模型文件压缩包


│ ├── input.txt --------------------------> 用户定制回复语列表


│ ├── pcm.bin ----------------------------> MP3音频flash固件,自动生成的中间文件


│ ├── pcm_map.txt ------------------------> MP3音频文件名及内容列表


│ ├── res_build_tool.py ------------------> 自动化构建脚本


│ ├── thresh.dat -------------------------> 唤醒词阈值推荐表


│ ├── tones ------------------------------> MP3音频文件夹


│ └── wav_tones --------------------------> WAV音频文件夹,自动转换到tones


├── uni_ci.yml ---------------------------------> 构建平台脚本,对用户无用


└── user ---------------------------------------> USER层实现代码


├── inc


│ ├── unione.h ---------------------------> USER层使用的底层头文件


│ ├── user_config.h ----------------------> USER可配置项,包括串口、音量等


└── src


├── examples ---------------------------> 包含个别USER模块的示例代码


├── user_asr.c -------------------------> 语音识别控制接口


├── user_event.c -----------------------> USER事件分发机制,底层调用USER注册的事件回调函数


├── user_file.c ------------------------> SD卡文件系统操作接口,蜂鸟M暂不支持


├── user_flash.c -----------------------> Flash操作接口


├── user_gpio.c ------------------------> GPIO操作接口


├── user_main.c ------------------------> 用户代码入口,参考示例实现user_main()接口以增加业务逻辑


├── user_player.c ----------------------> 音频播放控制接口


├── user_power.c -----------------------> 功耗操作接口,蜂鸟M暂不支持


├── user_pwm.c -------------------------> PWM操作接口


├── user_record.c ----------------------> 录音控制接口,蜂鸟M暂不支持


├── user_timer.c -----------------------> Timer操作接口


├── user_uart.c ------------------------> UART操作接口


└── user_uni_ucp.c ---------------------> 通用串口协议操作接口


2. 编译例程

编译的例程可以在user/inc/user_config.h的USER_RUN_DEMO_SELECT配置成想要的Demo,比如配置成GPIO 操作的:


编译指令一共有两种:

. /build.sh: 这个指令会编译输出uni_app_release.bin文件,这个文件只能用JTAG调试器进行烧录


. /build.sh update: 这个指令会编译输出uni_app_release_update.bin和uni_app_release.bin

uni_app_release_update.bin 是串口升级专用文件


uni_app_release.bin 是JTAG方式升级使用的文件。


备注:python 的版本是python2


四、更多资料
安信可语音开放平台: http://voice.ai-thinker.com
官方官网: https://www.ai-thinker.com
开发DOCS: https://docs.ai-thinker.com
技术支持: [email protected]


图片

微信改版,容易错过最新资讯和福利?

快将“安信可科技”设为星标

可以第一时间接收小安的推送!







请到「今天看啥」查看全文