?? 21ic 基于定點dsp的mp3間頻編碼算法研究及實現.htm
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0062)http://www.21ic.com/new_info/news/files/news/200433105518.html -->
<HTML><HEAD><TITLE>21IC: 基于定點DSP的MP3間頻編碼算法研究及實現</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>TD {
FONT-SIZE: 12px
}
INPUT {
FONT-SIZE: 12px; font-fammily: verdana,宋體
}
A:link {
FONT-SIZE: 12px; COLOR: #0000ff; LINE-HEIGHT: 16px; TEXT-DECORATION: underline
}
A:visited {
FONT-SIZE: 12px; COLOR: #660066; LINE-HEIGHT: 16px; TEXT-DECORATION: underline
}
A:hover {
FONT-SIZE: 12px; COLOR: #ff0000; TEXT-DECORATION: underline
}
.unnamed1 {
FONT-SIZE: 12px; FONT-FAMILY: "Arial", "Helvetica", "sans-serif"
}
.white {
FONT-SIZE: 12px; COLOR: #ffffff; LINE-HEIGHT: 16px
}
.b:link {
FONT-SIZE: 12px; COLOR: #3366cc; LINE-HEIGHT: 18px; TEXT-DECORATION: underline
}
.b:visited {
FONT-SIZE: 12px; COLOR: #813f1b; LINE-HEIGHT: 18px; TEXT-DECORATION: none
}
.b:hover {
FONT-SIZE: 12px; COLOR: #ffa037; LINE-HEIGHT: 18px; TEXT-DECORATION: underline
}
.148xg {
FONT-SIZE: 14px; COLOR: #0000ff; LINE-HEIGHT: 14pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: underline
}
.128dt {
FONT-SIZE: 14px; COLOR: #9999cc; LINE-HEIGHT: 14pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
.heigh150 {
LINE-HEIGHT: 150%
}
</STYLE>
<META content="MSHTML 6.00.2600.0" name=GENERATOR></HEAD>
<BODY text=#000000 bgColor=#ffffff leftMargin=0 topMargin=5>
<TABLE cellSpacing=0 cellPadding=0 width=768 align=center border=0>
<TBODY>
<TR>
<TD align=middle width=168 height=80><IMG
src="21IC 基于定點DSP的MP3間頻編碼算法研究及實現.files/21ic.gif"></TD>
<TD width=472>
<SCRIPT language=javascript
src="21IC 基于定點DSP的MP3間頻編碼算法研究及實現.files/ads.htm"></SCRIPT>
</TD>
<TD height=80>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD class=b12 align=middle height=30><FONT
face="Arial, Helvetica, sans-serif" color=#000000>
<SCRIPT language=JavaScript
src="21IC 基于定點DSP的MP3間頻編碼算法研究及實現.files/date.js"></SCRIPT>
</FONT></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=1 width=768 align=center border=0>
<TBODY>
<TR>
<TD>
<TABLE cellSpacing=0 cellPadding=3 width=766 align=left border=0>
<TBODY>
<TR bgColor=#d8d6ba>
<TD width=3 height=20></TD>
<DIV id=Position></DIV>
<TD width=378>
<FORM name=email
action=http://www.21icsearch.com/buzi/mail2/chkemail.asp method=post
target=_blank><B>電子工程周刊:</B> <INPUT class=main
style="BORDER-RIGHT: #0097cf 1px solid; BORDER-TOP: #0097cf 1px solid; BORDER-LEFT: #0097cf 1px solid; BORDER-BOTTOM: #0097cf 1px solid; BACKGROUND-COLOR: #ffffff"
maxLength=255 size=30 value=輸入您的Email name=email> <INPUT class=jbutton type=submit value=訂閱> </TD></FORM>
<DIV></DIV>
<DIV id=Time></DIV>
<DIV id=Image></DIV>
<DIV id=Title></DIV>
<TD width=418>
<MARQUEE onmouseover=this.scrollDelay=99000
onmouseout=this.scrollDelay=80 scrollAmount=2 scrollDelay=80
width="80%"><FONT color=#cc0000><IMG height=12
src="21IC 基于定點DSP的MP3間頻編碼算法研究及實現.files/xilan_arrow.gif"
width=16>每周自動接收行業新聞,技術資料,設計文章</FONT></MARQUEE></TD>
<DIV></DIV>
<TD width=9></TD></TR></TBODY></TABLE>
<DIV></DIV>
<DIV id=Time></DIV>
<DIV id=Image></DIV>
<DIV id=Title><TD< td></DIV></TD></TR></TBODY></TABLE></TD></TR></TABLE><BR>
<TABLE cellSpacing=0 cellPadding=0 width=768 align=center border=0>
<TBODY>
<TR>
<TD vAlign=top width=617 height=2>
<TABLE cellSpacing=0 cellPadding=0 width=583 align=center border=0>
<TBODY>
<TR>
<TD align=middle height=31><FONT size=4><B>基于定點DSP的MP3間頻編碼算法研究及實現
</B></FONT></TD></TR>
<TR>
<TD align=middle height=15>文章作者:李力利 <BR>文章類型:設計應用
文章加入時間:2004年3月3日10:55</TD></TR>
<TR>
<TD align=right><FONT color=#cc0000>文章出處:電子技術應用</FONT> </TD></TR>
<TR>
<TD height=15>
<HR width="100%" noShade SIZE=1>
</TD></TR>
<TR>
<TD height=15>
<TABLE cellSpacing=0 cellPadding=0 align=center border=0>
<TBODY>
<TR>
<TD></TD></TR></TBODY></TABLE><BR></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=530 align=center border=0>
<TBODY>
<TR>
<TD class=heigh150 height=15>
<DIV id=Content>
<P class=MsoNormal><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
<B>摘要:</B></SPAN>通過對心理聲學模型的簡化,并在子帶濾波器和量化編碼模塊采用快速算法,大大降低了運算量,在一片100MIPS的定點DSP上實現了實時壓縮。</P>
<P class=MsoNormal><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
<B>關鍵詞:</B></SPAN>音頻編碼 掩蔽閾值 心理聲學模分析子帶濾波器</P>
<P
style="TEXT-INDENT: 30px">MP3是MPEG-1國際標準中音頻壓縮層3的簡稱,單聲道比特率一般取64kbps,在采樣率44.1kHz的情況下,其壓縮比可達12倍以上,被廣泛應用于互聯網等許多場合。由于解碼比編碼過程簡單很多,MP3播放機或隨身聽已隨處可見,但MP3編碼在單片機定點DSP上實現,并要保證音質,則鮮有耳聞。考慮到心理聲學模型在整個MP3音頻編碼算法中所占比例巨大,筆者從簡化該模型入手,采用快速算法減少了帶編碼的運算量和數據量,盡可能少量化編碼的迭代循環次數,從而在一片美國德州儀器公司的TMS320C549芯片上實現了MP3的實時壓縮,用標準解碼軟件回放,主觀評定,對于通常的音頻能達到接近CD的音質。<B><BR><IMG
height=185 hspace=10 src="21IC 基于定點DSP的MP3間頻編碼算法研究及實現.files/17a.gif"
width=549 vspace=10 border=0><BR>1 MP3編碼算法及處理</B></P>
<P
style="TEXT-INDENT: 30px">圖1是MP3編碼器的系統方框圖。每聲道以1152個采樣值為一幀進行處理。首先,分析子帶濾波器采用正交鏡像濾波器組,將20kHz左右帶寬的信號劃分成相等帶寬的32個子帶。然后對子樣值作MDCT以補償子帶濾波的不足,主要是為提高頻率分辨率、消除由子帶濾波引起的帶間混迭。</P>
<P style="TEXT-INDENT: 30px">同時采樣值通過心理聲學模型計算出各頻帶的掩蔽閾值。</P>
<P
style="TEXT-INDENT: 30px">失真控制循環和非歸一化量化控制循環是量化編碼循環過程,它通過量化減少各MDCT系數的精度,使編碼比特數得以降低。不同系數采用不同的量化階,從耳敏感的頻率量化精度高,不敏感的頻率量化精度低,量化誤差則不會被人耳察覺。選擇量化階的依據就是心理聲學模型計算出的掩蔽閥值。<BR><IMG
height=242 hspace=10 src="21IC 基于定點DSP的MP3間頻編碼算法研究及實現.files/17b.gif"
width=549 vspace=10 border=0><BR><FONT size=3>
</FONT><SPAN class=main1>最后將量化階等信息以及霍夫曼碼打包成比特流,供解碼用。</P>
<P style="TEXT-INDENT: 30px">那么為什么掩蔽閾值能反映人耳的聽覺特點呢?</P>
<P
style="TEXT-INDENT: 30px">人耳的聽覺特性涉及生理聲學和心理聲學方面的問題。例如人耳對不同頻率的聲音感覺不同就是生理方面的問題,其中對2kHz~4kHz的聲音最敏感,且低頻較高頻敏感。敏感程度具體體現為靜態掩蔽閾值,如圖2虛線所示,表示在安靜的情況下,各種頻率的聲音剛好被聽到的音量。與人的心理知覺有關的有掩蔽效應等。掩蔽效應指一個聲音的聽覺感受受到另一個聲音影響的現象,分為時間掩蔽(前向、后向掩蔽)和頻率掩蔽(同時掩蔽)。例如,當一個較強的聲音停止后,要過一會兒才能聽到另一個較強的聲音,這就是時間掩蔽效應。頻率掩蔽是指一個聲音對與其同時存在的臨近頻率的聲音產生的影響,如圖2實線所示。其中標志1的實線表示:當1kHz的掩蔽聲音為60dB時,不同頻率的聲音剛好被聽到的分貝值,可見越臨近頻率被掩蔽得越厲害,且低頻更易掩蔽高頻。</P>
<P
style="TEXT-INDENT: 30px">因此心理聲學模型就先用FFT分析信號中包含的頻率分量,將每個頻率處受到其他所有頻率分量掩蔽的值加起來,連線得到的曲線就是掩蔽閾值,是頻率的函數。當某頻率分量的能量處曲線下方時,不能被人耳感覺到,則該頻率分量可用零比特編碼;另一方面,選擇量化階時若能保證量化噪聲低于掩蔽曲線,也不被人耳察覺,所以掩蔽值越大的頻率分量量化階可以越大。因此用掩蔽閾值作為量化編碼的依據,就能夠信證壓縮后的聲音質量。由于聲音信號隨時間改變,因此每幀信號都要計算兩次心理聲學模型,其中要用到大量的實驗測試數據,運算量之在是可想而知的。</P>
<P style="TEXT-INDENT: 0px"><B>2 算法的簡化和優化</B></P>
<P style="TEXT-INDENT: 30px">2.1 分析子帶濾波器的快速算法</P>
<P
style="TEXT-INDENT: 30px">分析子帶濾波器的輸入是32個采樣值,輸出是32個頻率等間隔的子帶樣值。它首先將32個采樣值放入一個長度512的先進先出(FIFO)緩存;對該緩存加窗;然后512個緩存中每8個值累加,轉換成64個中間值;最后通過(1)或將64個中間值變換成32個采樣值:<BR><IMG
height=69 hspace=10 src="21IC 基于定點DSP的MP3間頻編碼算法研究及實現.files/17c.gif"
width=549 vspace=10 border=0><BR></SPAN><FONT
size=3> </FONT><SPAN
class=main1>尋找快速算法的關鍵就是這最后一步。將系數設數組: </SPAN></P>
<P style="TEXT-INDENT: 30px"><SPAN class=main1><IMG height=53
src="21IC 基于定點DSP的MP3間頻編碼算法研究及實現.files/17d.gif" width=440
border=0></P>
<P style="TEXT-INDENT: 30px">可以發現該數組具有如下的對稱性:</P>
<P
style="TEXT-INDENT: 30px">c[16+n]=c[16-n],n=0,1,…,16
(3)</P>
<P
style="TEXT-INDENT: 30px">c[48+n]=-c[48-n],n=0,1,…,15
(4)</P>
<P style="TEXT-INDENT: 30px">所以合并系數相等或相反的項,(1)式變成:</P>
<P style="TEXT-INDENT: 30px"><IMG height=55
src="21IC 基于定點DSP的MP3間頻編碼算法研究及實現.files/17e.gif" width=467
border=0></P>
<P style="TEXT-INDENT: 30px">其中,</P>
<P style="TEXT-INDENT: 30px"><IMG height=81
src="21IC 基于定點DSP的MP3間頻編碼算法研究及實現.files/17f.gif" width=394
border=0></P>
<P
style="TEXT-INDENT: 30px">可見用(5)式代替(1)式可以減少一半的乘法運算。又發現(5)式和標準的IDCT非常相似,可以將Lee提出的快速IDCT算法稍加改動推導(5)式的快速算法。所以又將32點變換分解成以下的兩個16點變換:</P>
<P style="TEXT-INDENT: 30px"><IMG height=62
src="21IC 基于定點DSP的MP3間頻編碼算法研究及實現.files/17g.gif" width=499
border=0></P>
<P style="TEXT-INDENT: 30px"><IMG height=60
src="21IC 基于定點DSP的MP3間頻編碼算法研究及實現.files/17h.gif" width=494
border=0></P>
<P style="TEXT-INDENT: 30px">其中,</P>
<P style="TEXT-INDENT: 30px"><IMG height=139
src="21IC 基于定點DSP的MP3間頻編碼算法研究及實現.files/17i.gif" width=486
border=0></P>
<P style="TEXT-INDENT: 30px">最終的子帶樣值是如下的蝶形組合:</P>
<P style="TEXT-INDENT: 30px">X[K]=Xe[k]+(1/cos[(2k+1)<FONT
face=Arial>π/64]Xo[k],k=0,1,</FONT>…,15 (11)</P>
<P style="TEXT-INDENT: 30px">X[31-k]=Xe[k]-(1/cos[(2k+1)<FONT
face=Arial>π/64])Xo[k],k=0,1,</FONT>…,15 (12)</P>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -