新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于短時能量和短時過零率的VAD算法及其FPGA實現

        基于短時能量和短時過零率的VAD算法及其FPGA實現

        作者:李昱 林志謀 黃云鷹 盧貴主 廈門大學 時間:2008-06-19 來源:電子設計應用 收藏

          語音激活檢測(Voice Activity Detection)是一種通過特定的判決準則判斷語音中出現的停頓和靜默間隔,檢測出有效語音部分的技術。運用這種技術可以在確保語音質量的前提下,對不同類別的語音段采用不同的比特數進行編碼,從而降低語音的編碼速率。由于在雙工移動通信系統中,一方只有35%的時間處于激活狀態[1],如何降低靜音期的編碼速率對于減少傳輸帶寬、功率以及容量具有積極的作用,因此技術在語音通信領域具有重要的使用價值。隨著適合于變比特率語音編碼的CDMA和PRMA等多址技術的出現,應用于蜂窩的語音激活檢測的重要性也隨之提高[2]。

        本文引用地址:http://www.104case.com/article/84500.htm

          由于語音通信的特殊性,要求檢測過程能達到實時性的要求。而目前主流DSP芯片的并行度并不高,因此在實時處理的要求下,保證語音質量和降低語音的編碼速率兩者難以兼顧。而現場可編程門陣列()由于其硬件具有可編程的靈活性,可以實現較高的并行度,從而可以在滿足實時性要求的前提下,很好地保證語音質量并降低語音的編碼速率。

          1 算法及檢測流程

          1.1 算法簡述

          語音激活檢測算法可以基于時域或頻域。本文采用的算法是時域分析的方法。算法對于輸入信號的檢測過程可分為檢測和檢測兩個部分。算法以檢測為主,檢測為輔。根據語音的統計特性,可以把語音段分為清音、濁音以及靜音(包括背景噪聲)三種。在本算法中,檢測可以較好地區分出濁音和靜音。對于清音,由于其能量較小,在短時能量檢測中會因為低于能量門限而被誤判為靜音;則可以從語音中區分出靜音和清音。將兩種檢測結合起來,就可以檢測出語音段(清音和濁音)及靜音段。

          1.2 檢測流程

          檢測流程:對輸入信號先進行高通濾波,減弱以噪聲為主的信號能量。接著進行窗長為80個數據的加窗處理,然后計算該幀的平均能量,再利用短時能量進行初判。若平均能量大于門限則判為語音幀,若平均能量小于門限則判為靜音幀。對于初判為靜音幀的幀再進行VAD平滑,即參考前三幀的情況:如果前三幀中至少包含一幀非平滑過的語音幀,則將該幀平滑為語音幀,同時記錄下該幀為平滑所得的語音幀;反之,則判斷為靜音幀。如果平滑結果仍為靜音幀,且當前幀的過零率介于30~70之間時,則改判為語音幀;反之則仍判為靜音幀[3]。VAD算法的檢測流程圖如圖1所示。

          此外,由于人耳的聽覺具有掩蔽效應,因此有必要對短時能量門限進行更新[3]。本算法所采用的門限更新方式是:如果連續檢測到三幀語音,為了更好地檢測到靜音,將短時能量門限提高3dB,但如果提高后的門限超過當前幀的平均能量減12dB,則不提高門限;如果連續檢測到三幀靜音,為了更好地檢測到語音,將短時能量門限降低3dB,但如果降低后的門限小于當前幀的平均能量加12dB,則不降低門限。此外,為了防止門限變得太高或降得太低, 還應把門限限制在GATE_MIN、GATE_MAX范圍內。

          2 系統實現及優化

          本設計采用QuartusII以及ModelSim進行開發(ModelSim是Mentor Graphics公司的仿真軟件)。QuartusII是Altera公司的一套開發/CPLD的EDA軟件,可以完成從設計輸入、功能仿真、綜合優化、后仿真、引腳配置、布局布線到配置芯片的一系列/CPLD的開發流程,并提供調用其他EDA工具,如ModelSim、Synplify/Synplify Pro、FPGA Complier的接口。

          本設計的輸入為16位PCM編碼的數字語音信號,輸出是每80個數據為一幀的語音信號的檢測結果,其中高電平表示語音,低電平表示靜音。根據所用算法的特點,將本設計劃分成五個模塊:模塊、高通濾波模塊、平均能量模塊、判決模塊以及控制模塊。系統結構框圖如圖2所示。

          2.1 模塊

          輸入的語音信號的采樣率為8kHz,如果將8kHz作為系統的時鐘頻率,極大地削弱了FPGA芯片的速度優勢。因此系統需要兩個時鐘,一個是頻率為8kHz的采樣時鐘,另一個為系統主時鐘。

          在FPGA設計中,多時鐘設計會帶來不穩定的隱患。為了提高系統的穩定性,本設計采用一個雙口的作時鐘隔離。FIFO模塊具有16位的數據輸入口及16位的數據輸出口、8kHz時鐘輸入口以及系統主時鐘輸入口。此外,由于FIFO的讀速度大于寫速度,因此當FIFO為空時,需要輸出一個empty信號。

          在高通濾波、平均能量計算、判決、控制這四個模塊中均可采用單時鐘設計,而且所使用的時鐘均為系統主時鐘。

          2.2 模塊

          對輸入信號進行高通濾波的預處理。高通的傳輸函數采用CS-ACELP算法所使用的傳輸函數[4]:


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 宜宾县| 兰溪市| 安新县| 兰州市| 兴仁县| 永修县| 黄龙县| 栖霞市| 铜山县| 南郑县| 曲周县| 大英县| 赫章县| 彭水| 铜山县| 寻乌县| 古蔺县| 来宾市| 安顺市| 富顺县| 静宁县| 衡山县| 固镇县| 石首市| 盐城市| 手游| 甘泉县| 大冶市| 九台市| 剑川县| 阜南县| 东丽区| 安阳县| 杭锦后旗| 石阡县| 建湖县| 遂川县| 江北区| 三原县| 高安市| 神农架林区|