h1_key

當(dāng)前位置:首頁 >新聞資訊 > 技術(shù)文章>意法半導(dǎo)體>STM32WB利用Opus實(shí)現(xiàn)BLE全雙工語音流
STM32WB利用Opus實(shí)現(xiàn)BLE全雙工語音流
2022-11-14 713次

在無線藍(lán)牙領(lǐng)域,既能滿足超低功耗,又能進(jìn)行全雙工語音通訊,一直是市場上的需求,比如:無線門鈴,短距離對(duì)講機(jī)等應(yīng)用。針對(duì)BLE語音相關(guān)的應(yīng)用場景,ST推出了FP-AUD-BVLINKWB1這個(gè)軟件包供客戶評(píng)估。

  本文將對(duì)這個(gè)軟件包展開介紹,該軟件包主要包含以下特性:

  使用Opus v1.3編碼和解碼,通過BLE實(shí)現(xiàn)全雙工立體音頻流。

  使用自定義BlueVoiceOPUS協(xié)議,通過API即可使用Opus功能。

  源碼包含數(shù)字音頻捕獲和處理。

  可以通過USB進(jìn)行音頻流的回放。

  可使用麥克風(fēng)擴(kuò)展板X-NUCLEO-CCA02M2 + Nucleo開發(fā)板P-NUCLEO-WB55的組合或者探索板STM32WB5MM-DK

  兼容STBLESensor App。

  免費(fèi)開源。

 

 

  軟件架構(gòu)

 

▲圖1.軟件架構(gòu)圖

 

  ●Hardware Abstraction:硬件抽象層,使用了STM32HAL庫提供底層的硬件驅(qū)動(dòng)。

  ●BSP層:在HAL層之上,提供了板級(jí)支持包,包含了SPI,ADC,LEDUser Button等驅(qū)動(dòng)。

  ●Middleware層:中間件層,主要包含了以下內(nèi)容:

  □ STM32 WPAN:提供BLE,Thread,Zigbee等協(xié)議相關(guān)的接口API,本應(yīng)用只使用了BLE協(xié)議。

  □ USB Device:提供各種不同USB device類的實(shí)現(xiàn),本應(yīng)用中只使用了USB Audio類。

  □ PDM Lib:提供了數(shù)字麥克風(fēng)PDM信號(hào)到PCM信號(hào)轉(zhuǎn)換的軟件實(shí)現(xiàn)。

  □ OPUS:開源第三方的OPUS庫,版本v1.3。

  

  Opus是完全開源免費(fèi)的高通用性音頻編解碼協(xié)議,由Internet Engineering Task Force (IETF)標(biāo)準(zhǔn)化。

  Opus可以處理廣泛的音頻應(yīng)用,包括IP語音、視頻會(huì)議、游戲內(nèi)聊天,甚至遠(yuǎn)程現(xiàn)場音樂表演。它可以從低比特率窄帶語音縮放到非常高質(zhì)量的立體聲音樂,并且具備以下特點(diǎn):

  比特率范圍:6kb /s510 kb/s

  采樣率范圍:8khz(窄帶)48kHz(全帶)

  幀大小:2.5 ms60 ms

  比特率,采樣率,幀大小動(dòng)態(tài)可調(diào)節(jié)

  支持固定比特率(CBR)和可變比特率(VBR)

  支持語音和音樂

  支持單聲道和立體聲

  最多支持255個(gè)通道

  良好的魯棒性和丟包隱藏能力

  支持浮點(diǎn)和定點(diǎn)

 

  BlueVoiceOPUS協(xié)議BlueVoiceOPUS是自定義的協(xié)議,CentralPeripheralGAP層的角色,在點(diǎn)對(duì)點(diǎn)通訊中,主動(dòng)發(fā)起連接請求的設(shè)備為Central。在GATT協(xié)議中,Server接受請求和命令,將數(shù)據(jù)保存在屬性中。Client實(shí)施服務(wù)發(fā)現(xiàn)流程,并向Server請求數(shù)據(jù)。

  如果是單向的非對(duì)稱語音系統(tǒng),那么具備麥克風(fēng)的設(shè)備可以定義為Server,客戶端可以主動(dòng)或被動(dòng)接收Server的語音數(shù)據(jù)流。

  

 

