藍牙協議中的SBC編碼


一、從信息的傳輸說起


上圖是一個典型的藍牙耳機應用場景。手機上的音頻信息經過編碼以后通過藍牙協議被藍牙耳機接收,經過解碼以后,藍牙耳機成功獲取手機上的音頻信息,然后再轉化為振動被人耳識別。這是一個典型的數字通信系統,下面是數字通信系統的一般模型。




信源即需要傳輸的信息。
信源編碼即對信源的編碼,目的是為了減少冗余,起到數據壓縮的作用,常見的信源編碼有Huffman編碼、H.264編碼等。
信道編碼的目的是對抗信道中的噪音和衰減,原理是加入冗余,常見的方法包括CRC校驗、卷積碼等。
信道即信息傳輸的通道,典型的有光纖、電磁空間等,信息在信道中進行傳輸時,會受到干擾。
信道譯碼、信源譯碼分別是信道編碼、信源編碼的逆過程。
信宿即消息傳遞的對象。

藍牙耳機信號傳輸過程

對於典型的藍牙耳機應用場景來說,信源就是PCM數據,信道編解碼的方法由藍牙協議來指定,信道即耳機和手機之間的電磁空間。
信源編解碼即對音頻數據編解碼的過程,SBC編解碼其中的一種編解碼方法。
藍牙協議規定所有的藍牙設備都必須支持SBC編解碼,並提供了其他一些可選的編解碼方法,如AAC。由此可知,SBC和AAC、MP3類似,都是對音頻數據進行編碼的方法,目的都是數據壓縮

二、SBC的原理

SBC是subband codec的縮寫,中文叫做次頻帶編碼,也叫子帶編碼。其基本原理是把信號的頻率分為若干子帶,然后對每個子帶進行編碼,並根據每個子帶的重要性及特點分配不同的位數(采樣深度)來表示數據。
例如,在音頻編碼中,由於人耳對不同頻率的敏感度不同,可以在對人耳敏感的子帶使用較細的量化(較大的采樣深度),對人耳不敏感的子帶使用較粗糙的量化(較小的采樣深度),從而在不降低主觀聽覺效果的情況下達到較好的壓縮效果。
又例如,離散余弦變換(DCT)時一種處理數字信號的方法,廣泛應用有語音和圖像壓縮。聲音經過離散余弦變換(DCT)以后,其系數更多的集中在較低序號的部分。對變換后的高序號部分的編碼就很簡單,可以用很小的采樣深度對其進行編碼。

上圖是變換前的信號,下圖是DCT變化以后的序號,變換后適合子帶編碼。

三、SBC編碼過程


SBC編碼的輸入是PCM數據,即采樣后的時間序列,輸出是二進制流。
時間序列經過分析過程,轉化為頻域信號,然后對頻域信號分段編碼。為每一個子頻段指定一個scalfactor及采樣深度,對這個子頻段的數據進行自適應PCM編碼(Adaptive Pulse Code Modulation)。然后把各個子頻段編碼后的數據打包,作為一幀數據,以二進制流的方式輸出。

  1. Analysis Filter
    其目的是為了把時間序列變換到頻域,使用的方法是多相濾波器組。子頻段的個數可以是4個或8個,對應不同的多相濾波器組。
  2. Scale Factors計算
    每一個子頻段的幅值的范圍是不同的,取每一個子頻段幅值的最大值作為這個子頻段的scale factor。比如子頻段1的幅值分布在(0, 128)區間,子頻段2的幅值分布在(0, 32)區間,那么自定子頻段1的scale factor為128, 子頻段2的scale factor為32。
  3. Bit Allocation
    每一個子頻段有若干幅值需要編碼,每個幅值需要用若干比特數來表示。同一個子頻段中每個幅值的比特數相同,不同子頻段幅值分配的比特數不同。為每個子頻段分配幅值比特數的過程叫做bit allocation。
  4. APCM
    根據每個子頻段的scale factor及每個幅值需要的比特數,對每一個子頻段進行編碼的過程。得到每個子頻段的量化結果,即Quantized Subband。
  5. BItStream packing
    把每個子頻段編碼后的結果組合起來,加上校驗碼、幀頭信息等的過程。

四、SBC解碼過程


SBC解碼過程是編碼過程的逆過程,其輸入是二進制流,輸出是PCM數據。
首先對二進制流進行解包,得到一幀一幀的數據。每一幀中都包含子頻段數(4或8)、每個子頻段的scale factor、每個子頻段幅值需要的比特數,根據這些信息及每個子頻段編碼之后的數據,重建(Reconstruction)子頻段的編碼前的數據。然后經過逆向的多相濾波器組,得到原始的PCM數據。將所有子頻段的PCM數據合並,得到解碼后的PCM數據。

五、關於SBC編碼的一些性質

  1. SBC是有損編碼
    由於無線傳輸的帶寬有限,SBC在對每個子頻段進行編碼時,進行了有損處理,以達到數據壓縮的目的。即經過SBC編解碼以后,PCM數據發生了變化。因此藍牙設備的音質不是很好。
  2. SBC支持的采樣率
    包括44.1kHz、48kHz、32kHz、16kHz。
  3. SBC支持的聲道
    支持單聲道(MONO CHANNEL)、雙聲道(DUAL CHANNEL)、立體聲(stereo)、聯合立體聲(Joint Stereo)。

參考鏈接

  1. de Bont F, Groenewegen M, Oomen W. A high-quality audio coding system at 128 kb/s[C]//Audio Engineering Society Convention 98. Audio Engineering Society, 1995. MLA
  2. 奧本海姆, 謝弗, 巴克, 等. 離散時間信號處理: Discrete-time signal processing[M]. 西安交通大學出版社, 2001.
  3. A2DP - Advanced Audio Distribution Profile - Bluetooth
  4. 顧學邁, 石碩, 賈敏. 信息與編碼理論 : Information and coding theory[M]. 哈爾濱工業大學出版社, 2014.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM