之前的文章已經(jīng)介紹了VC系列出廠固件的一些基本用法,本期就主要介紹VC系列云知聲SDK 的二次開發(fā)環(huán)境搭建。
正式搭建開發(fā)環(huán)境之前,請確認(rèn):
有一個Linux 系統(tǒng),虛擬機(jī)或者真機(jī),推薦使用ubuntu
熟悉Linux 系統(tǒng)的基礎(chǔ)指令,“l(fā)s”,"cd"之類的
具備Makefile
一、SDK生成
因?yàn)楫a(chǎn)品的語音詞條是要通過平臺訓(xùn)練生成語音模型和回復(fù)語,因此每個產(chǎn)品對應(yīng)一個SDK,當(dāng)然,如果是指令一致的產(chǎn)品可以共用一個SDK。為此,我們給各位同學(xué)開放了定制SDK的平臺,主要提供:
· 喚醒詞及指令詞定制功能
· GPIO控制功能
· 回復(fù)語定制功能
其他功能就需要通過二次開發(fā)來實(shí)現(xiàn)了,比如指令碼的串口輸出和輸入。這部分的內(nèi)容會在《安信可語音開放平臺》的使用介紹會做講解。
二、編譯工具鏈下載
1. 依賴工具安裝
如果你使用的Ubuntu 16.04 / centos7以上版本作為開發(fā)環(huán)境,請使用以下指令:
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中編譯工具的實(shí)際路徑
三、SDK下載編譯測試
在云平臺上下載好SDK 之后,將其復(fù)制到Linux 當(dāng)中的某一個文件夾
1.下載解壓
使用以下命令進(jìn)行解壓:
tar -zxvf uni_hb_m_solution-xxxxx.tar.gz
解壓過程:
SDK 文檔架構(gòu):
├── build --------------------------------------> Makefile系統(tǒng)
├── build.sh -----------------------------------> 編譯腳本
├── ci.yml -------------------------------------> 自動化平臺構(gòu)建腳本,對用戶無用
├── include ------------------------------------> 語音識別引擎及其他自動化生成外部頭文件,不可修改
├── lib ----------------------------------------> 語音識別引擎及其他底層驅(qū)動庫
├── middleware ---------------------------------> RTOS系統(tǒng)
├── nds32-ae210p.ld ----------------------------> 鏈接信息腳本,不可修改
├── nds32-ae210p.sag ---------------------------> 內(nèi)存段分布配置,不可修改
├── readme.txt ---------------------------------> 發(fā)布版本信息
├── src ----------------------------------------> 架構(gòu)代碼文件夾
│ ├── app ------------------------------------> APP層代碼文件夾
│ │ ├── inc
│ │ └── src
│ │ ├── main.c -------------------------> 系統(tǒng)啟動主程序,main函數(shù)入口
│ │ ├── sessions -----------------------> sessions代碼文件夾
│ │ │ ├── uni_setting_session.c ------> setting類事件處理session
│ │ │ ├── uni_wakeup_session.c -------> wakeup類事件處理session
│ │ │ └── uni_watchdog_session.c -----> watchdog事件處理session
│ │ ├── uni_record_save.c --------------> 錄音保存功能實(shí)現(xiàn),蜂鳥M暫不支持
│ │ ├── uni_session.c ------------------> 創(chuàng)建釋放session對象
│ │ ├── uni_session_manage.c -----------> 管理session注冊
│ │ └── uni_user_meeting.c -------------> APP層與USER層交互接口
│ ├── hal ------------------------------------> HAL層實(shí)現(xiàn)代碼
│ ├── sdk ------------------------------------> SDK層實(shí)現(xiàn)代碼
│ │ ├── audio ------------------------------> Audio播放器
│ │ ├── idle_detect ------------------------> 設(shè)備空閑計時管理
│ │ ├── player -----------------------------> MP3解碼器
│ │ └── vui --------------------------------> 語音識別功能
│ └── utils ----------------------------------> UTILS層實(shí)現(xiàn)代碼
│ ├── arpt -------------------------------> ARPT自動化測試工具
│ ├── auto_string ------------------------> 變長字符串
│ ├── bitmap -----------------------------> 二值狀態(tài)變量集合
│ ├── black_board ------------------------> 系統(tǒng)狀態(tài)管理
│ ├── cJSON ------------------------------> JSON格式解析
│ ├── config -----------------------------> config.bin文件內(nèi)容解析
│ ├── crc16 ------------------------------> CRC16算法
│ ├── data_buf ---------------------------> 一個不用互斥鎖管理的Ring Buffer
│ ├── event ------------------------------> 創(chuàng)建事件對象
│ ├── event_list -------------------------> 事件隊(duì)列
│ ├── event_route ------------------------> 事件分發(fā)
│ ├── float2string -----------------------> 浮點(diǎn)轉(zhuǎn)字符串,用于無float類型打印能力的printf
│ ├── fsm --------------------------------> 狀態(tài)機(jī)
│ ├── hash -------------------------------> 一個簡易HASH算法
│ ├── interruptable_sleep ----------------> 非阻塞的sleep方式
│ ├── list -------------------------------> 通用鏈表
│ ├── log --------------------------------> 帶等級控制的LOG輸出接口
│ ├── string -----------------------------> 一套簡易的string操作接口
│ ├── timer ------------------------------> 基于RTOS系統(tǒng)的Timer
│ └── uart -------------------------------> 通用的UART接口
├── startup ------------------------------------> 芯片啟動代碼,不可修改
├── tools --------------------------------------> 自動化構(gòu)建工具
│ └── scripts --------------------------------> 自動化構(gòu)建腳本
│ ├── aik_debug.json ---------------------> Debug固件對應(yīng)的AIK配置文件
│ ├── aik_release.json -------------------> Release固件對應(yīng)的AIK配置文件
│ ├── asrfix.dat -------------------------> 聲學(xué)模型
│ ├── cmd_reply_data.json ----------------> UDP平臺用戶定制命令詞和回復(fù)語信息
│ ├── config_debug.bin -------------------> Debug固件對應(yīng)的應(yīng)用配置文件
│ ├── config_release.bin -----------------> Release固件對應(yīng)的應(yīng)用配置文件
│ ├── custom_config.json -----------------> UDP平臺用戶定制系統(tǒng)配置信息
│ ├── default_tones ----------------------> 默認(rèn)保底音頻文件文件夾
│ ├── grammar.dat ------------------------> 語法模型
│ ├── grammar_jsgf.zip -------------------> 語法模型對應(yīng)的構(gòu)建腳本
│ ├── grammar.zip ------------------------> 語法模型文件壓縮包
│ ├── input.txt --------------------------> 用戶定制回復(fù)語列表
│ ├── pcm.bin ----------------------------> MP3音頻flash固件,自動生成的中間文件
│ ├── pcm_map.txt ------------------------> MP3音頻文件名及內(nèi)容列表
│ ├── res_build_tool.py ------------------> 自動化構(gòu)建腳本
│ ├── thresh.dat -------------------------> 喚醒詞閾值推薦表
│ ├── tones ------------------------------> MP3音頻文件夾
│ └── wav_tones --------------------------> WAV音頻文件夾,自動轉(zhuǎn)換到tones
├── uni_ci.yml ---------------------------------> 構(gòu)建平臺腳本,對用戶無用
└── user ---------------------------------------> USER層實(shí)現(xiàn)代碼
├── inc
│ ├── unione.h ---------------------------> USER層使用的底層頭文件
│ ├── user_config.h ----------------------> USER可配置項(xiàng),包括串口、音量等
└── src
├── examples ---------------------------> 包含個別USER模塊的示例代碼
├── user_asr.c -------------------------> 語音識別控制接口
├── user_event.c -----------------------> USER事件分發(fā)機(jī)制,底層調(diào)用USER注冊的事件回調(diào)函數(shù)
├── user_file.c ------------------------> SD卡文件系統(tǒng)操作接口,蜂鳥M暫不支持
├── user_flash.c -----------------------> Flash操作接口
├── user_gpio.c ------------------------> GPIO操作接口
├── user_main.c ------------------------> 用戶代碼入口,參考示例實(shí)現(xiàn)user_main()接口以增加業(yè)務(wù)邏輯
├── 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 ---------------------> 通用串口協(xié)議操作接口
2. 編譯例程
編譯的例程可以在user/inc/user_config.h的USER_RUN_DEMO_SELECT配置成想要的Demo,比如配置成GPIO 操作的:
編譯指令一共有兩種:
. /build.sh: 這個指令會編譯輸出uni_app_release.bin文件,這個文件只能用JTAG調(diào)試器進(jìn)行燒錄
. /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
官方官網(wǎng):https://www.ai-thinker.com
開發(fā)DOCS:https://docs.ai-thinker.com
技術(shù)支持:support@aithinker.com
審核編輯 黃宇
-
Linux
+關(guān)注
關(guān)注
87文章
11432瀏覽量
212458 -
SDK
+關(guān)注
關(guān)注
3文章
1058瀏覽量
47438 -
安信可
+關(guān)注
關(guān)注
0文章
180瀏覽量
4326
發(fā)布評論請先 登錄
基于AM335X,如何搭建優(yōu)良的Linux開發(fā)環(huán)境(下)
如何搭建嵌入式Linux開發(fā)環(huán)境
HPM SDK Linux開發(fā)環(huán)境搭建指南
ESP8266 SDK開發(fā)環(huán)境搭建初級教程

VC 01/VC 02離線語音模塊載體PCB設(shè)計

如何搭建一套 Linux 開發(fā)環(huán)境
Ai-WB2系列模組linux開發(fā)環(huán)境搭建教程

安信可BW16模組如何搭建Arduino開發(fā)環(huán)境?

安信可Ai-M61/Ai-M62系列模組Linux開發(fā)環(huán)境搭建

安信可離線語音開發(fā)板:二次開發(fā)語音控制LED燈

評論