2.GATT角色分配

  如圖2,FP-AUD-BVLINKWB1提供了雙向的系統(tǒng),雙方設(shè)備都具備語音的能力,所以雙方都實(shí)現(xiàn)了GATT Server以及Client的角色。并且,Server的語音數(shù)據(jù)基于notification性質(zhì),將以異步的方式主動(dòng)發(fā)送給Client。

  ? BlueVoiceOPUS服務(wù)

  ATT協(xié)議用于在設(shè)備中進(jìn)行數(shù)據(jù)交換,ATT的最小實(shí)體稱為屬性。GATT服務(wù)由各種服務(wù)組成,其中服務(wù)由服務(wù)申明屬性作為起始,每一個(gè)服務(wù)又包含若干特性,特性由任意屬性或?qū)傩悦枋龇M成。

  表1是典型的BLE服務(wù)的屬性表,其中包含了1個(gè)服務(wù)申明以及3個(gè)特性。Audio特性用來通知對(duì)方設(shè)備音頻數(shù)據(jù)。Ctrl特性通知對(duì)方設(shè)備控制數(shù)據(jù),比如播放,暫停等。Music特性用來通知對(duì)方音樂數(shù)據(jù),該特性只在ST BLE Sensor APP中實(shí)現(xiàn),取代Audio特性,用來傳輸壓縮后的48KHz立體音樂。

  

 

1.BlueVoiceOPUS服務(wù)屬性表

  ? BLUEVoiceOPUS實(shí)現(xiàn)

  在Middleware層,和BlueVoiceOPUS協(xié)議相關(guān)的文件包括:

  

 

  bvopus_service_stm:該文件管理所有和BLE相關(guān)的功能,包括添加服務(wù)和添加特性,以及數(shù)據(jù)的接收和發(fā)送。其中包含了一個(gè)簡單的數(shù)據(jù)封包和解析協(xié)議。

  ●opus_interface_stm:該文件實(shí)現(xiàn)了Opus編碼器和BlueVoiceOPUS服務(wù)的接口。提供簡單的API用于Opus初始化,配置,數(shù)據(jù)壓縮和解壓等。

  

  應(yīng)用層介紹在軟件包中包含了三個(gè)主要的工程:

  BVLCentral:作為主設(shè)備主動(dòng)發(fā)起連接,并提供BlueVoiceOPUS服務(wù)。

  ●BVLPeripheral:作為從設(shè)備廣播,并提供BlueVoiceOPUS服務(wù)。

  ●BVLPeripheral_FullBand:作為從設(shè)備廣播,提供BlueVoiceOPUS服務(wù), 可以通過BLE接收立體聲音樂,但目前只能和ST BLE Sensor相連。

  BVLCentralBVLPeripheral分別燒錄到WB55的開發(fā)板中,分別作為主機(jī)和從機(jī),通過開啟或停止音頻通知,可以達(dá)到三種不同類型的通訊:單工,半雙工和全雙工。

  當(dāng)設(shè)備在輸出音頻流時(shí),應(yīng)用層負(fù)責(zé)語音的獲取,數(shù)據(jù)壓縮和封包,然后通過BlueVoiceOPUS協(xié)議發(fā)送出去。

  當(dāng)設(shè)備在接收音頻流時(shí),應(yīng)用層通過從BlueVoiceOPUS協(xié)議中接收BLE數(shù)據(jù)包,然后解包和解碼OPUS語音數(shù)據(jù)。

  

  通過P-NUCLEO-WB55上的SW1控制打開或關(guān)閉語音流通道。

  通過LED顯示設(shè)備的狀態(tài)。

  廣播/發(fā)現(xiàn)狀態(tài):綠色LED閃爍

  連接狀態(tài):藍(lán)色LED緩慢閃爍

  語音流狀態(tài):藍(lán)色LED正常閃爍

  接收狀態(tài):藍(lán)色LED穩(wěn)定點(diǎn)亮(不閃爍)

  全雙工狀態(tài):藍(lán)色LED快速閃爍(雙方設(shè)備)

  

 

  BVLCentral可以由APP(ST BLE Sensor)代替,完成設(shè)備和手機(jī)端的全雙工語音通訊。

  

 

  3.應(yīng)用流程圖

  整個(gè)應(yīng)用流程如圖3所示,整個(gè)流程介紹如下:

  從設(shè)備廣播,主設(shè)備發(fā)起連接,直到連接建立成功。

  雙方互相完成服務(wù)和特性發(fā)現(xiàn)流程。

  從設(shè)備通過按鈕,請求打開特性通知,主設(shè)備打開通知,從設(shè)備發(fā)送語音流,此時(shí)狀態(tài)為語音流狀態(tài)。

  相反地,主設(shè)備通過按鈕,請求打開特性通知,從設(shè)備打開通知,主設(shè)備發(fā)送語音流,此時(shí)狀態(tài)變?yōu)槿p工狀態(tài)。

  可以通過按鈕,開關(guān)語音流,改變語音流狀態(tài)。

  

  系統(tǒng)部署指導(dǎo)

  下面將從不同方面分別介紹Demo的部署流程。

  兩塊STM32WB開發(fā)板之間的全雙工音頻流

  

 

