專利名稱:一種音頻重采樣方法
技術領域:
本發(fā)明涉及一種數(shù)據(jù)重采樣方法,尤其涉及一種音頻重采樣方法。
背景技術:
在數(shù)字信號處理領域,常常遇到采樣率變換的問題,例如將采樣率放大或降低,即 重采樣問題。重采樣技術是從一組數(shù)字信號處理成另外一組數(shù)字信號,可以用專門的硬件 實現(xiàn),也可以用軟件方法實現(xiàn)。目前國內投入使用的信號采集儀器都帶有硬件方法實現(xiàn)的 重采樣功能。振動信號由傳感器獲取,通過濾波電路作低通濾波后,使用硬件電路作數(shù)字抽 取。這種依靠硬件濾波抽取的方法使用不靈活、價格昂貴。所以更多時候采用軟件方法實 現(xiàn)重采樣。 軟件方法實現(xiàn)重采樣,基本思路都是數(shù)字信號的插值和抽取。向上采樣時,需要 插值;向下采樣時,需要抽??;對于非整數(shù)的重采樣比(即向上采樣輸出采樣率/輸入采 樣率,向下采樣輸入采樣率/輸出采樣率),同時需要插值和抽取。插值有插0法,也有 線性插值方法,但插值后,通常都會影響原音頻信號頻譜,導致頻譜混疊,引入噪音;插值 后,通常還需要進行濾波,以濾除多余的噪音。目前軟件方法實現(xiàn)的重采樣方案有多種,如 SSRC(軟采樣控制器)、PPHS等已經是相對成熟的實現(xiàn)方法。以SSRC為例,其實實現(xiàn)方法 大致描述如下 SSRC中FFT為N點處理,重采樣處理分兩階段,第一階段濾波,是對前N/2個輸入 樣本進行一次7階或9階的FIR濾波,得到FFT的輸入;第二階段濾波,將上一階段的N/2 個輸出后面添加N/2個O,然后對N個數(shù)據(jù)進行FFT變換,在頻域對頻域數(shù)據(jù)進行復數(shù)域的 加窗、濾波后再進行IFFT變換,變回時域數(shù)據(jù),再根據(jù)重采樣輸出數(shù)據(jù)長度要求進行刪減、 包絡處理,最后輸出重采樣后的聲音樣本。 數(shù)字語音/音頻信號進行回放時,按特定的采樣率進行;如采樣率為44100,即每
秒往DAC送出的44100個聲音樣本/聲道。采樣率有多種級別,如8000, 11025,......,44100,
48000等。當需要將某種采樣率的語音/音頻信號以另外一種采樣率進行回放時,就需要進
行重采樣,將數(shù)字信號處理成目標采樣率,再送DAC播放;如果不進行重采樣而直接以另外
一種采樣率播放,播放速率會改變,而且嚴重變調。很多場合需要對語音/音頻信號進行重
采樣,如有些軟硬件只支持某種采樣率,而源信號是另外一種采樣率時需要進行重采樣;不
同采樣率的音樂進行混音處理時,需要重采樣成相同的采樣率才能進行混音。 以上實現(xiàn)方法除了對輸入信號進行7階以上FIR濾波外,還需要將時域信號變換
到頻域進行處理,再轉換回時域輸出,運算量比較大。
發(fā)明內容
本發(fā)明目的在于提供一種運算量小且簡單實效的音頻重采樣方法。 本發(fā)明的目的可以通過以下方案實現(xiàn),一種音頻重采樣方法,步驟包括 (A)根據(jù)采樣函數(shù)生成有限沖激響應濾波器系數(shù),并將所有有限沖激響應濾波器
4系數(shù)組成的系數(shù)表存儲在外部存儲器中; (B)初始化參數(shù),參數(shù)包括相位屏蔽器、濾波器長度、源樣本序號、濾波器步長和樣 本放大序號; (C)對輸入聲音樣本進行預處理根據(jù)輸出的要求,將單聲道輸入重采樣成單聲 道輸出或重采樣成雙聲道輸出;雙聲道輸入重采樣成單聲道輸出或重采樣成雙聲道輸出;
(D)對預處理后的聲音樣本進行再處理,在向上或向下重采樣過程中根據(jù)不同重 采樣比從外部存儲空間選擇并加載不同濾波器組系數(shù)組,在向上重采樣時對應進行插值并 用有限沖激響應波波器進行濾波處理,在向下重采樣時對應進行抽取并用有限沖激響應濾 波器進行濾波處理;輸出重采樣后的聲音樣本。 本發(fā)明所述的生成有限沖激響應濾波器系數(shù)表的步驟包括
(a)初始化濾波器組標識號,設定階數(shù)標識號為0 ; (b)檢測階數(shù)標識號是否小于濾波器組數(shù)目如果否,則結束;如果是,則進行下 少; (c)初始化系數(shù)標識號,設定系數(shù)標識號為0 ; (d)檢測系數(shù)標識號是否小于濾波器階數(shù)如果否,則階數(shù)標識號自動加l,并返
回步驟(b);如果是,則進行下一步; (e)根據(jù)采樣函數(shù)得出FIR濾波器系數(shù); (f)將上一步得到的系數(shù)寫入系數(shù)表,然后系數(shù)標識號自動加l,再返回步驟(d)。
本發(fā)明所述的初始化參數(shù)步驟中,如果采樣方式為向上重采樣,則相位屏蔽器的 值限制在0 1023的范圍內;源樣本序號值初始化為_7 0之間;濾波器長度為8 ;濾波 器步長根據(jù)輸出采樣率與輸入采樣率的比值來取值。 本發(fā)明所述的初始化參數(shù)步驟中,如果采樣方式為向下重采樣,則相位屏蔽器的 值限制在0 1023的范圍內;源樣本序號值初始化為_7 0之間;濾波器步長根據(jù)輸出 采樣率/輸入采樣率比取值;濾波器長度則視下采樣比進行設置,通常設置為(8/下采樣 比)。 本發(fā)明所述的插值并FIR濾波處理步驟為 (g)準備好1024個系數(shù)已經確定的FIR濾波器,以第0個濾波器作為當前濾波器,
(h)從源聲音樣本中取第源樣本序號個樣本為一個輸入,與前面的7個樣本組成 當前濾波器的8個輸入數(shù)據(jù), (i)進行濾波,即將8個數(shù)據(jù)輸入濾波器,經過與濾波器系數(shù)的累乘加運算,獲得 一個輸出,即為一個濾波后,也即重采樣后的聲音樣本, (j)樣本放大序號進行累加操作,累加長度為濾波器步長;再將樣本放大序號右
移10位,如果移位后結果等于源樣本序號,則依照濾波器步長,選擇另外一個濾波器,再跳
到步驟(i);否則,將移位后的值更新到到源樣本序號(SAMPLEINDEX),跳到步驟(h);直到
所有源聲音樣本已經全部處理結束。 本發(fā)明所述的抽取并FIR濾波處理步驟為 (1)準備好1024個系數(shù)已經確定的FIR濾波器,以第0個濾波器作為當前濾波器,
(2)從源聲音樣本中取第源樣本序號個樣本為一個輸入,與前面的濾波器長度減 1所得數(shù)目個樣本,組成當前濾波器的濾波器長度數(shù)目個輸入數(shù)據(jù),
5
(3)進行濾波,即將濾波器長度個數(shù)據(jù)輸入濾波器,經過與濾波器系數(shù)的累乘加運 算,獲得一個輸出,即為一個濾波后,也即重采樣后的聲音樣本, (4)樣本放大序號進行累加操作,累加長度為濾波器步長,再將樣本放大序號右移 10位,將移位后的值更新到源樣本序號,跳到步驟(2),直到所有源聲音樣本已經全部處理 結束。 本發(fā)明所述的FIR濾波器系數(shù)表基于黑人_奈特窗采樣函數(shù)生成為一維數(shù)組,每 組大小即為濾波器階數(shù)。 本發(fā)明所述的FIR濾波器系數(shù)表的大小由有限沖激響應濾波器階數(shù)和重采樣相 位移動計數(shù)決定,重采樣相位移動計數(shù)由重采樣相位移動因子決定。 本發(fā)明如果是單聲道處理成雙聲道,只需要將每個聲音樣本重復一次即可;如果 是雙聲道變成單聲道,取每對左右聲道的數(shù)據(jù)的平均值,作為輸出單聲道的一個聲音樣本。
本發(fā)明相對現(xiàn)有技術優(yōu)點在于由于預先計算出了濾波器的各個參數(shù),并組成參 數(shù)表寫入外部存儲器如閃存(Flash)中,在算法上大大減少了計算強度。實施時,代碼也相 應的變得簡潔,運算效率高,占用CPU資源極少,即使在ARM7的處理器下,只需要10MHz左 右主頻。處理后音頻信號完整、頻譜不丟失、不增加多余頻譜,音質絕對不比原始音頻音質 差。不同采樣頻率的音頻數(shù)據(jù)可以通過重采樣變成相同采樣率,從而可以達到混音效果。
圖1是本發(fā)明的FIR濾波器系數(shù)表生成流程圖;
圖2是本發(fā)明的向上重采樣插值濾波示意圖;
圖3是本發(fā)明的向下重采樣抽取濾波示意圖。
具體實施例方式
—種音頻的重采樣方法,首先生成FIR濾波器系數(shù)表。 濾波器組系數(shù)預先處理好,這些系數(shù)表基于黑人_奈特窗Blackman-Nuttall加窗 的采樣函數(shù)生成。系數(shù)表為一維數(shù)組,但實際是分組的,每組大小即濾波器階數(shù)。例如上采 樣濾波器系數(shù)表,每8個數(shù)組元素為一組,代表一組8階濾波器的系數(shù)。重采樣時,獲取系 數(shù)并非按順序依次從系數(shù)表中讀取,而是根據(jù)重采樣輸出輸入比,進行跳組選系數(shù)。濾波器 系數(shù)預先算好了 ,濾波器組也就確定下來了 ,不需要在重采樣過程中動態(tài)運算系數(shù),增加運 算量。 如圖1所示,將濾波器組序號FilterbankID置零,然后檢測階數(shù)標識號是否小 于濾波器組數(shù)目FilerbankCount,如果不小于,說明系數(shù)表已經完整生成,程序便自動退 出。如果階數(shù)標識號小于濾波器組數(shù)目FilerbankCo皿t,則將系數(shù)標識號CoefID置零,檢 測系數(shù)標識號是否小于濾波器長度FilterLen。因為每一組的系數(shù)大小等于濾波器長度 FilterLen,所以當系數(shù)標識號等于階數(shù)時,表明完成了該組系數(shù)的計算,使階數(shù)標識號自 加1后返回到階數(shù)標識號與濾波器組數(shù)目FilerbankCo皿t比較的步驟。如果系數(shù)標識號 小于濾波器長度,則依次計算中間系數(shù)X、Y、W,最后算出系數(shù)coef。將該系數(shù)寫入系數(shù)表后 系數(shù)標識號自動加1,并返回系數(shù)標識號與濾波器長度比較的步驟。循環(huán)計算出每一組中的 每一個系數(shù),直至全部計算完畢,程序退出。將計算好的系數(shù)表寫入外部存儲器如閃存中備用。 系數(shù)x、 y、 w和coef分別按下面的方法進行。M_PI為圓周率;
Factor = OutSamplrate/InSamplerate ;x = M—PI*((CoefID-FilterLen/2)-FilterlD/PhaseShiftCount) *Factor ;
y = sin(x)/x ; w = 2. 0*x/(factor*FilterLen)+M_PI ; coef = y* (0. 3635-0. 4891*cos(w)+0. 1365*cos(2*w)_0. 0106*cos(3*w));
上面算出的coef即對應的一個系數(shù)。 在向上重采樣和向下重采樣的濾波器系數(shù)表生成方法是一樣的,只是因為階數(shù)的 不同而大小不一致。對于向上重采樣,設定階數(shù)為8,所以所有向上重采樣的過程可以使用 同一組系數(shù)表。而向下重采樣則根據(jù)不同的采樣比動態(tài)調整階數(shù),所以一次向下重采樣對 應一個系數(shù)表。 濾波器系數(shù)表的大小由濾波器階數(shù)(FilterLen)和重采樣相位移動 計數(shù)(PhaseShiftCount)決定。而PhaseShiftCount由重采樣相位移動因子 (PhaseShiftFactor)決定,即PhaseShiftCount為1左移PhaseShiftFactor位得到。通 常,PhaseShiftFactor可設置為10 ;為了降低運算量,對于輸入采樣率大于32KHz, PSF也可 設置為6,并不會影響重采樣效果。例如對向上采樣(upsample),F(xiàn)IR濾波器系數(shù)表大小為 8192 (艮卩FilterLen氺PhaseShiftCoimt,其中FilterLen為8, PhaseShiftCount為1024)。
向上重采樣步驟 如圖2所示,向上重采樣是將每個輸入聲音樣本輸入到多個濾波器中,從而輸出 多個聲音樣本,達到插值并濾波的效果。 初始化參數(shù),參數(shù)包括相位屏蔽器(PHASEMASK)、濾波器長度(FILTERLEN)、源樣 本序號(SAMPLEINDEX)、濾波器步長(FILTERINC)和樣本放大序號(SINDEX)。相位屏蔽器 用于確保在啟動每次濾波之前,選擇的波波器組開始序號在合法的范圍內;濾波器長度即 每次濾波的階數(shù),也即有限沖激響應濾波器(FIR)的階數(shù),向上采樣時,該值固定為8,向下 采樣時,為(8*輸入采樣率/輸出采樣率);源樣本序號即將要被處理的聲音樣本在所有源 樣本中的排序,一般可初始化為0 ;濾波器步長即進行完一次濾波后,獲取下一組濾波器系 數(shù)的尋找步長,該值為(向上采樣輸入采樣率*1024/輸出采樣率);樣本放大序號用于確
認是否進行插值或抽取操作,可初始化為O,是放大了 1024倍的樣本序號;
初始化時,先確定PhaseMask和階數(shù),然后初始化Sampleindex和Filterinc等 參數(shù)。通常將設為PHASEMASK = 1023,即0b0011, 1111, 1111,用于對SAMPLEINDEX進行屏 蔽操作,將其限定在0-1023范圍內;向上采樣情況下FilterLen = 8,即預設的濾波器階 數(shù)。SAMPLEINDEX是指當前處理輸入聲音樣本在整組輸入的標號,初始化為_7到0之間。 FILTERINC即進行完一次濾波后,獲取下一組濾波器系數(shù)的尋找步長,該值根據(jù)輸出采樣率 /輸入采樣率比取值,如輸出32000HZ,輸入8KHZ,則FILTERINC = FilterLen*32000/8000。
然后根據(jù)輸入的聲音樣本的聲道數(shù)和要求輸出的聲道數(shù)預處理樣本,如單聲道輸 入要重采樣成雙聲道輸出,必須將輸入單聲道處理成雙聲道;雙聲道輸入,由于是左右聲道 交錯排列,還必須處理成按左右聲道順序排列。如果是單聲道處理成雙聲道,只需要將每個 聲音樣本重復一次即可;如果是雙聲道變成單聲道,取每對左右聲道的數(shù)據(jù)的平均值,作為輸出單聲道的一個聲音樣本。 對預處理后的聲音樣本進行插值并FIR濾波。處理過程可以這樣理解,預先準備好1024個系數(shù)已經確定的FIR濾波器,輸入聲音樣本按順序依次選擇不同的濾波器進行濾波后,輸出即為重采樣后的聲音樣本;根據(jù)不同的重采樣比,每個輸入聲音樣本會輸入到若干個濾波器,從而輸出多個聲音樣本,從而達到插值并濾波的效果。
上述插值并FIR濾波的具體處理步驟為 1)準備好1024個系數(shù)已經確定的FIR濾波器,以第0個濾波器作為當前濾波器。
2)從源聲音樣本中取第SAMPLEINDEX(源樣本序號)個樣本為一個輸入,與前面的F個樣本組成當前濾波器的8個輸入數(shù)據(jù)。 3)進行濾波,即將8個數(shù)據(jù)輸入濾波器,經過與濾波器系數(shù)的累乘加運算,獲得一個輸出,即為一個濾波后,也即重采樣后的聲音樣本。4)樣本放大序號(SINDEX)進行累加操作,累加長度為濾波器步長(FILTER_INC)。再將SINDEX右移10位,如果移位后結果等于SAMPLEINDEX(源樣本序號),則依照濾波器步長(FILTERINC),選擇另外一個濾波器,再跳到第3)步驟;否則,將移位后的值更新到到SAMPLEINDEX(源樣本序號),跑到步驟2)。直到所有源聲音樣本已經全部處理結束。
向下重采樣步驟 如圖3所示,向下重采樣是將原音頻樣本按比例抽取后,輸入到濾波器,生成對應的輸出樣本。 首先確定PHASEMASK、 FilterLen,并初始化SAMPLEINDEX、 FILTERINC等。通常,PHASEMASK = 1023,即Ob 1111111111,用于對SAMPLEINDEX進行屏蔽操作,將其限定在0-1023范圍內;向下采樣情況下FilterLen = 8/下采樣比,如48KHZ重采樣成24KHZ,則FilterLen = 16。 SAMPLEINDEX是指當前處理輸入聲音樣本在整組輸入的標號,初始化為_7到0之間。FILTERINC即進行完一次濾波后,獲取下一組濾波器系數(shù)的尋找步長,該值可根據(jù)輸出采樣率/輸入采樣率比取值,如輸出32000HZ,輸入8KHZ,則FILTERINC =FilterLen*32000/8000。 然后對輸入聲音樣本預處理,如單聲道輸入要重采樣成雙聲道輸出,必須將輸入
單聲道處理成雙聲道;雙聲道輸入,由于是左右聲道交錯排列,還必須處理成按左右聲道順
序排列。如果是單聲道處理成雙聲道,只需要將每個聲音樣本重復一次即可;如果是雙聲道
變成單聲道,取每對左右聲道的數(shù)據(jù)的平均值,作為輸出單聲道的一個聲音樣本。 最后對預處理后的聲音樣本進行抽取并FIR濾波。處理過程可以這樣理解,預先
準備好的濾波器系數(shù)已經確定的FIR濾波器,輸入聲音樣本按順序依次選擇不同的濾波器
進行濾波后,輸出即為重采樣后的聲音樣本;根據(jù)不同的重采樣比,每個輸入聲音樣本會輸
入到若干個濾波器,從而輸出多個聲音樣本,從而達到抽取(即降采樣率)并濾波的效果。 上述的抽取并FIR濾波的具體處理步驟為 1)準備好1024個系數(shù)已經確定的FIR濾波器,以第0個濾波器作為當前濾波器。 2)從源聲音樣本中取第SAMPLEINDEX (源樣本序號)個樣本為一個輸入,與前面的
濾波器長度(FILTERLEN)-1個樣本組成當前濾波器的FILTERLEN個輸入數(shù)據(jù)。 3)進行濾波,即將FILTERLEN個數(shù)據(jù)輸入濾波器,經過與濾波器系數(shù)的累乘加運
算,獲得一個輸出,即為一個濾波后,也即重采樣后的聲音樣本。
8
4)樣本放大序號(SINDEX)進行累加操作,累加長度為濾波器步長(FILTER_INC)。再將SINDEX右移10位,將移位后的值更新到到SAMPLEINDEX (源樣本序號),跳到步驟2)。直到所有源聲音樣本已經全部處理結束。 上述的重采樣處理是按聲道進行的,即輸入聲音樣本應該合理組織,同一個聲道聲音樣本連續(xù)存放;對于一組要處理的長度為2L的左右聲道交錯存放的立體聲聲音樣本,需要重新組織成前面L個樣本全是左聲道聲音樣本,后面L個樣本全是右聲道聲音樣本。
上述的FIR濾波的過程就是一個乘累加的過程,如y (n) = a0*x (n) +al*x (n_l) + +a7*X(n-7)為一個8階濾波運算。對于剛開始重采樣,通常將x, x(_2),……,x(_7)視為0進行處理。但這樣處理并非總是穩(wěn)妥,在有些組合下,在開始處會產生異樣的噪音。原因是用0進行乘累加,相當于沒有累加,處理后輸出的聲音樣本會比后面用非0數(shù)據(jù)進行乘累加的輸出相差很大,導致聲音突變,產生高頻信號,從而引起異常聲音。而本發(fā)明中,將其處理成x(l), x(2),……,x(7),將濾波器的初始輸入不用0代替,而是用源聲音樣本中最前面聲音樣本值代替,經測試,效果良好。 在混音處理中,當幾種不同采樣率的音頻/語音進行混音時,需要重采樣成一致的采樣率才能進行混音處理。藍牙立體聲,由于藍牙音樂編碼協(xié)議只定義了四種采樣率16K、32K、44K和48KHz,當需要通過藍牙播放其它采樣率的音樂時,必須經過重采樣再經藍牙播放。通過本發(fā)明可以達到上述要求,并且運算量低、功耗低、算法簡單和軟件時間代碼簡潔。
權利要求
一種音頻重采樣方法,其特征在于,步驟包括(A)根據(jù)采樣函數(shù)生成有限沖激響應濾波器系數(shù),并將所有有限沖激響應濾波器系數(shù)組成的系數(shù)表存儲在外部存儲器中;(B)初始化參數(shù),參數(shù)包括相位屏蔽器、濾波器長度、源樣本序號、濾波器步長和樣本放大序號;(C)對輸入聲音樣本進行預處理根據(jù)輸出的要求,將單聲道輸入重采樣成單聲道輸出或重采樣成雙聲道輸出;雙聲道輸入重采樣成單聲道輸出或重采樣成雙聲道輸出;(D)對預處理后的聲音樣本進行再處理,在向上或向下重采樣過程中根據(jù)不同重采樣比從外部存儲空間選擇并加載不同濾波器組系數(shù)組,在向上重采樣時對應進行插值并用有限沖激響應波波器進行濾波處理,在向下重采樣時對應進行抽取并用有限沖激響應濾波器進行濾波處理;輸出重采樣后的聲音樣本。
2. 根據(jù)權利要求1所述的一種音頻重采樣方法,其特征在于,所述的生成有限沖激響 應濾波器系數(shù)表的步驟包括(a) 初始化濾波器組標識號,設定階數(shù)標識號為0 ;(b) 檢測階數(shù)標識號是否小于濾波器組數(shù)目如果否,則結束;如果是,則進行下一步; (C)初始化系數(shù)標識號,設定系數(shù)標識號為0 ;(d) 檢測系數(shù)標識號是否小于濾波器階數(shù)如果否,則階數(shù)標識號自加l,并返回步驟 b;如果是,則進行下一步;(e) 根據(jù)采樣函數(shù)得出FIR濾波器系數(shù);(f) 將上一步得到的系數(shù)寫入系數(shù)表,然后系數(shù)標識號自加1并返回步驟d。
3. 根據(jù)權利要求1所述的一種音頻重采樣方法,其特征在于,所述的初始化參數(shù)步驟 中,如果采樣方式為向上重采樣,則相位屏蔽器的值限制在0 1023的范圍內;源樣本序號值初始化為-7 0之間;濾波器長度為8 ;濾波器步長根據(jù)輸出采樣率/輸入采樣率比取 值。
4. 根據(jù)權利要求1所述的一種音頻重采樣方法,其特征在于,所述的初始化參數(shù)步驟 中,如果采樣方式為向下重采樣,則相位屏蔽器的值限制在0 1023的范圍內;源樣本序號值初始化為-7 0之間;濾波器步長根據(jù)輸出采樣率/輸入采樣率比取值;濾波器長度則視下采樣比進行設置,通常設置為8/下采樣比。
5. 根據(jù)權利要求l所述的一種音頻重采樣方法,其特征在于,所述的插值并FIR濾波處理步驟為(g) 準備好1024個系數(shù)已經確定的FIR濾波器,以第0個濾波器作為當前濾波器,(h) 從源聲音樣本中取第源樣本序號個樣本為一個輸入,與前面的7個樣本組成當前 濾波器的8個輸入數(shù)據(jù),(i) 進行濾波,即將8個數(shù)據(jù)輸入濾波器,經過與濾波器系數(shù)的累乘加運算,獲得一個 輸出,即為一個濾波后,也即重采樣后的聲音樣本,(j)樣本放大序號進行累加操作,累加長度為濾波器步長;再將樣本放大序號右移10 位,如果移位后結果等于源樣本序號,則依照濾波器步長,選擇另外一個濾波器,再跳到步 驟(i);否則,將移位后的值更新到源樣本序號(SAMPLEINDEX),跳到步驟(h);直到所有源 聲音樣本已經全部處理結束。
6. 根據(jù)權利要求1所述的一種音頻重采樣方法,其特征在于,所述的抽取并FIR濾波處理步驟為(1) 準備好1024個系數(shù)已經確定的FIR濾波器,以第0個濾波器作為當前濾波器,(2) 從源聲音樣本中取第源樣本序號個樣本為一個輸入,與前面的濾波器長度減1所 得數(shù)目個樣本,組成當前濾波器的濾波器長度個輸入數(shù)據(jù),(3) 進行濾波,即將濾波器長度個數(shù)據(jù)輸入濾波器,經過與濾波器系數(shù)的累乘加運算, 獲得一個輸出,即為一個濾波后,也即重采樣后的聲音樣本,(4) 樣本放大序號進行累加操作,累加長度為濾波器步長,再將樣本放大序號右移10 位,將移位后的值更新到源樣本序號,跳到步驟(2),直到所有源聲音樣本已經全部處理結 束。
7. 根據(jù)權利要求1或2所述的一種音頻重采樣方法,其特征在于,所述的FIR濾波器系 數(shù)表基于黑人-奈特窗采樣函數(shù)生成為一維數(shù)組,每組大小即為濾波器階數(shù)。
8. 根據(jù)權利要求1或2所述的一種音頻重采樣方法,其特征在于,所述的FIR濾波器系 數(shù)表的大小由有限沖激響應濾波器階數(shù)和重采樣相位移動計數(shù)決定,重采樣相位移動計數(shù) 由重采樣相位移動因子決定。
9. 根據(jù)權利要求1所述的一種音頻重采樣方法,其特征在于,如果是單聲道處理成雙 聲道,只需要將每個聲音樣本重復一次即可;如果是雙聲道變成單聲道,取每對左右聲道的 數(shù)據(jù)的平均值,作為輸出單聲道的一個聲音樣本。
全文摘要
本發(fā)明公開了一種音頻重采樣方法,步驟包括(A)生成有限沖激響應濾波器系數(shù),并組成系數(shù)表存儲在外部存儲器中;(B)初始化參數(shù);(C)對輸入聲音樣本進行預處理;(D)在向上重采樣時對應進行插值處理,在向下重采樣時對應進行抽取處理;輸出重采樣后的聲音樣本。本發(fā)明優(yōu)點在于由于預先計算出了濾波器的各個參數(shù),并組成參數(shù)表寫入外部存儲器如閃存中,在算法上大大減少了計算強度。實施時代碼也相應的變得簡潔,運算效率高,占用CPU資源極少,即使在ARM7的處理器下,只需要10MHz左右主頻。處理后音頻信號完整、頻譜不丟失、不增加多余頻譜。不同采樣頻率的音頻數(shù)據(jù)可以通過重采樣變成相同采樣率,從而可以達到混音效果。
文檔編號G11B20/10GK101714379SQ200810199020
公開日2010年5月26日 申請日期2008年10月8日 優(yōu)先權日2008年10月8日
發(fā)明者李軍, 胡勝發(fā) 申請人:安凱(廣州)軟件技術有限公司