1 概述?
隨著人們生活水平的提高,對產(chǎn)品的功能要求也越來越高,追求舒適的體驗感,特別是對操控性的要求越來越高。目前風扇產(chǎn)品的控制方式有以下幾類:
- 按鍵控制:傳統(tǒng)控制方式,每次要走到風扇邊才行,操作麻煩;
- 遙控控制:采用紅外遙控或者藍牙遙控,方便遠距離控制,但遙控器容易丟,放置也麻煩。且遙控器上按鍵較少,當風扇功能多的時候無法用單次按鍵控制全部的功能,組合按鍵不符合人們使用習慣;
- 手機APP控制:每次控制需要打開手機APP,需要聯(lián)網(wǎng),同時風扇需配網(wǎng),操作繁瑣;
- 智能音箱控制:通過如天貓精靈等智能音箱直接控制,相對方便,但音箱需聯(lián)網(wǎng)狀態(tài)下才可使用,識別時有隱私安全問題,網(wǎng)絡延時大時控制的實時性不好。
為了解決以上痛點,可以采用純離線語音識別進行控制,在成本增加不大的情況下,為產(chǎn)品帶來更多的亮點和競爭力。啟英泰倫針對該產(chǎn)品領域,已開發(fā)了整套離線語音風扇方案,下面對該方案進行介紹。
2 方案優(yōu)勢?
啟英泰倫離線語音風扇相對傳統(tǒng)風扇方案,可讓用戶通過語音控制風扇設備,替換傳統(tǒng)遙控器或按鈕控制的方式,該方案有以下優(yōu)勢:
- 可以直接使用語音控制風扇,且無需聯(lián)網(wǎng),自然方便,識別率可達95%以上;
- 語音控制響應快,一般在0.2~0.8s內(nèi)完成;
- 可遠場識別,安靜情況下可達10米;
- 方案功耗低,工作功耗僅為0.2W左右;
- 可靠性好,芯片方案已通過雙85測試,滿足格力、美的等家電巨頭要求;
- 整套產(chǎn)品技術已成熟,具有完整的軟件、硬件、結構設計方案,節(jié)省開發(fā)周期,降低開發(fā)難度;
- 配合我司語音AI平臺開發(fā),可靈活定制喚醒詞和命令詞,不需要再專門收集語料訓練。
3 應用描述?
風扇產(chǎn)品按照使用電源類型可分為交流電風扇、直流電風扇和交直流電風扇三類,其類型可以分為臺扇、吊扇、落地扇、無葉風扇等。啟英泰倫離線語音風扇方案適用于各類風扇,其中尤其在落地扇上面的應用較多。
語音風扇產(chǎn)品的使用場景為普通家居環(huán)境,在安靜和中低噪音下可以達到良好的識別率。其中安靜環(huán)境的環(huán)境底噪在35dB ~ 45dB之間,屬于中低噪音環(huán)境;開啟風扇后環(huán)境噪音可達45dB ~ 65dB之間。該噪音環(huán)境下可以直接選用我司單麥克風語音模塊,如CI-B0XGS01S或CI-B0XGS01S-H模塊,以達到比較好的性價比。
特別注意,不同的風扇運行過程中,因為扇葉大小和葉片數(shù)量,風量大小差異,運行產(chǎn)生的風噪大小也有不小的差異,為了達到最好的語音識別效果,在設計風扇整機結構時,因注意控制噪音小于65dB。
4 產(chǎn)品設計流程?
一個基于我司芯片的標準語音產(chǎn)品設計流程如下圖所示:
該流程主要針對我司新用戶開發(fā)產(chǎn)品使用,包含了前期購買樣品Demo進行驗證,硬件選型,語音對話邏輯、軟硬件方案和結構設計,設計完成后的測試,以及生產(chǎn)測試準備和后續(xù)批量采購等步驟。如果是已經(jīng)熟悉我司方案的老用戶,可以直接從中間步驟開始,不用再重復進行Demo測試等工作。
下面針對新用戶的開發(fā),對上述流程中的各個步驟逐一描述。
4.1 DEMO測試?
針對新用戶,可以先從我司授權的經(jīng)銷商或直接從我司官網(wǎng) ?樣品購買 處購買對應的模塊或開發(fā)板套件,進行識別效果測試,相關的軟硬件技術文檔可以從本文檔中心處獲取。用戶測試滿意后,可以進行硬件選型。
4.2 選型指南?
用戶硬件選型可以直接參考 ?硬件選型 ,如果用戶想快速產(chǎn)品化,推薦直接使用我司已設計好的標準模塊;如果現(xiàn)有標準模塊無法滿足產(chǎn)品的結構需求,也可以選用合適的芯片進行硬件板的設計。
4.3 方案設計?
選擇好合適的芯片或模塊后,可根據(jù)產(chǎn)品的功能進行下述設計:
- 語音UI(喚醒詞和命令詞)設計:設計方法可參考 ?語音UI設計參考;
- 硬件設計:設計方法可參考 ?硬件設計參考;
- 結構設計:設計方法可參考 ?產(chǎn)品結構設計;
- 軟件開發(fā):設計方法可參考 ?軟件開發(fā)。
如用戶為首次進行語音方案開發(fā),建議到 ?啟英泰倫語音AI平臺 上獲取基于相關芯片的語音產(chǎn)品方案設計Checklist文檔,進行逐一檢查以確保設計效果。如有技術支持需求請聯(lián)系我司技術支持人員。
4.4 測試驗收?
產(chǎn)品方案設計完成形成樣品后,建議對該樣品進行相關的識別測試,相關測試方法和標準可參考 ?識別效果測試。同時,還建議根據(jù)產(chǎn)品質量的要求進行各類硬件測試,如雙85測試、靜電測試等。為了保證最終的識別效果,還建議進行硬件底噪的測試及產(chǎn)品裝機后的整機功能測試。
4.5 生產(chǎn)測試?
樣機測試完成后,會轉入后續(xù)產(chǎn)線批量生產(chǎn)階段。我司為產(chǎn)品的批量生產(chǎn)做了完善的解決方案,用戶可以參考 ?生產(chǎn)測試 獲取更多信息。用戶如需要生產(chǎn)測試的相關技術支持,請聯(lián)系我司技術人員。
4.6 下單采購?
用戶如果要采購我司產(chǎn)品樣品,請點擊 ?樣品購買 ,也可以點擊 ?樣品和批量采購 獲取更多信息。
5 風扇設計方案介紹?
5.1 主控方案?
5.1.1 方案特點?
我司的CI110X芯片內(nèi)置多個IO,可直接取代傳統(tǒng)電控風扇中的單片機控制方案,實現(xiàn)單芯片完成語音控制和主控控制,整體成本較低,但需要做語音和主控的開發(fā),前期開發(fā)周期長。
為了方便用戶使用,我司已提前做了相應的開發(fā),可以提供完整的語音風扇主控方案。
5.1.2 方案框圖?
整個方案如上圖所示,CI110X芯片作為主控,可以通過麥克風采集外部語音進行識別,通過功放驅動喇叭播音。如為省成本,還可以將功放和喇叭換為蜂鳴器。CI110X芯片還可以接受外部按鍵及紅外信號,兼容傳統(tǒng)控制方式。
CI110X芯片可支持數(shù)碼管顯示,以及控制外部的驅動電路,實現(xiàn)電機的控制,可以很好的用一個單芯片實現(xiàn)風扇的全部控制功能。
5.1.3 硬件設計參考?
?風扇電控板的一個硬件參考線路圖及IO使用情況見下圖,用戶可以使用CI110X芯片按照相同的IO使用方式設計硬件電路,可以方便的搭建整套風扇方案。
5.1.4 主控方案SDK包說明?
我司為用戶基于上述硬件設計,提供了完整的SDK包,用戶可以到 ?啟英泰倫語音AI平臺 上獲取相關SDK開發(fā)包。
本SDK包有以下功能點:
- 控制方式:支持藍牙、紅外、按鍵、語音;
- 風扇模式:支持正常風、自然風、睡眠風、智能風;
- 搖頭方式:支持左右搖頭、上下?lián)u頭、3D搖頭;
- 定時功能:支持定時關機功能,可按整數(shù)定時1 ~ 15小時。
本SDK包中使用到了硬件timer,使用方式如下:
- 硬件TIMER0:轉速電機控制(不歸零碼NRZ編碼,使用一個IO腳);
- 硬件TIMER1:紅外接收控制;
- 硬件TIMER2:藍牙接收控制(注意,藍牙接收的數(shù)據(jù)和紅外接收模塊基本相同);
- 硬件TIMER3:蜂鳴器控制和搖頭電機控制。
為了方便代碼的移植,每個外設驅動和風扇應用代碼都是單獨的文件夾,目錄說明如下:
目錄地址 | 目錄說明 | 功能描述 |
---|---|---|
..\components\ir..\components\ir_remote_driver\ | 紅外驅動目錄(有些藍牙也是單線通訊方式,與紅外的驅動基本一致) |
紅外接收功能,接收后的數(shù)據(jù)會隊列通知到deal_userdef_msg,紅外的長度可以根據(jù)宏定義配置。 #宏定義 #define IR_MAX_DATA_COUNT 120最大紅外個數(shù) |
..\components\motor_driver\ | 電機驅動目錄 | 當前支持5104的不歸零碼協(xié)議,后續(xù)如有其它驅動,CI可以支持 |
..\components\ci_key\ | 使用了2個Touch IC芯片(如品騰PT8041),控制7個按鍵 | 觸摸不同的按鍵,對應不同的adc數(shù)值,故使用兩個ADIO 做按鍵驅動,根據(jù)客戶的實際產(chǎn)品,請自行調(diào)整 |
..\components\digital_tube\ | 數(shù)碼管驅動目錄 | IO 與LED 進行復用。目前支持的是兩個數(shù)碼管+8個LED |
..\components\temperature_sensor\ | 溫度傳感器驅動目錄 | 使用AD+熱敏電阻實現(xiàn),產(chǎn)品可以根據(jù)溫度進行智能調(diào)節(jié)風量 |
..\components\buzzer\ | 蜂鳴器驅動目錄 | 采用定時器默認4Khz進行聲音提示,可以更改 #define BUZZER_HZ 進行配置,單位HZ |
..\sample\internal\sample_1102\src\user_msg_deal.c | 風扇應用層代碼 | 根據(jù)紅外,按鍵,語音識別的消息進行電機的應用控制 |
針對SDK中一些重要的變量和函數(shù)進行說明:
風扇狀態(tài)變量:
typedef struct { ? ?unsigned short user_code : 4 ;//用戶碼固定位 b'1010* ? ?unsigned short positive : 2 ;//正轉b'00 反轉b'11* ? ?unsigned short sync_motor: 2 ;//同步電機1 停止b'00 同步電機停止b'10* ? ?unsigned short speed_bit: 8 ;//電機工作范圍25~255 0表示電機停止* ? ?unsigned char mode; //0:正常風 1:自然風 2:睡眠風 3:智能風* ? ?short time; //0~15H* ? ?unsigned char led; //1開,0關* ? ?unsigned char head; //0關閉 1:左右 2:上下 3:3D* ? ?unsigned char gear; //0關閉 1~24* }motor_status_struct_data;
風扇初始化函數(shù)
路徑: ..\sample\internal\sample_1102\src\user_msg_deal.c
?
/*\* @breif 風扇初始化函數(shù)**/ void fan_init(void) { //風扇狀態(tài)初始化 ?motor_status.user_code = 0xa; ?motor_status.sync_motor = 0x0; ?motor_status.speed_bit = 0x0; ?motor_status.positive = 0x00; ?motor_status.mode = 0; ?motor_status.head = 0; ?motor_status.led = 1; ?motor_status.gear = 0; ?motor_status.time = 0; ?/*風扇軟件初始化*/ ?extern void ?user_fan_soft_init(void); ?user_fan_soft_init(); ?//電機初始化 ?agreement_5104_app_init(); ?//紅外初始化 ?extern void ir_test_recive(void); ?ir_test_recive(); ?//藍牙初始化 ?extern void bt_test_recive(void); ?bt_test_recive(); ?//按鍵初始化 ?extern void ci_key_init(void); ?ci_key_init(); ?//數(shù)碼管初始化 ?extern int digital_tube_init(void); ?digital_tube_init(); ?//蜂鳴器初始化 ?buzzer_init(); ?//同步電機2初始化 ?sync_motor2_hw_init(); ?//溫度傳感器初始化 ?temp_sensor_init(); }
風扇應用任務處理
?
語音入口和標準SDK一致無改動,藍牙、語音、按鍵、紅外通過隊列sys_msg_queue發(fā)送消息到UserTaskManageProcess任務。相關控制處理入口入下圖所示例:
uint32_t deal_userdef_msg(sys_msg_t *msg) { ? ?uint32_t ret = 1; ? ?switch(msg->msg_type) ? ?{ ? ?/* 按鍵消息 */ ? ? ? ?case SYS_MSG_TYPE_KEY: ? ? ? ?{ ? ? ? ? ? ?sys_msg_key_data_t *key_rev_data; ? ? ? ? ? ?key_rev_data = &msg->msg_data.key_data; ? ? ? ? ? ?userapp_deal_key_msg(key_rev_data); ? ? ? ? ? ?break; ? ? ? ?} ? ? ? ?/* 紅外消息 */ ? ? ? ?case SYS_MSG_TYPE_IR: ? ? ? ?{ ? ? ? ? ? ?sys_msg_ir_data_t *ir_rev_data; ? ? ? ? ? ?ir_rev_data = &msg->msg_data.ir_data; ? ? ? ? ? ?userapp_deal_ir_msg(ir_rev_data); ? ? ? ? ? ?break; ? ? ? ?} ? ? ? ?/* 藍牙消息*/ ? ? ? ?case SYS_MSG_TYPE_BT: ? ? ? ?{ ? ? ? ? ? ?sys_msg_bt_data_t *bt_rev_data; ? ? ? ? ? ?bt_rev_data = &msg->msg_data.bt_data; ? ? ? ? ? ?userapp_deal_bt_msg(bt_rev_data); ? ? ? ? ? ?break; ? ? ? ?} ? ? ? ?#if MSG_COM_USE_UART_EN ? ? ? ?/* CI串口協(xié)議消息 */ ? ? ? ?case SYS_MSG_TYPE_COM: ? ? ? ?{ ? ? ? ? ? ?sys_msg_com_data_t *com_rev_data; ? ? ? ? ? ?com_rev_data = &msg->msg_data.com_data; ? ? ? ? ? ?userapp_deal_com_msg(com_rev_data); ? ? ? ? ? ?break; ? ? ? ?} ? ? ? ?#endif ? ? ? ?/* CI IIC 協(xié)議消息 */ ? ? ? ?#if MSG_USE_I2C_EN ? ? ? ?case SYS_MSG_TYPE_I2C: ? ? ? ?{ ? ? ? ? ? ?sys_msg_i2c_data_t *i2c_rev_data; ? ? ? ? ? ?i2c_rev_data = &msg->msg_data.i2c_data; ? ? ? ? ? ?userapp_deal_i2c_msg(i2c_rev_data); ? ? ? ? ? ?break; ? ? ? ?} ? ? ? ?#endif ? ? ? ?default: ? ? ? ?break; ? ?} ? ?return ret; }
5.2 配合主控板的串口通訊方案?
5.2.1 方案特點?
如用戶不愿意替換原先使用的電控板,也可以用我司的芯片設計語音控制板,和原電控板通過串口進行通訊,也可以實現(xiàn)語音風扇的產(chǎn)品設計。該方式開發(fā)相對簡單,可以快速對接完成產(chǎn)品,但成本略高,適用于需快速出產(chǎn)品的的方案或者第一次接觸語音識別的方案。
該方案的設計框圖如下,語音模塊與電控模塊需要4根線的串口連接,語音模塊進行語音識別及根據(jù)風扇的狀態(tài)進行信息播放,控制由電控模塊完成。
5.2.2 硬件設計參考?
用戶可以使用我司芯片設計需要要求的語音模塊,但為快速開發(fā),推薦直接使用我司的以下標準模塊:
- CI-B02GS03T:適合空間比較高,縱深長的結構,串口接口電平為3.3V;
- CI-B02GS01S:適合空間比較矮的結構,串口接口電平為3.3V;
- CI-B02GS01J:適合有空間放置固定語音模塊的結構,原來的風扇硬件改動較小,串口接口電平為5V。
用戶直接使用我司標準語音模塊時,有以下注意事項:
- 將語音模塊板的串口跟電控串口對接,注意電控的供電需要大于1A;
- 注意串口的電平要匹配,CI-B02GS01J支持5V電平,其他的模塊支持3.3V,如果電控板使用5V電平,CI-B02GS01J可以對接直接串口,其它模塊需要增加電平轉換電路,如下圖所示:
5.2.3 串口通訊方式?
語音模塊與電控模塊通過串口進行信息交互,主要有兩種方式,一種為語音模塊主動播放,同時將信息發(fā)電控模塊;另一種為語音模塊被動播放,其分別描述如下:
語音模塊主動播放模式
主動播放方式主要執(zhí)行以下動作:
- 識別到詞條,主動播放反饋聲音;
- 將此條信息串口告知電控模塊;
- 電控模塊執(zhí)行動作。
該方式的優(yōu)點在于控制方式簡單,由語音模塊單線輸出信息給電控模塊。但缺點在于無法根據(jù)風扇的情況及按鍵情況進行語音反饋。
語音模塊被動播放模式
被動播放方式主要執(zhí)行以下動作:
- 語音模塊識別到詞條;
- 將詞條信息串口告知電控模塊;
- 電控模塊執(zhí)行相關動作;
- 告知語音模塊需要播放的內(nèi)容;
- 語音模塊根據(jù)電控模塊反饋進行播放。
該方式的優(yōu)點在于語音模塊根據(jù)電控模塊的狀態(tài)進行播放對應內(nèi)容,可以進行最合適的反饋,體驗感好;同時如果電控模塊通過按鍵或者遙控進行控制,語音模塊也可以進行狀態(tài)播放。缺點在于會多一次串口通信的過程。
5.2.4 SDK包說明和模塊串口通訊協(xié)議?
我司為用戶提供了串口通訊方案完整的SDK包,用戶可以到 ?啟英泰倫語音AI平臺 上獲取相關SDK開發(fā)包。
模塊的串口通訊建議使用我司標準協(xié)議,具體格式請參考 ?串口協(xié)議 。
以下是語音模塊發(fā)給電控模塊的一個命令詞及協(xié)議參考:
命令詞 | 幀頭 | 長度 | 類型 | 命令 | 序號 | 語音ID | 保留 | 分數(shù) | 累加和 | 幀尾 |
---|---|---|---|---|---|---|---|---|---|---|
小艾小艾 | A5 FC | 07 00 | A0 | 91 | XX | 00 00 00 00 | 00 00 | XX | XXXX | FB |
開風扇 | A5 FC | 07 00 | A0 | 91 | XX | 42 19 74 02 | 00 00 | XX | XXXX | FB |
打開風扇 | A5 FC | 07 00 | A0 | 91 | XX | 41 19 74 02 | 00 00 | XX | XXXX | FB |
關風扇 | A5 FC | 07 00 | A0 | 91 | XX | 82 19 74 02 | 00 00 | XX | XXXX | FB |
關閉風扇 | A5 FC | 07 00 | A0 | 91 | XX | 81 19 74 02 | 00 00 | XX | XXXX | FB |
開搖頭 | A5 FC | 07 00 | A0 | 91 | XX | 86 22 74 02 | 00 00 | XX | XXXX | FB |
打開搖頭 | A5 FC | 07 00 | A0 | 91 | XX | 85 22 74 02 | 00 00 | XX | XXXX | FB |
風扇搖頭 | A5 FC | 07 00 | A0 | 91 | XX | 81 22 74 02 | 00 00 | XX | XXXX | FB |
關搖頭 | A5 FC | 07 00 | A0 | 91 | XX | C5 22 74 02 | 00 00 | XX | XXXX | FB |
關閉搖頭 | A5 FC | 07 00 | A0 | 91 | XX | C4 22 74 02 | 00 00 | XX | XXXX | FB |
停止搖頭 | A5 FC | 07 00 | A0 | 91 | XX | C1 22 74 02 | 00 00 | XX | XXXX | FB |
風大點 | A5 FC | 07 00 | A0 | 91 | XX | E1 38 BC 02 | 00 00 | XX | XXXX | FB |
風大一點 | A5 FC | 07 00 | A0 | 91 | XX | 72 1A 98 01 | 00 00 | XX | XXXX | FB |
風大一些 | A5 FC | 07 00 | A0 | 91 | XX | 73 1A 98 01 | 00 00 | XX | XXXX | FB |
風再大點 | A5 FC | 07 00 | A0 | 91 | XX | 74 1A 98 01 | 00 00 | XX | XXXX | FB |
風小一點 | A5 FC | 07 00 | A0 | 91 | XX | 75 1A 98 01 | 00 00 | XX | XXXX | FB |
風小一些 | A5 FC | 07 00 | A0 | 91 | XX | 76 1A 98 01 | 00 00 | XX | XXXX | FB |
風小點 | A5 FC | 07 00 | A0 | 91 | XX | 5F 39 BC 02 | 00 00 | XX | XXXX | FB |
風再小點 | A5 FC | 07 00 | A0 | 91 | XX | 77 1A 98 01 | 00 00 | XX | XXXX | FB |
最大風 | A5 FC | 07 00 | A0 | 91 | XX | C7 39 BC 02 | 00 00 | XX | XXXX | FB |
最小風 | A5 FC | 07 00 | A0 | 91 | XX | 48 3A BC 02 | 00 00 | XX | XXXX | FB |
定時關機 | A5 FC | 07 00 | A0 | 91 | XX | 01 0F 95 01 | 00 00 | XX | XXXX | FB |
關閉定時 | A5 FC | 07 00 | A0 | 91 | XX | 44 0E 95 01 | 00 00 | XX | XXXX | FB |
睡眠風 | A5 FC | 07 00 | A0 | 91 | XX | 82 27 74 02 | 00 00 | XX | XXXX | FB |
自然風 | A5 FC | 07 00 | A0 | 91 | XX | 03 28 74 02 | 00 00 | XX | XXXX | FB |
正常風 | A5 FC | 07 00 | A0 | 91 | XX | C1 CB 94 01 | 00 00 | XX | XXXX | FB |
聲音大點 | A5 FC | 07 00 | A0 | 91 | XX | 47 19 94 01 | 00 00 | XX | XXXX | FB |
聲音小點 | A5 FC | 07 00 | A0 | 91 | XX | 87 19 94 01 | 00 00 | XX | XXXX | FB |
定時一小時 | A5 FC | 07 00 | A0 | 91 | XX | 02 37 95 01 | 00 00 | XX | XXXX | FB |
定時兩小時 | A5 FC | 07 00 | A0 | 91 | XX | 82 37 95 01 | 00 00 | XX | XXXX | FB |
定時二小時 | A5 FC | 07 00 | A0 | 91 | XX | 83 37 95 01 | 00 00 | XX | XXXX | FB |
定時三小時 | A5 FC | 07 00 | A0 | 91 | XX | 01 38 95 01 | 00 00 | XX | XXXX | FB |
定時四小時 | A5 FC | 07 00 | A0 | 91 | XX | 81 38 95 01 | 00 00 | XX | XXXX | FB |
定時五小時 | A5 FC | 07 00 | A0 | 91 | XX | 01 39 95 01 | 00 00 | XX | XXXX | FB |
定時六小時 | A5 FC | 07 00 | A0 | 91 | XX | 81 39 95 01 | 00 00 | XX | XXXX | FB |
開一檔 | A5 FC | 07 00 | A0 | 91 | XX | 41 3F 94 01 | 00 00 | XX | XXXX | FB |
開二檔 | A5 FC | 07 00 | A0 | 91 | XX | C1 3E 94 01 | 00 00 | XX | XXXX | FB |
開三檔 | A5 FC | 07 00 | A0 | 91 | XX | 01 3F 94 01 | 00 00 | XX | XXXX | FB |
開四檔 | A5 FC | 07 00 | A0 | 91 | XX | 41 3F 94 01 | 00 00 | XX | XXXX | FB |
開五檔 | A5 FC | 07 00 | A0 | 91 | XX | 81 3F 94 01 | 00 00 | XX | XXXX | FB |
開六檔 | A5 FC | 07 00 | A0 | 91 | XX | C1 3F 94 01 | 00 00 | XX | XXXX | FB |
開七檔 | A5 FC | 07 00 | A0 | 91 | XX | 01 40 94 01 | 00 00 | XX | XXXX | FB |
開八檔 | A5 FC | 07 00 | A0 | 91 | XX | 41 40 94 01 | 00 00 | XX | XXXX | FB |
開九檔 | A5 FC | 07 00 | A0 | 91 | XX | 81 40 94 01 | 00 00 | XX | XXXX FB | ? |
退出喚醒 | A5 FC | 02 00 | A3 | 9A | XX | 00 B2 | ? | ? | XXXX | FB |
以下是一個電控模塊發(fā)給語音模塊的通訊協(xié)議參考:
對應播報音 | 幀頭 | 長度 | 類型 | 命令 | 序號 | 控制 | 播放類型 | 播放序號 | 保留 | 累加和 | 幀尾 |
---|---|---|---|---|---|---|---|---|---|---|---|
小艾小艾 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 01 00 00 00 | 0 | XXXX | FB |
開風扇 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 02 00 00 00 | 0 | XXXX | FB |
打開風扇 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 03 00 00 00 | 0 | XXXX | FB |
關風扇 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 04 00 00 00 | 0 | XXXX | FB |
關閉風扇 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 05 00 00 00 | 0 | XXXX | FB |
開搖頭 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 06 00 00 00 | 0 | XXXX | FB |
打開搖頭 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 07 00 00 00 | 0 | XXXX | FB |
風扇搖頭 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 08 00 00 00 | 0 | XXXX | FB |
關搖頭 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 09 00 00 00 | 0 | XXXX | FB |
關閉搖頭 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 0A 00 00 00 | 0 | XXXX | FB |
停止搖頭 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 0B 00 00 00 | 0 | XXXX | FB |
風大點 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 0C 00 00 00 | 0 | XXXX | FB |
風大一點 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 0D 00 00 00 | 0 | XXXX | FB |
風大一些 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 0E 00 00 00 | 0 | XXXX | FB |
風再大點 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 0F 00 00 00 | 0 | XXXX | FB |
風小一點 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 10 00 00 00 | 0 | XXXX | FB |
風小一些 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 11 00 00 00 | 0 | XXXX | FB |
風小點 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 12 00 00 00 | 0 | XXXX | FB |
風再小點 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 13 00 00 00 | 0 | XXXX | FB |
最大風 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 14 00 00 00 | 0 | XXXX | FB |
最小風 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 15 00 00 00 | 0 | XXXX | FB |
定時關機 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 16 00 00 00 | 0 | XXXX | FB |
關閉定時 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 17 00 00 00 | 0 | XXXX | FB |
睡眠風 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 18 00 00 00 | 0 | XXXX | FB |
自然風 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 19 00 00 00 | 0 | XXXX | FB |
正常風 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 1A 00 00 00 | 0 | XXXX | FB |
聲音大點 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 1B 00 00 00 | 0 | XXXX | FB |
聲音小點 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 1C 00 00 00 | 0 | XXXX | FB |
定時一小時 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 1D 00 00 00 | 0 | XXXX | FB |
定時兩小時 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 1E 00 00 00 | 0 | XXXX | FB |
定時二小時 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 1F 00 00 00 | 0 | XXXX | FB |
定時三小時 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 20 00 00 00 | 0 | XXXX | FB |
定時四小時 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 21 00 00 00 | 0 | XXXX | FB |
定時五小時 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 22 00 00 00 | 0 | XXXX | FB |
定時六小時 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 23 00 00 00 | 0 | XXXX | FB |
開一檔 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 24 00 00 00 | 0 | XXXX | FB |
開二檔 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 25 00 00 00 | 0 | XXXX | FB |
開三檔 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 26 00 00 00 | 0 | XXXX | FB |
開四檔 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 27 00 00 00 | 0 | XXXX | FB |
開五檔 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 28 00 00 00 | 0 | XXXX | FB |
開六檔 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 29 00 00 00 | 0 | XXXX | FB |
開七檔 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 2A 00 00 00 | 0 | XXXX | FB |
開八檔 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 2B 00 00 00 | 0 | XXXX | FB |
開九檔 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 2C 00 00 00 | 0 | XXXX | FB |
注意:
- ASR語言模型中文建議選擇SE146,其他語種請使用對應語種的模型。風扇產(chǎn)品自帶運行噪音,如果風扇本身噪音大于60db,建議打開降噪功能。
-
串口設置:
- 波特率:9600
- 停止位:1
- 數(shù)據(jù)位:8
- 奇偶校驗:無
- 代碼中通過判斷 “命令+語音ID”獲取是什么指令和功能。
- 發(fā)送的串口信息建議要檢查完整性,可以用以下的checksum參考代碼來實現(xiàn)。
#define VMUP_MSG_DATA_MAX_SIZE (20)
//可根據(jù)實際數(shù)據(jù)大小調(diào)整
#pragma pack(1)
typedef
struct
{
? ?
uint16_t
header
;
? ?
uint16_t
data_length
;
? ?
uint8_t
msg_type
;
? ?
uint8_t
msg_cmd
;
? ?
uint8_t
msg_seq
;
? ?
uint8_t
msg_data
[
VMUP_MSG_DATA_MAX_SIZE
];
? ?
/*uint16_t chksum; send add auto*/
? ?
/*uint8_t tail; send add auto*/
}
sys_msg_com_data_t
;
#pragma pack()
unsigned
short
Uart_Checksum
(
sys_msg_com_data_t
*
msg
)
{
? ?
unsigned
char
i
;
? ?
unsigned
short
t16_lenth
;
? ?
unsigned
short
t16_check
=
0
;
? ?
uint8_t
*
rxbuf
=
uint8_t
*&
msg
->
msg_type
? ?
t16_lenth
=
msg
->
data_length
+
3
;
//cmd_type,cmd,sequence 加上data數(shù)據(jù)的長度
? ?
if
(
t16_lenth
>
VMUP_MSG_DATA_MAX_SIZE
+
3
)
//data length error
? ?
{
? ? ? ?
return
0xffff
;
? ?
}
? ?
for
(
i
=
4
;
i
<
t16_lenth
;
i
++
)
? ?
{
? ? ? ?
t16_check
+=
?
rxbuf
[
i
];
? ?
}
? ?
return
t16_check
;
}
6 產(chǎn)品結構相關注意事項?
6.1 麥克風結構設計?
風扇產(chǎn)品在設計結構時,針對麥克風應當注意以下事項:
- 麥克風布局盡量遠離風扇的風面及電機;
- 麥克風放在風扇的正面/頂部/底部/的位置避免遮擋,保證拾音最大范圍;
- 分貝儀測試最大風速下,麥克風處的穩(wěn)態(tài)噪聲需小于60dB;
- 麥克風連線較長可選擇帶屏蔽的線;
- 麥克風線扎捆遠離電機或電控線。
下圖以落地風扇為例,講述麥克風結構開孔及位置的建議方式,固定麥克風的結構件也需要考慮麥克風線方便引出導線和避免干擾。
6.2 喇叭結構設計?
風扇產(chǎn)品在設計結構時,針對喇叭應當注意以下事項:
- 考慮到音質,喇叭功率不能太小,建議選用1W以上喇叭,帶音腔的喇叭效果會更好一點,同時注意硬件板上的功放驅動能力要匹配喇叭型號;
- 喇叭放置位置以美觀及結構布局方便為主,但注意盡量避免和麥克風放在同一位置;
- 不帶音腔喇叭可以在結構上做一個音腔密封后能增大音量輸出。
下圖是一個喇叭規(guī)格及開孔的建議。
6.3 其它注意事項?
- 建議選擇-32dB±3dB,信噪比大于70dB以上,性價比高的全向模擬麥克風;
- 若風扇旋轉震動比較大,選擇較厚的麥克風膠套減緩震動,可減小對識別效果的影響;
- 某些顯控板在底盤上的落地風扇,或類似易接觸水或積累灰塵的風扇,需要選擇防水防塵的麥克風;
- 特別注意禁止直接點熱溶膠用于固定麥克風頭;
- 將麥克風完全插入固定孔內(nèi)部,避免歪斜,拾音孔中心孔對準麥克風的中心;
- 風扇內(nèi)部接線多容易扯松,插頭配插座帶卡扣會更牢固;
- 選擇符合環(huán)保RoHS要求的RTV硅膠,推薦常用的硅膠有703/704/737等,或其它有機材料、單組分室溫固化硅膠等;
- 多數(shù)硅橡膠灌膠厚度小于3mm以內(nèi)實溫完全固化時間為8 ~ 12小時,灌膠厚度 > 3mm以上完全固化時間更長,可分層多次澆灌,確保完全固化穩(wěn)定密封;
- 生產(chǎn)工藝可把固定麥克風工序提前,另外特別注意麥克風接線在重力拉扯下,未完全固化前容易導致麥克風扯歪,也需注意將麥克風插線固定好。
7 相關參考資料列表?
編號 | 參考資料描述 | 獲取方式 |
---|---|---|
1 |
標準離線SDK CI110X_SDK_ASR_Offline |
請到 ?啟英泰倫語音AI平臺 上獲取 |
2 |
風扇SDK Demo: 主控方案SDK 串口通訊方案SDK |
請到 ?啟英泰倫語音AI平臺 上獲取 |
3 | 測試固件 | 到 ?啟英泰倫語音AI平臺 上獲取 |
4 | 我司芯片和模塊的選型指南 | 請點擊 ?硬件選型指南 查看 |
5 | 我司芯片硬件設計方法參考 | 請點擊 ?硬件設計參考 查看 |
6 | 麥克風和喇叭器件選型 | 請點擊 ?外圍器件兼容列表 查看 |
7 | 產(chǎn)品結構設計 | 請點擊 ?產(chǎn)品結構設計 查看 |
8 | 軟件開發(fā)方法和標準SDK說明 | 請點擊 ?軟件開發(fā) 查看各部分內(nèi)容 |
9 | 產(chǎn)品識別性能測試方法 | 請點擊 ?識別效果測試 查看 |
10 | 生產(chǎn)測試的方法 | 請點擊 ?生產(chǎn)測試 查看 |
用戶如遇到使用問題,請到啟英泰倫語音AI平臺上提交技術工單,或直接聯(lián)系我司技術人員獲取協(xié)助。
審核編輯:符乾江
評論
查看更多