音频译码的语音帧计算方法

文档序号:2821660阅读:455来源:国知局
专利名称:音频译码的语音帧计算方法
技术领域
本发明涉及一种音频译码的语音帧计算方法,尤其涉及一种译码时针对位数据改变读取长度,以得到一不参考填充位而还能求出真正的语音帧长度的方法。
背景技术
网络无远弗届的特性,使我们可以从中得到各样的信息、数据分享,但受限于频宽,较大的影音文件无法顺畅地流通,故有MP3(MPEG Layer 3)压缩技术的发展,可将声音数据压缩比到达12∶1的低失真数据压缩方法,在人对音频的灵敏度范围内,MP3格式以一大压缩比的技术使在不失音质的状况下达到便利网络传输的文件大小,而消费者在聆听MP3文件的音乐时,则须借助于MP3译码器(即解压缩),即如图1现有技术MP3译码装置示意图。
如图1所示,一组由任一音源(如audio CD,WAV等)转换的MP3码11输入一MP3译码装置10,经此MP3译码装置10译码后输出至扬声端15,可为计算机系统或MP3译码器的输出端,借耳机或扬声器(speaker)聆听,其中MP3译码装置10中则大致包括有接收数据码的输入数据流缓冲器12,经一译码器13进行译码,再经输出音频缓冲器14将译码后的音频文件输出。
上述的MP3译码装置10中,在解压缩的流程中,必须先计算出MP3码数据流(bit stream)中一个语音帧(frame)的长度,将数据先存在缓冲器(buffer)中再开始解压缩,而计算语音帧长度时必须参考MP3文件头(head information)中的填充位(padding bit)才可求得正确有数据流。压缩端(compress)在进行压缩步骤时,若执行非整数压缩取样频率(如44.1k)时,则会设定填充位为1,若为整数压缩取样频率时,则不需设定填充位(即为0)。故当此填充位错误时,会造成数据流的读取错误,例如多读或少读一个字节(byte,8bits),即造成译码时由于压缩数据不正确造成译码错误,连带判断语音帧长度(以字节为单位)的步骤也产生错误。
填充位读取正确情形若填充位为1,表示语音帧长度非整数字节,则将语音帧内补足一个字节。
若填充位为0,表示语音帧长度为整数,则不须补足。
错误情形如下错误一若填充位应为0却判断成1,则会多取一个语音帧的文件头,造成数据多一个字节,解压缩时会产生错误,下一次寻找语音帧则会跳过一个语音帧。
错误二若填充位应为1却判断为0,则会少取一个字节的数据, 亦造成解压缩的错误。
MP3压缩方法是以语音帧为单位,是利用一个主要数据开始(main databegin)的指针来达到最佳化,请参阅现有技术图2A的语音帧文件格式示意图,图标中为MP3编码中的数据流部分示意图,包括有第一语音帧21与第二语音帧22,第一语音帧21包括有借多个位(bit)来标示内容的第一文件头23与音频的第一主要数据25,还有未占用的第一剩余空间27,而第一文件头23中还大致区分为第一同步字符(sync word)23a、与其它文件头信息23b,以及第一数据流信息(side information)23c等;紧接第一剩余空间27则为下一个语音帧,此第二语音帧22内也有类似于第一语音帧21的第二语音帧22,其中包括第二文件头24,第二主要数据26与第二剩余空间,第二文件头24也包括第二同步字符24a、与其他文件头信息24b,以及第二数据流信息24c等。
如上述语音帧21,22中,文件头23,24中的内容存在有数据流信息23c,24c,其中主要数据开始(main data begin)会指到其它多个语音帧所剩余的空间27,28,来储存此次压缩的文件,MP3压缩即利用数据流中剩余空间27,28来提高压缩率,而文件头23,24的数据流信息则存有指针指出各段音频压缩文件开始与结束的信息,所以译码端只要参考文件头中的指针便可知道正确压缩文件的数据流(bit stream)中正确的地址,而解出正确的音频。
而图2B则表示现有技术语音帧内文件头位,图标为一数据流中文件头部分,并仅以部分位指针来说明功能,以图1A及第一语音帧21为例,其中至少包括同步字符23a与其它文件头信息23b,同步字符23a包括有12个位,在MP3编三中以111111111111代表一个同步字符,其十六进制表示为FFF,为一个语音帧的开始。其它文件头信息23b包括辨识位(ID flag)201、阶层位(layer flag)202、纠错位(error protection)203、位率(bit rate)204、取样频率(sampling frequency)205、填充位(padding bit)206、私用位(private bit)207、模式位(mode flag)208、模式扩充(mode expend)209、版权位(copyright)210、原版位(original copy)211与加强位(emphasis flag)212等。
现有技术中计算语音帧(frame)长度的方法是参考上述的取样频率205、位率204,即位传输速率,以及填充位206等指针,而语音帧长度则借其中指针所指的数据得到语音帧长度=位率×取样频率×每语音帧内取样数(Length=bitrate*sampling frequency*samples/frame)(公式一)而填充位的设定可得知所属语音帧是否为一字节的整数倍,因为如果取样频率为44.1k等非整数的频率,公式一所得为非整数值,须借填充位的信息(0或1)来补足一个字节,在译码时即多读一字节或多判断同步字符码。但如果其中填充位发生错误,则会导致实际语音帧的大小计算错误,倘若第一个语音帧计算错误,自然会影响到下一个语音帧的同步字符串(sync word)以及文件头(header)产生译码错误。
本发明为避免填充位的读取错误而造成语音帧文件头读取错误,致使解压缩错误的因素,提出一不参考这个填充位而还能求出的语音帧长度的方法。

