0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

通過BLE實現(xiàn)全雙工立體音頻流

STM32單片機 ? 來源:STM32單片機 ? 作者:STM32單片機 ? 2022-08-27 09:30 ? 次閱讀

1、前言

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

本文將對這個軟件包展開介紹,該軟件包主要包含以下特性:

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

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

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

? 可以通過 USB 進行音頻流的回放。

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

? 兼容 STBLESensor App。

? 免費開源。

感興趣的話歡迎從以下網(wǎng)址下載該軟件包進行評估:

https://www.st.com/en/embedded-software/fp-aud-bvlinkwb1.html

2、軟件介紹

2.1. 軟件架構(gòu)

85fd060a-2526-11ed-ba43-dac502259ad0.png

? Hardware Abstraction: 硬件抽象層,使用了 STM32 的 HAL 庫提供底層的硬件驅(qū)動。

? BSP 層:在 HAL 層之上,提供了板級支持包,包含了 SPI, ADC, LED 和 User Button等驅(qū)動。

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

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

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

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

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

2.2. Opus 簡介

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

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

? 比特率范圍:6kb /s 到 510 kb/s

? 采樣率范圍:8kHz(窄帶)到 48kHz(全帶) ? 幀大小:2.5 ms 到 60 ms

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

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

? 支持語音和音樂

? 支持單聲道和立體聲

? 最多支持 255 個通道

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

? 支持浮點和定點

2.3. BlueVoiceOPUS 協(xié)議

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

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

8614828a-2526-11ed-ba43-dac502259ad0.png

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

2.3.1. BlueVoiceOPUS 服務(wù)

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

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

86289536-2526-11ed-ba43-dac502259ad0.png

2.3.2. BLUEVoiceOPUS 實現(xiàn)

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

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

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

2.4. 應(yīng)用層介紹

在軟件包中包含了三個主要的工程:

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

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

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

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

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

? 當(dāng)設(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):藍色 LED 緩慢閃爍

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

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

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

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

863c3e10-2526-11ed-ba43-dac502259ad0.png

整個應(yīng)用流程如圖 3 所示,整個流程介紹如下:? 從設(shè)備廣播,主設(shè)備發(fā)起連接,直到連接建立成功。

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

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

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

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

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

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

865d74ea-2526-11ed-ba43-dac502259ad0.png

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

867468ee-2526-11ed-ba43-dac502259ad0.png

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

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

3.2. STM32WB 開發(fā)板和手機之間的全雙工音頻流

除了上面的配置方法外,ST 還提供了 ST BLE Sensor 手機 APP 供測試。

86840a42-2526-11ed-ba43-dac502259ad0.png

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

3.3. STM32WB 開發(fā)板和手機之間的立體聲音樂播放

上面介紹的都是 8kHz/16kHz 的語音流,該軟件包還提供了全帶(Full-Band)的 48kHz 立體聲音樂流方案。

圖7. 48kHz 立體聲音樂流方案

86aab78c-2526-11ed-ba43-dac502259ad0.png

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

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • ST
    ST
    +關(guān)注

    關(guān)注

    32

    文章

    1133

    瀏覽量

    128971
  • BLE
    BLE
    +關(guān)注

    關(guān)注

    12

    文章

    660

    瀏覽量

    59417
  • 無線藍牙
    +關(guān)注

    關(guān)注

    1

    文章

    45

    瀏覽量

    11787

原文標(biāo)題:工程師筆記|利用 Opus 在 STM32WB 上實現(xiàn) BLE 全雙工語音流