4.NUCLEO+CCA02M2的組合

  如上圖4 ,可以使用P-NUCLEO-WB55開發(fā)板與一塊麥克風(fēng)擴(kuò)展板X-NUCLEO-CCA02M2進(jìn)行組合。然后分別燒錄BVLCentral工程和BVLPeripheral工程。當(dāng)雙方設(shè)備建立連接以后,通過Nucleo上的SW1按鈕,就可以建立起半雙工或全雙工的語音流了。麥克風(fēng)擴(kuò)展板可以對(duì)語音信號(hào)以8kHz16kHz進(jìn)行采集,并通過BlueVoiceOPUS協(xié)議傳輸,當(dāng)對(duì)方設(shè)備接收到語音數(shù)據(jù)后,也通過usb傳輸?shù)?/span>PC,使用刻錄軟件(audacity)進(jìn)行刻錄保存,然后使用Audacity或其他語音軟件播放。

  

 

5.STM325MM-DK探索板

  如上圖5,也可以使用STM32WB5MM-DK進(jìn)行同樣的操作,該開發(fā)板使用了STM32WB5MM的模組,并且板載了一塊OLED顯示屏供開發(fā)。

  當(dāng)然也可以使用圖4和圖5的組合,只要一塊燒錄的是主機(jī)程序,另一塊燒錄的是從機(jī)程序即可。

  STM32WB開發(fā)板和手機(jī)之間的全雙工音頻流除了上面的配置方法外,ST還提供了ST BLE Sensor手機(jī)APP供測試。

 

▲圖6.手機(jī)和開發(fā)板之間的音頻流

  如圖6,手機(jī)可以作為主設(shè)備,掃描然后連接STM32WB55開發(fā)板,建立全雙工的音頻流的BLE鏈路。語音信號(hào)可以從開發(fā)板采集,發(fā)送到手機(jī)側(cè)進(jìn)行播放。也可以從手機(jī)側(cè)采集,發(fā)送到開發(fā)板后,再通過USB進(jìn)行播放。

  STM32WB開發(fā)板和手機(jī)之間的立體聲音樂播放上面介紹的都是8kHz/16kHz的語音流,該軟件包還提供了全帶(Full-Band)48kHz立體聲音樂流方案。

 

