DIY之樂:基于PIC32的以太網音箱設計案例,硬件框圖、器件選型、數據結構、軟件流程
2相關技術和原理
2.1相關技術
2.1.1 MP3
MP3全稱是動態影像專家壓縮標準音頻層面3(Moving Picture Experts Group Audio Layer III)。是當今較流行的一種數字音頻編碼和有損壓縮格式,它設計用來大幅度地降低音頻數據量,而對于大多數用戶來說重放的音質與最初的不壓縮音頻相比沒 有明顯的下降。它是在1991年由位于德國埃爾朗根的研究組織Fraunhofer-Gesellschaft的一組工程師發明和標準化的。
使用PCM信號進行MP3壓縮時,以1152個PCM采樣值為單位,封裝成具有固定長度的MP3數據幀,幀是MP3文件的最小組成單位。在解碼時,利用數據幀里的信息就可以恢復出1152個PCM采樣值。這1152個采樣值被分為2個粒度組,每個粒度組包含576個采樣值。一個MP3數據幀分為5個部分:幀頭、CRC校驗值、邊信息、主數據、附加數據。
數據流的同步以及幀頭信息的讀取MP3數據流的同步以幀為單位,每一幀的幀頭都包含同步信息。這個同步信息是連續的12比特的‘1’組成。MP3音頻解碼過程中的第一步就是使解碼器與輸入數據流同步。在啟動解碼器后,可以通過搜索數據流中的12比特長的同步字來完成。在取得同步以后跟著的數據就是幀頭信息,包括采樣率、填充位、比特率等信息。
主數據的讀取在MP3編碼過程中使用了比特池技術,所以當前幀的主數據不一定全部都在當前幀中,在解碼過程中,必須結合主數據開始指針的值來確定主數據的開始位置。主數據包含的數據有縮放因子、哈夫曼數據及附加數據。這些字段在主數據中有固定的格式。
哈夫曼解碼和反量化在MP3編碼過程中,根據心理聲學模型的輸出,對離散余弦變換的輸出樣本以粒度為單位進行的量化和分配,再對量化的結果進行哈夫曼編碼。量化和編碼主要是通過循環迭代完成的,循環模塊分為三層來描述,最高層為幀循環,它調用外層迭代循環,而外層迭代循環又調用內層迭代循環。但在解碼過程中,哈夫曼解碼和反量化過程是分開實現的。每個粒度組的頻率線都是用不同的哈夫曼表來進行編碼的,因此在解碼過程中,需要采用不同的解碼方法。反量化頻譜過程就是基于所得到的哈夫曼解碼數據,根據逆量化全縮放公式和幀邊信息,對于不同的窗類型采用不同的公式以恢復576個頻率線的真實值。
反量化過程中得出的頻譜值不是按相同順序排列的。在編碼的MDCT過程中,對于長窗產生的頻譜值先按子帶然后按頻率排列;對于短窗,產生的頻譜值按子帶、窗、頻率的順序排列。為了提供哈夫曼編碼效率,短窗中的數據被重新排列,按照子帶、頻率、窗的順序排列。解碼時,重排序及時將短窗中的頻譜值重新排列。同樣,在編碼的MDCT過程中,為了得到更好的頻域特性,對長窗對應每個子帶進行了去混疊處理,為了得到正確的音頻信號,在解碼時必須對長窗對應的子帶進行混疊重建。
逆向離散余弦變換主要是使用逆向離散余弦變換的公式,對反量化得出的信號進行變換。逆向離散余弦變換的計算十分復雜,為了提高效率,可以對計算做一些優化。
頻率反轉和子帶合成頻率反轉是對逆向離散余弦變換的輸出值中的奇數號子帶(0到31號子帶中的1,3,5,...,31)中的奇數號樣本值(每個子帶中的 0到17號樣本值的1,3,5,...,17號樣本值)進行反相處理,用來補償編碼時為提高離散余弦變換效率而進行的頻率反轉。子帶合成濾波器將32個帶寬相等的子帶中的頻域信號反變換成時域信號。子帶合成是逆向離散余弦變換后的一個通道中32個子帶的樣值,經過一系列的計算還原出32個PCM數字音頻信號的過程。子帶合成過程先將32個子帶樣值進行逆向離散余弦變換,生成64個中間值,將這64個中間值轉入到一個長為1024點的類似先進先出FIFO的緩存,再在這1024個值中抽取一半,構成一個512個值的矢量,再進行加窗運算,最后將加窗結果進行疊加生成32個時域輸出。
DIY機械鍵盤相關社區:機械鍵盤DIY
模擬信號相關文章:什么是模擬信號
數字通信相關文章:數字通信原理
評論