低功耗藍牙被業界廣泛認為是實現物聯網(IoT)應用願景的關鍵技術。事實上,極低的功耗使其成為電池供電的物聯網產品理想的無線通訊解決方案,儘管目前低功耗藍牙技術規範還是局限於幾種特定應用,但是,創新的解決方案可促使這項技術拓展到不同的應用領域,例如多媒體串流。
本文將介紹名為BlueVoice的低功耗藍牙設備語音串流應用。內文從支援語音串流服務所需的擴展服務開始介紹BlueVoice應用,然後在實際硬體設備上評估BlueVoice的性能。在所選的硬體平台上,BlueVoice應用完全支援語音串流服務,同時避免能源浪費。
實現萬物互聯 低功耗藍牙扮要角
經歷過去幾十年的快速成長,網際網路幾乎滲透到人類社會日常生活的各個方面。未來網際網路將擴展到萬物互聯,數十億甚至數百億個有唯一身份的「物件」透過無線通訊與人類和周圍環境交互,執行高級任務。在這一構想中,物件可能是感測器、致動器、家電或玩具等。總之,可以是任何能夠被識別的虛擬或實體物件,這種網際網路演進構想被稱為物聯網(IoT)。
物聯網概念是透過標準協議解決方案(即網際網路協定)和無線通訊介面,把所有產品設備連接在一起,組成一個全球網路。實現萬物互聯,雖然可以使用現有高傳輸量的射頻通訊技術,但是當物聯網產品是部署在現場的自主型電池供電裝置時,低功耗無線通訊技術才會是最適合的通訊解決方案。在這個方面,低功耗藍牙(BLE)技術被視為最有效的物聯網通訊解決方案,同時正在融入網際網路世界。
在今日的物聯網應用中,低功耗藍牙解決方案主要用於生命參數監控用途。除傳統的監控服務外,近幾年業界開始探索基於其它技術的先進應用。例如基於IEEE 802.15.4的網路語音通訊。在這個方面,透過低功耗藍牙傳輸多媒體資料還是處於起步階段,缺少可用的解決方案。主要是因為最初設想時未考慮到這些應用(例如最初主要考慮的是醫療、健身等應用)。
本文以在低功耗藍牙設備上支援語音串流服務的BlueVoice應用為例,探討如何解決這些技術限制問題。首先瞭解低功耗藍牙技術,然後詳細介紹支援該新應用概念所需的擴展服務,再介紹應用設計,最後在STM32 Nucleo L476板上測試實際性能。
低功耗藍牙技術概述
低功耗藍牙規範於2010年寫入藍牙4.0核心規範,儘管與基本藍牙相似,但是低功耗藍牙規範主要是為超低功耗應用設計開發。透過低功耗藍牙技術連接電池供電設備的潛在應用非常少,醫療、健身和智慧家居是其中僅有的幾例。
如圖1所示,低功耗藍牙協議堆疊總體結構主要由兩個部分組成:控制器和主機。應用軟體使用協議堆疊主機層的協議提供的服務。主機層分為五層:邏輯鏈路控制和適配協議(L2CAP)、屬性協定(ATT)、通用屬性設定檔(GATT)、安全管理協議(SM)、通用存取設定檔(GAP)。控制器部分只有兩層:實體層(PHY)和鏈路層(LL)。如圖1所示,主機-控制器(HCI)介面是控制器與主機的通訊通道。
|
圖1 低功耗藍牙協議堆疊 |
實體層負責比特調製,透過無線通道收發資料。最高資料速率是1Mbit/s,典型通訊距離是幾十公尺。
鏈路層規定兩個設備之間雙向通訊的功能。低功耗藍牙節點有兩個角色:主設備和從設備。通常是主設備(例如筆記型電腦、智慧型手機)搜索從設備(如體感設備);必要時,從設備向主設備發送資料。從設備通常處於睡眠狀態,並在固定間隔內喚醒,以便被主設備搜到。
在鏈路層之上,邏輯鏈路控制和適配協議(L2CAP)有兩個主要功能。該協議的主要作用是提供多路傳輸功能,按照標準低功耗藍牙分組資料格式,封裝轉換頂層多協定資料。安全管理協議(SM)和通用存取設定檔(GAP)分別提供資料安全和服務管理功能。詳細的說,安全管理協定定義金鑰的生成方式,以及如何在兩個設備(主從設備)之間交換金鑰,建立安全加密通訊通道,而通用存取設定檔則規定兩個設備如何在底層交互操作。
屬性協定(ATT)和通用屬性設定檔是開發新應用時需要重點考慮的兩個協定元件。屬性協定是一個無狀態的客戶機/伺服器協定,當不考慮設備的底層角色是主設備還是從設備時,每個設備都可以設為伺服器、客戶機或是客戶機兼伺服器。客戶機請求伺服器資料發送資料,伺服器向客戶機發送資料,資料以屬性的形式保存在伺服器內,每個屬性都含有GATT管理的資料,而且該資料被分配一個通用唯一識別碼(UUID)。
透過一個L2CAP專用通道,屬性協定在伺服器屬性與客戶機之間建立一條通訊通道。通用屬性設定檔(GATT)在屬性協定層添加一個資料抽象模型,負責搜索屬性協定保存的資料,在兩個設備之間交換特徵。每個低功耗藍牙設備都有一套可能屬性(儲存服務)和特徵(與儲存服務相關的屬性)。如果在低功耗藍牙堆疊上建立一個新應用,則必須定義屬性和特徵。某一特定應用的特徵、屬性和底層規範合稱設定檔,標準設定檔可保證不同品牌的產品能夠互聯互通。
BlueVoice服務定義
以下內容將介紹BlueVoice應用,首先定義語音通訊低功耗藍牙設定檔,然後討論所涉及設備的通訊角色、音效處理和壓縮選擇、資料分組問題和頻寬要求。我們提出兩個在音效採集和功耗方面不同的系統組態,以滿足不同的應用要求。本文最後一部分介紹在一個實際硬體設備上實現的BlueVoice應用,然後比較並討論實際測量到的應用性能,例如功耗、記憶體佔用、處理性能要求和自動語音辨識(ASR)性能。
考慮到音效串流應用範例不屬於低功耗藍牙標準設定檔,為實現語音串流服務,BlueVoice應用在低功耗藍牙協議堆疊上,定義了一個叫做BlueVoice Service(BVS)的「廠商專用設定檔」,指定了伺服器與客戶機之間交換語音資料的方式。
如前文所述,屬性協定ATT是通用屬性設定檔GATT在不同設備之間交換資料的傳輸協定,屬性是ATT定義的最小實體,是可定址的資訊段(內建UUID標識碼),可能含有使用者資料或關於屬性本身架構的資訊,例如許可權、加密和授權屬性。
GATT伺服器屬性按特定順序組成一個服務序列,序列開始部分是服務聲明屬性,後面跟一個或多個特徵和可能的描述符。每個特徵都是一個被披露的屬性。除標準設定檔UUID外,在客製化應用中,開發人員可使用獨有的和廠商專用的UUID開發有自己特徵的新服務,BlueVoice應用就是這種情況。考慮到單向音效串流系統不對稱性,伺服器透過BVS設定檔向客戶機/伺服器披露資料類型和格式以及存取方式。BVS服務包含下列屬性,如圖2所示。
|
圖2 BlueVoice服務(BVS)定義 |
* UUID:標準16位元UUID,用於主服務聲明(0x2800)。
* 許可權:讀
* 數值:獨有128位元BVS UUID。
* UUID:標準16位元UUID,用於特徵聲明(0x2803)。
* 許可權:讀
* 數值:獨有128位元音效UUID,僅用於通知,Handle:0x012。
* UUID:獨有128位元音效UUID
* 許可權:無
* 數值:實際音效資料
* UUID:標準16位元UUID,用於特徵聲明(0x2803)。
* 許可權:讀
* 數值:獨有128位元同步UUID,僅用於通知,Handle:0x0015。
* UUID:獨有128位元同步UUID
* 許可權:無
* 數值:實際同步資料
根據該標準,主服務聲明是服務的第一個屬性,其數值域包含該聲明引入的UUID定義。BlueVoice應用聲明使用一個128位元獨有的UUID(BVS UUID)。BVS包含兩個特徵,分別叫做音效(Audio)和同步(Sync)特徵。
在低功耗藍牙規範中,每個特徵至少包含兩個屬性,分別是特徵聲明和特徵數值。特徵聲明以中繼資料的形式定義其屬性,特徵數值則是包含實際特徵資料。在BlueVoice情況中,音效和同步特徵都包含一個單一的由獨有128位元UUID定義(AudioData和SyncData UUID)的屬性,分別含有實際音效資料和邊資訊同步數值。
音效和同步特徵聲明將AudioData和SyncData屬性定義為「僅通知」,未取得客戶機/伺服器的讀寫許可權,表示音效資料和同步資料只以通知的形式傳輸,伺服器不答覆客戶機。為與低功耗藍牙服務的分層架構一致,其它特徵可能會增加到未來發佈的BlueVoice應用。
BlueVoice應用設計
以下主要介紹BlueVoice應用設計的低功耗藍牙通訊及音效處理。
低功耗藍牙通訊
按照低功耗藍牙協議,通訊可以是多點廣播,也可以是點對點連接。BlueVoice應用鏈路層使用連接通訊模式,在兩個設備之間建立永久性的點對點連接,這兩個設備扮演兩個不同的角色:中央設備和周邊設備。中央設備又稱主設備,支援與周邊設備(從設備)相關的複雜功能。中央設備是發起通訊連接,執行自我調整跳頻,資料加密,管理通訊時序,定義設備間資料交換方式。
該角色分配符合低功耗藍牙的非對稱設計概念,為能效要求高的設備分配更少的工作任務。電池供電的可攜式裝置通常是從設備,不過,必須說明的是,根據規範,每個設備在每個連接事件發生時可單獨發送資料,且角色不在資料輸送量上強加限制或優先權。考慮到半雙工通訊情況,BlueVoice應用可運行在自主的電池供電無線感測設備上,且這些設備配備麥克風(和最終標量感測器,如典型物聯網概念中無處不在的監控應用),因此,角色分配不再與收發功能有關。
在鏈路層之上,GATT層定義互動設備的客戶機和伺服器角色,與前文描述的主設備和從設備無關。伺服器是提供資訊的設備,而客戶機是請求或接收最新資訊的設備。考慮到單向音效串流是非對稱系統,裝備麥克風的設備是唯一有語音資訊的設備,因此可將其視為通訊伺服器,另一個設備是客戶機,向伺服器發送資訊請求,並接收伺服器發起的含有語音資料的更新資訊。
在雙向通訊系統中,語音資料是雙向傳輸,架構是對稱的,中央設備和周邊設備都配備麥克風,都可以充當伺服器,輸出任何屬性格式的音效資料。同時,伺服器也能充當客戶機,發送資訊請求,並接受另一個設備發送的更新資訊。
雙向語音資料流程是基於伺服器以固定間隔向客戶機發送通知,不需要接收設備發送請求或回復訊號。從設備在上電階段進入廣播模式,以低頻發送廣播資料包,主設備進入搜索模式,掃描是否有其它設備存在,反之亦然。收到廣播資料包代表主設備發現了相關從設備,然後,主設備發送一個連接請求。在連接建立過程結束後,按照所選的通訊傳輸方向:中央設備至周邊設備或周圍設備-中央設備,以固定間隔從伺服器向客戶機發送含有音效資料的非同步通知資料包。圖3所示是BlueVoice在GATT層的角色分配。
|
圖3 BlueVoice設定檔角色分配 |
音效處理
BlueVoice的音效處理目的為根據應用所選的接收端上,取得8kHz或16kHz的目標音效採樣。事實上,對於低功耗要求極其嚴格但是對音質要求不高的應用場景,例如,毋需人耳聽清楚的自動語音辨識服務輸入音效,8kHz取樣速率可能是一個不錯的選擇。
使用自我調整差分脈衝碼調製演算法壓縮低功耗藍牙音效廣播訊號,可使音效訊號適用於現有的資料傳輸速率,同時最大幅度地縮減射頻傳輸時間及功耗。採用數位MEMS麥克風設計一個全數位解決方案,尺寸和音質等特性使其適用於無線感測器設備。圖4所示是16kHz取樣速率的完整語音處理鏈。該解決方案首先採集數位MEMS麥克風生成的1MHz的1位元脈衝密度調製(PDM)訊號,並將其轉換成16kHz的16位元脈衝碼調制(PCM)採樣,然後以16000個採樣/秒的取樣速率,再將其壓縮成4位元ADPCM採樣訊號,並準備發送。
|
圖4 16kHz 配置的BlueVoice資料傳輸鏈 |
此外,以較低的頻率發送邊資訊同步資料,所需頻寬是64kbit/s音效資料與300bit/s同步資訊的總合,總計64.3kbit/s。對於8kHz取樣速率,最終ADPCM取樣速率是8000個採樣/秒,導致31.3kbit/s頻寬需求,包括邊資訊。
MEMS麥克風的電容式感測器生成的類比訊號經放大和高速率採樣後,交由整合量化和雜訊修整操作的內部Sigma-delta調製器處理,輸出的資料是一個單一的高取樣速率的PDM格式比特,PCM轉換是從PDM到無線通道發送壓縮音效資料的整個處理鏈的中間環節。
為了把PDM串流轉換成PCM資料,須要使用一個抽取濾波器和兩個可單獨配置的濾波器(低通濾波器和高通濾波器。該處理模組輸出16位元PCM格式採樣串流。按照所選採樣頻率,採用一個不同配置的抽取濾波器,以取得16位元PCM資料採樣。
ADPCM編碼模組壓縮PCM採樣,透過減少資料包傳輸量,節省傳輸頻寬,降低功耗,如前文所述,ADPCM是一個用於損耗波形編碼的壓縮演算法,其基本原理是根據上一個數值預測當前數值,只傳輸自我調整量化步驟量化的實際值與預測值的差值。
存在諸多可選壓縮標準,卻單單選用ADPCM標準,是因為它是基於波形編碼方法,與基於聲碼器的複雜解決方案相比,更適用於感測器網路設備(通常基於微控制器)。在BlueVoice應用中,每個16位元PCM採樣都壓縮成4位元ADPCM資料,這樣所需的應用傳輸頻寬是32 kbit/s或64kbit/s,至於具體速率取決於採樣頻率,而且相容低功耗藍牙串流媒體功能。
如前文所述,BlueVoice應用的總體頻寬實際需求高於32kbit/s或64kbit/s的理論值,這是因為BlueVoice為提高通訊穩健性,在透過通道發送資料時增加了附加資訊。16kHz配置採用10ms連接間隔,而8kHz配置採用25ms連接間隔。事實上,如果被傳輸的資料量較少,可提高連接間隔數值,從而節省能源。
為盡可能地利用每個資料包現有有效載荷,語音資料包發送二十個位元組。因此,在16kHz配置中,語音資料每10ms發送四個資料包,而在8kHz配置中,語音資料每20ms發送四個資料包,結果傳輸頻寬分別是64kbit/s和32kbit/s。發送器的邊資訊發送頻率較低,每160ms發送一個6位元組的附加包,對應十六個或八個連接間隔。圖5描述了低功耗藍牙協議堆疊上的資料分組總體策略。透過音效特徵,每10ms或20ms連接間隔,發送四個語音資料包(每包20位元組),而發送器邊資訊的發送是,透過同步特徵,每160ms間隔發送一個附加資料包。
|
圖5 BlueVoice資料分組機制 |
BlueVoice實際硬體應用
為了在支援低功耗藍牙通訊之實際硬體無線感測器網路平台上評估BlueVoice可行性,本次試驗在實際硬體設備上實現了前文所描述之應用軟體的全部功能。
所選硬體平台為意法半導體的STM32 Nucleo L476開發板,這是一個基於STM32L476 80MHz 32位元ARM Cortex-M4微控制器的開放式開發平台。選擇此一開發板的原因是,板載微控制器的性能高於普通無線感測器網路平台,同時還具備較高的靈活性和多功能性。該開發板配備很多介面和擴展排針,插接專用擴展板擴大板子功能簡單容易,方便設計人員研究、開發和驗證新創意。
值得一提的是,STM32L4微控制器具有市場領先的低功耗特性,其內建數位濾波器配合Sigma-Delta調製器(DFSDM)周邊設備,可實現圖4的PDM至PCM的格式轉換,這些特性使其特別適合BlueVoice應用。透過在STM32Nucleo開發板上接插一塊低功耗藍牙連接板和一塊麥克風擴展板,BlueVoice中央模組和周邊模組可以組成一個基於STM32Nucleo的對稱硬體設定,展示一個半雙工通訊通道。
低功耗藍牙連接板基於意法半導體的BlueNRG,BlueNRG是一個超低功耗的低功耗藍牙單模網路處理器,相容藍牙規範4.0版,可設為主設備和從設備模式,當低功耗藍牙協議堆疊啟動時,資料傳輸最大電流8.2mA,可降至1.7μA。附加的麥克風擴展板用於採集語音訊號,基於意法半導體的MP34DT01數位萬向MEMS麥克風,聲學超載點120dBSPL, 訊號噪音比63dB,靈敏度-26dBFS。MP34DT01採用一個容式感測器和一個內建Sigma-delta調製器和雜訊修整機制的積體電路,提供1∼3.25MHz的PDM輸出。
|
圖6 BlueVoice框圖 |
圖6是實際硬體設備的框圖,STM32微控制器透過與周邊設備模組DMA相連的DFSDM模組採集麥克風的PDM採樣輸出,同時透過一套專用應用程式介面(API)和串列周邊設備介面(SPI)與BlueNRG模組通訊,對於中央模組和周邊模組,模組化架構是對稱的。框圖中還有一個USB音效介面,用於向個人電腦提供重構的音效訊號。圖7是硬體設備的實際原型。
|
圖7 發送器和接收器原型 |
BlueVoice功耗/性能/記憶體需求
本文以描述的實際系統作為實驗平台,評估BlueVoice應用的功能、記憶體佔用、性能需求和ASR識別率。特別是考慮到現場部署一系列微型無線麥克風模組的應用場景和低功耗藍牙本身的非對稱性(從設備-周邊設備模組必須尺寸緊湊且功耗極低),本章討論的性能評估主要討論8kHz和16kHz兩種配置的從設備-周邊設備模組的功耗、記憶體佔用和性能需求。此外,在接收端測量的ASR性能是另一個性能評估指標,實際上,該參數可能是語音通訊的一個重要的音質指標,對於新興的聲控應用(遙控器、物聯網產品)具有重要意義。
如前文所述,將BlueVoice應用實現在一個硬體設備上,該硬體設備使用意法半導體之STM32 Nucleo開發板充當主機,並使用低功耗藍牙網路模組充當控制設備。表1列出在BlueVoice的廣播、連接和傳輸三個不同狀態下,主機和控制設備(STM32和BlueNRG)的功耗值。這些資料是在3.3V工作電壓時的測量值,對8kHz和16kHz配置的功耗進行比較。必須強調的是,微控制器功耗完全取決於硬體特徵和低功耗配置,因此,微控制器功率是在計算總功耗時加在總功耗中與平台相關的數值。表中所列數值可視為一個指示性參考值,可能會隨實際應用情況而發生變化。
按照低功耗藍牙標準,在兩個節點之間建立連接前,從設備是處於廣播模式,而主設備則是進入掃描模式。當主設備收到廣播資料包,發現從設備存在時,就立即建立連接。在BlueVoice解決方案中,考慮到一個周邊設備模組對中央模組的通訊,周邊設備節點是發送器(伺服器),而中央節點是接收器(客戶機):伺服器以固定周期向客戶機發送通知。
對於8kHz配置中,在廣播階段,發送器周邊設備模組(STM32+ BlueNRG)總平均功耗極低,只有3.50mW,當建立連接時,功耗是3.98mW。對於16kHz配置,廣播階段功耗是8.22mW,而連接階段是9.48mW。這裡應著重指出的是,連接階段的功耗與連接間隔選擇關係密切,這也是8kHz和16kHz配置(分別是20ms和10ms)的主要區別。在這兩情況中,連接間隔設為接近標準規定的最小值(7.5ms),以確保傳輸延遲最小。
一旦連接建立,BlueVoice應用立即進入傳輸狀態,8kHz配置的平均功耗是10.07mW,16kHz配置的平均功耗是19.84mW,因此,基於STM32+ BlueNRG的物聯網節點,假設電池容量是200mAh,在連續傳送資料流程時,兩種配置的理論續航時間分別是約65小時和33小時。這些功耗值表明BlueVoice方法的適用於以低功耗藍牙為載體的音效串流,特別是8kHz配置,可大幅降低功耗。
除分析功耗外,透過考慮記憶體佔用情況,本文還評估了應用的可行性。如表2所示,BlueVoice應用軟體兩種配置佔用快閃記憶體空間相同(21.85kB),但是,8kHz配置佔用13.32kB的RAM空間,而16kHz配置只佔用7.86kB的RAM空間。兩種配置佔用RAM空間不同的原因是,為降低該解決方案的額外開銷和功耗,8kHz和16kHz分別每20ms和10ms執行音效處理步驟(PDM轉PCM和ADPCM壓縮),從而導致8kHz配置在兩個連續步驟之間儲存的資料變大。在這兩種情況中,這些數值十分符合資源受限的系統要求。
BlueVoice在功耗、處理性能和記憶體佔用方面表現出的可行性並不能保證語音訊號品質在接收端達到可以接受的水準,在BlueVoice解決方案性能評估最後,我們利用一個網路ASR服務進行了大量的傳輸測試,在接收端測量ASR性能。
16kHz USB麥克風和8kHz/16kHz BlueVoice系統以並行方式記錄若干個包含已知英文單詞的音效採樣(作為參考),並將其傳輸到ASR引擎,表3列出了不同解決方案的單詞識別率比較測試結果。測試結果證明,ADPCM壓縮沒有降低訊號品質,因此適合ASR應用。BlueVoice 16kHz配置的性能十分接近USB麥克風,而8kHz系統的性能稍有降低(18%),適用於低功耗要求極嚴的應用。事實上,8kHz系統以16kHz配置50%的功耗取得了相同的ASR性能。
BlueVoice實現高音質/低功耗
本文介紹以低功耗藍牙為載體傳送音效串流的解決方案,首先介紹一個廠商專用的半雙工通訊低功耗藍牙設定檔,然後介紹BlueVoice應用設計,並討論了涉及設備的通訊角色、音效處理和壓縮編碼選擇、資料分組和頻寬需求。BlueVoice應用由一個中央節點和一個周邊設備節點組成,按照所選通訊方向,分別充當低功耗藍牙的伺服器和客戶機。
在連接建立後,伺服器按固定周期向客戶機發送通知。本試驗針對8kHz和16kHz兩個沒配置進行比較,在發送器節點上,MEMS麥克風的數位PDM格式輸出訊號被採集並轉換成PCM格式,然後壓縮成ADPCM資料,最終在低功耗藍牙連結上產生32或64kbit/s的藍牙頻寬。該設定檔還定義一個低頻邊資訊機制,雖然需要一些額外的頻寬,但是提高了錯誤抑制功能。
為評估解決方案的性能,BlueVoice被實現在實際硬體設備上。該設備是由MEMS麥克風和STM32微控制器組成與網路模組組成的全數位系統,前者充當主機,後者充當低功耗藍牙控制器。本文中的性能評估表明提出的解決方案在功耗、處理性能和記憶體占用方面適用於低功耗語音流應用。特別是在8kHz和16kHz音效串流傳輸過程中,感測器設備的功耗測量值分別為10.07mW和19.84mW,記憶體占用和性能需求完全可接受。
此外,試驗還測量了音效品質指標ASR性能,8kHz配置和816kHz配置的單詞識別率分別達到67%和82%,而16kHz USB麥克風的識別率達到85%,這表明BlueVoice應用能夠在接收端達到非常高的音質,並具有極低的功耗。
(本文作者皆任職於意法半導體)