发明内容
本发明为一种音频译码的语音帧计算方法,为避免音频码中文件头的填充位读取错误而造成语音帧长度计算错误,在译码时针对位数据改变读取长度,之后判读其中的同步字符码,或是单独的字符,得到一不参考填充位而能求出真正的语音帧长度的方法。
本发明的主要目的为不参考语音帧中文件的一填充位的情况下,而进行对语音帧的译码,语音帧长度计算方法步骤包括读取前一语音帧内数据,并多读一字节,并存于一器中;判读完整的一同步字符码FFF字符,或是仅单独一F字符;判断是否存有所述同步字符码?若否,则藉所述F字符得到所述语音帧的文件头地址;抛弃所述缓存器中多读的所述字节;及解所述语音帧的文件头信息。但所述语音帧内若有FFF字符,则得出所述语音帧的文件头地址。
本发明的另一语音帧长度计算方法步骤包括读取下一语音帧内数据;并多判断字符码,以判读是否为完整的同步字符码;若否则将多判断的部分存入缓存器内,并重新多判断字符码的步骤;若为同步字符码FFF,则得出所述语音帧的文件头地址;抛弃所述缓存器中多读的字符;及解所述语音帧的文件头信息。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。


图1是现有技术MP3译码装置示意图;图2A是现有技术语音帧文件格式示意图;图2B是现有技术语音帧内文件头位示意图;图3A是语音帧文件格式示意图;图3B是语音帧文件头格式示意图;图4是本发明字符读取示意图;图5是本发明音频译码的语音帧计算第一方法步骤流程图;图6是本发明音频译码的语音帧计算第二方法步骤流程图;具体实施方式
MP3压缩方法是以语音帧(frame)为单位,如图3A所示的语音帧文件格式示意图,包括有多个语音帧30组成的数据流(bit stream),其中包含标示每个语音帧的最开始地址的同步字符(sync word)31a、压缩文件中的信息指针所处的数据流信息(side information)31c,如辨识各主要数据(main data)或剩余空间所处地址、纪录取样频率(sampling frequency)与各样模式或版本的旗标。紧接着文件头31则为主要数据32,即为音频压缩文件的位置,还有未占用的剩余空间33,所以译码端只要参考文件头中的指针便可知道正确压缩文件在数据流中正确的地址,而解出正确的音频。
图3B是为语音帧文件头格式示意图,文件头31至少包括有同步字符31a与其它文件头信息31b。同步字符31a为一12位的位码,以111111111111(FFF)表示一个语音帧的开头,故在对MP3文件译码时则通过找FFF字符来判断语音帧的正确地址。在其它文件头信息31b中包括有位率(bit rate)34、取样频率(sampling frequency)35与填充位(padding bit)36等多个位信息,语音帧是以字节(byte)为单位形成,而其中填充位36是在压缩MP3格式时即借以纪录是否该所处的语音帧为一非整数位组长度(请参看现有技术所述)。
本发明利用以下两种方法来避免因为填充位错误造成计算语音帧长度错误以及解压缩错误的情况。
方法一忽略填充位,也就是不管填充位为0或1,都在读取语音帧时多读一个字节(11111111或FF)。在MP3译码时,多读取一个字节即将此字节存放入一缓存器中,因为一个字节已读至缓存器40中,若原本语音帧30长度为非整数字节的情况下,因为不足整数而需补足一字节,则不影响原本判断同步位的方法,找到FFF的字符表示找到同步字符;若语音帧长度为整数位组长度情况下,因为字符FF已读至缓存器40,如图4所示,则只要找到一个F即为找到同步字符。找到同步字符也就定义了语音帧的文件头,也就可以解文件头信息,进而对MP3音频译码。
方法二忽略填充位,与方法一不同的处为不多读一个字节,但于读下一个语音帧的开头时,多判断一个字符码,如果不是同步字符FFF,将此字节存放入缓存器中,再开始继续下一步骤重新判断字符的译码动作。
请参阅图5本发明音频译码的语音帧计算方法的方法一的步骤流程图步骤501,语音帧在MP3数据流中为一基本单位,以循序方式纪录的位码,具中包括有文件头、主要数据与剩余空间,在音频译码开始时,为解出目前语音帧长度即读取前一语音帧内数据,并多读一个字节,再存于一缓存器中,借以判断目前语音帧的地址;步骤502,之后在数据流中判读找寻一完整的同步字符码FFF,或是仅单独一个F字符;步骤503,判断是否存有此FFF字符?步骤504,若否,表示此语音帧的语音帧长度为整数字节,因为一个字节FF已读至缓存器中,故仅得一F字符;步骤505,则通过此F字符得到所述语音语音帧的文件头地址,也就可以定义所述语音帧的长度;若有FFF字符,表示此语音帧的语音帧长度为非整数字节,而找到同步字符FFF,即该位置为该语音帧的文件头,也借此得到该语音帧的长度;步骤506,之后,因为已得到语音帧长度,则抛弃步骤501中缓存器内多读的字节;步骤507,也就因得到语音帧长度,而可以解文件头信息,进而对MP3音频进行译码。
结束该语音帧的译码。
而图6为本发明音频译码的另一语音帧计算方法的方法二的步骤流程图步骤601,语音帧在MP3数据流中为一基本单位,以循序方式纪录的位码,其中包括有文件头、主要数据与剩余空间,在音频译码开始时,读取下一语音帧内数据;步骤602,并多判读一个字符码,并存入一缓存器中;步骤603,判断是否为同步字符码?步骤604,若否,则除了将多判断的字符码存入该缓存器内,还重新执行步骤602的多判读字符码步骤;步骤605,若有FFF的同步字符码,表示此语音帧的语音帧长度为非整数字节,而找到同步字符FFF,即所述位置为所述语音帧的文件头,也借此得到所述语音帧的长度;步骤606,之后,因为已得到语音帧长度,则抛弃步骤602中缓存器内多读的字符码;步骤607,也就因得到语音帧长度,而可以解文件信息,进而对MP3音频进行译码。
结束该语音帧的译码。
综上所述,本发明一种音频译码的语音帧计算方法,是在译码时多取一个字节的数据,借以得到一不参考填充位而能求出真正的语音帧长度的方法,以避免填充位错误时造成的误判。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
1.一种音频译码的语音帧计算方法,所述语音帧为MP3格式中的基本单位,其特征在于,该方法是在不参考所述语音帧中文件头的一填充位的情况下,而对所述语音帧进行译码,步骤包括有读取前一语音帧内数据,并多读一字节,存于一缓存器中;判读完整的一同步字符码FFF字符,或是仅单独一F字符;判断是否存有所述同步字符码;若否,则通过所述F字符得到所述语音帧的文件头地址;抛弃所述缓存器中多读的所述字节;及解所述语音帧的文件头信息。
2.如权利要求1所述的音频译码的语音帧计算方法,其特征在于,在判断是否存有所述同步字符码的步骤中,若有所述同步字符码,则该位置为所述语音帧的文件头,并得到所述语音帧的长度。
3.如权利要求1所述的音频译码的语音帧计算方法,其特征在于,所述语音帧至少包括有所述文件头与一主要数据。
4.如权利要求3所述的音频译码的语音帧计算方法,其特征在于,所述文件头至少包括有一填充位、一取样频率与一位率等位。
5.一种音频译码的语音帧计算方法,其特征在于,所述方法步骤包括有读取前一语音帧内数据,并多读一字节;判读完整的一同步字符码FFF字符,或是仅单独一F字符;得到所述语音帧的文件头地址;及解所述语音帧的文件头信息。
6.如权利要求5所述的音频译码的语音帧计算方法,其特征在于,所述语音帧至少包括有所述文件头与一主要数据。
7.一种音频译码的语音帧计算方法,所述语音帧为MP3格式中的基本单位,其特征在于,该方法是在不参考所述语音帧中文件头的一填充位的情况下,而对所述语音帧进行译码,步骤包括有读取下一语音帧内数据;多判读一字符码,并存入一缓存器中;判断是否为一同步字符码;若为所述同步字符码,借此得到所述语音帧的长度;抛弃所述缓存器中多读的所述字符码;得到所述语音帧的文件头地址;解所述语音帧的文件头信息。
8.如权利要求7所述的音频译码的语音帧计算方法,其特征在于,在判断是否为所述同步字符码的步骤中,若非所述同步字符码,则除了将多判读的所述字符码存入所述缓存器内,还进行重新判读的步骤。
9.如权利要求7所述的音频译码的语音帧计算方法,其中所述语音帧至少包括有所述文件头与一主要数据。
10.如权利要求9所述的音频译码的语音帧计算方法,其中所述文件头至少包括有一填充位、一取样频率、与一位率等位。
全文摘要
本发明涉及一种音频译码的语音帧计算方法,是为避免音频码中文件头(head information)的填充位(padding bit)读取错误而造成语音帧(frame)长度计算错误,而致使译码错误,因此本发明在译码时针对位数据改变读取长度,之后判读其中的同步字符(sync word)码,或是单独的字符,因而得到所述语音帧的文件头地址及解所述语音帧的文件头信息,借此提出一不参考填充位而能求出真正的语音帧长度的方法。
文档编号G10L19/14GK1702737SQ20041004992
公开日2005年11月30日 申请日期2004年6月18日 优先权日2004年5月28日
发明者林士生 申请人:扬智科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1