文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    全雙工與半雙工的區(qū)別 主要是自己學(xué)習(xí)下

    。隨著技術(shù) 的不斷進步,半雙工會逐漸退出歷史舞臺。 全雙工與半雙工在串行通信中,數(shù)據(jù)通常是在兩個站(如終端和微機)之間進行傳送,按照數(shù)據(jù)的方向可分成三種基本的傳送方式:
    發(fā)表于 12-14 20:59

    全雙工無線系統(tǒng)的實現(xiàn)

    更高。但是,仍然存在一個很大的限制因素:無線電設(shè)備仍舊無法在一個頻率上同時收發(fā)信號。這種在相同頻率上同時收發(fā)的能力叫做全雙工,對于無線網(wǎng)來說將是一個巨大的進步。它能夠瞬間使網(wǎng)絡(luò)承載數(shù)據(jù)的物理能力,即網(wǎng)絡(luò)
    發(fā)表于 07-11 07:17

    通信基礎(chǔ)知識:單工,半雙工,全雙工

    單工,半雙工,全雙工區(qū)別1.單工數(shù)據(jù)傳輸只支持數(shù)據(jù)在一個方向上傳輸;在同一時間只有一方能接受或發(fā)送信息,不能實現(xiàn)雙向通信,舉例:電視,廣播。2.半雙工數(shù)據(jù)傳輸允許數(shù)據(jù)在兩個方向上傳輸,
    發(fā)表于 09-30 11:37

    求大佬分享一個基于模擬音頻連接器的全雙工數(shù)據(jù)實現(xiàn)方案

    求大佬分享一個基于模擬音頻連接器的全雙工數(shù)據(jù)實現(xiàn)方案
    發(fā)表于 06-03 06:06

    USB音頻如何使用I2S全雙工傳輸

    AT32F403A USB Audio full-duplex演示USB音頻使用I2S全雙工傳輸。
    發(fā)表于 10-27 08:07

    OSD435全雙工視頻/音頻/數(shù)據(jù)光端機

    應(yīng)用場合: 在控制中心和攝像機之間要求全雙工視頻、音頻和/或數(shù)據(jù)傳輸?shù)腃CTV網(wǎng)絡(luò) 交通監(jiān)控網(wǎng)絡(luò) 遠程教育 高品質(zhì)的電視會議系統(tǒng)
    發(fā)表于 12-17 00:25 ?20次下載

    網(wǎng)卡的全雙工

     網(wǎng)卡的全雙工   網(wǎng)卡的全雙工(Full Duplex)是指網(wǎng)卡
    發(fā)表于 12-26 11:47 ?1146次閱讀

    全雙工,全雙工是什么意思

    全雙工,全雙工是什么意思 概念及實例: 單工即Simplex Communication,指在通信過程的任意時刻,信息只能由一方A傳到另
    發(fā)表于 03-17 16:21 ?4361次閱讀

    全雙工傳輸,全雙工傳輸原理是什么?

    全雙工傳輸,全雙工傳輸原理是什么? 全雙工模式(Full-duplex Transmissions)是指同時發(fā)生在兩個方向上的一種數(shù)據(jù)傳輸方式。簡單的解釋就是就像電
    發(fā)表于 03-17 16:22 ?4572次閱讀

    基于LPC1768的全雙工UART的軟件模擬實現(xiàn)

    基于LPC1768的全雙工UART的軟件模擬實現(xiàn)
    發(fā)表于 09-26 09:14 ?14次下載
    基于LPC1768的<b class='flag-5'>全雙工</b>UART的軟件模擬<b class='flag-5'>實現(xiàn)</b>

    如何實現(xiàn)BLE全雙工語音通訊

    在無線藍牙領(lǐng)域,既能滿足超低功耗,又能進行全雙工語音通訊,一直是市場上的需求,比如:無線門鈴,短距離對講機等應(yīng)用。針對BLE語音相關(guān)的應(yīng)用場景,ST推出了FP-AUD-BVLINKWB1這個軟件包供客戶評估。
    的頭像 發(fā)表于 04-14 08:47 ?4422次閱讀

    UM2382_基于BLE全雙工語音流傳輸?shù)腟TM32ODE功能軟件包入門指南

    UM2382_基于BLE全雙工語音流傳輸?shù)腟TM32ODE功能軟件包入門指南
    發(fā)表于 11-22 19:25 ?0次下載
    UM2382_基于<b class='flag-5'>BLE</b><b class='flag-5'>全雙工</b>語音流傳輸?shù)腟TM32ODE功能軟件包入門指南

    雙工全雙工通信模式的比較

    雙工全雙工通信模式的比較? 半雙工全雙工是兩種不同的通信模式,在不同的通信需求下,它們各有優(yōu)劣。下面,我將詳細介紹半雙工
    的頭像 發(fā)表于 01-09 14:00 ?1784次閱讀

    全雙工音頻對講模塊-支持空中升級、多級無線中繼

    SA618F30是一款高集成的大功率全雙工無線音頻模塊,發(fā)射功率高達32dBm。該音頻模塊簡化接口,只需外接音頻功放或麥克風(fēng)即可作為一個小型對講機,方便快捷嵌入到各類手持設(shè)備中。支持多
    的頭像 發(fā)表于 05-08 17:13 ?523次閱讀
    <b class='flag-5'>全雙工</b><b class='flag-5'>音頻</b>對講模塊-支持空中升級、多級無線中繼

    全雙工與半雙工技術(shù)解析

    A到B的同時可以B到A。這種通信方式極大地提高了數(shù)據(jù)傳輸?shù)男屎蛯崟r性。在手機通信中,全雙工模式的應(yīng)用尤為突出,使得電話的兩邊的人在同一時刻都可以說話發(fā)送數(shù)據(jù),實現(xiàn)了真正的雙向通信。 全雙工模式的優(yōu)點在于能夠
    的頭像 發(fā)表于 06-16 10:18 ?767次閱讀