▲圖7.48kHz立體聲音樂流方案

  如圖7,手機(jī)掃描設(shè)備后,發(fā)起并建立連接,完成GATT服務(wù)發(fā)現(xiàn)流程,然后通過按鈕打開特性的通知屬性,建立全帶音樂流。APP使用OPUS對(duì)手機(jī)內(nèi)音樂進(jìn)行壓縮和封包,然后通過BLE發(fā)送給開發(fā)板。開發(fā)板通過USB將數(shù)據(jù)導(dǎo)出到PC上,最后使用Audacity或其他語音軟件進(jìn)行播放。

 

  • 意法半導(dǎo)體STM32H743IIT6高性能MCU深度剖析
  • 意法半導(dǎo)體(STMicroelectronics)的 STM32H743IIT6 是一款備受矚目的高性能微控制器,在嵌入式系統(tǒng)領(lǐng)域中具有重要的地位。本文將對(duì)其產(chǎn)品參數(shù)進(jìn)行專業(yè)準(zhǔn)確的介紹。STM32H743IIT6 基于 Arm? Cortex?-M7 內(nèi)核,主頻高達(dá) 480MHz,具備強(qiáng)大的計(jì)算能力和高效的處理性能。這使得該微控制器能夠輕松應(yīng)對(duì)復(fù)雜的計(jì)算任務(wù)和實(shí)時(shí)性要求較高的應(yīng)用場景。
    2024-07-08 222次
  • 意法半導(dǎo)體STM32F722RET6性能和穩(wěn)定性
  • 在當(dāng)今高度智能化和數(shù)字化的時(shí)代,微控制器作為電子系統(tǒng)的核心組件,其性能和功能的優(yōu)劣直接決定了整個(gè)系統(tǒng)的運(yùn)行效果和應(yīng)用范圍。意法半導(dǎo)體(STMicroelectronics)推出的 STM32F722RET6 微控制器,以其出色的性能、豐富的功能和可靠的穩(wěn)定性,成為眾多應(yīng)用領(lǐng)域的理想之選。
    2024-07-05 234次
  • 意法半導(dǎo)體STM32F723ZET6高性能MCU卓越之選
  • 在當(dāng)今電子技術(shù)領(lǐng)域,MCU作為系統(tǒng)的核心組件,其性能和功能直接影響著整個(gè)系統(tǒng)的運(yùn)行效果和應(yīng)用范圍。意法半導(dǎo)體(STMicroelectronics)推出的 STM32F723ZET6 微控制器,以其出色的性能和豐富的功能,成為眾多應(yīng)用場景中的理想選擇。STM32F723ZET6 基于高性能的 Arm? Cortex?-M7 內(nèi)核,運(yùn)行頻率高達(dá) 216 MHz,能夠提供強(qiáng)大的計(jì)算能力和快速的響應(yīng)速度。這使得它在處理復(fù)雜的算法和實(shí)時(shí)任務(wù)時(shí)表現(xiàn)出色,為系統(tǒng)的高效運(yùn)行提供了有力保障。
    2024-07-05 200次
  • 意法半導(dǎo)體 STM32F746IGT6高性能低功耗優(yōu)勢
  • 意法半導(dǎo)體(STMicroelectronics)的 STM32F746IGT6 就是這樣一款令人矚目的產(chǎn)品,它以出色的性能和豐富的特性成為眾多嵌入式系統(tǒng)的理想選擇。STM32F746IGT6 基于高性能的 Arm? Cortex?-M7 內(nèi)核,工作頻率高達(dá) 216 MHz,這使其具備強(qiáng)大的數(shù)據(jù)處理能力和快速的響應(yīng)速度,能夠輕松應(yīng)對(duì)復(fù)雜的計(jì)算任務(wù)和實(shí)時(shí)性要求極高的應(yīng)用場景。
    2024-07-05 165次
  • 意法半導(dǎo)體STM32F750Z8T6高頻率運(yùn)行
  • 意法半導(dǎo)體(STMicroelectronics)推出的 STM32F750Z8T6基于高性能的Arm? Cortex?-M7內(nèi)核,運(yùn)行頻率高達(dá) 216 MHz,能夠?yàn)楦鞣N復(fù)雜的任務(wù)提供強(qiáng)大的計(jì)算能力。其內(nèi)核架構(gòu)經(jīng)過優(yōu)化,具備高效的指令執(zhí)行效率和低延遲響應(yīng)特性,使得系統(tǒng)能夠快速處理數(shù)據(jù)和執(zhí)行指令。
    2024-07-05 209次

    萬聯(lián)芯微信公眾號(hào)

    元器件現(xiàn)貨+BOM配單+PCBA制造平臺(tái)
    關(guān)注公眾號(hào),優(yōu)惠活動(dòng)早知道!
    10s
    溫馨提示:
    訂單商品問題請移至我的售后服務(wù)提交售后申請,其他需投訴問題可移至我的投訴提交,我們將在第一時(shí)間給您答復(fù)
    返回頂部