一种基于SBC的低传输比特率高质量语音编解码方法与流程
2021-01-28 13:01:27|329|起点商标网
本发明属于语音或音频编码或解码
技术领域:
,具体涉及为一种基于sbc的低传输比特率高质量语音编解码方法。
背景技术:
:在现有的智能移动终端中,很多已具有了蓝牙立体声功能。这一功能要求有较大的带宽,以支持音频pcm(pulsecodemodulation,脉冲编码调制)裸数据在串行uart(universalasynchronousreceiver/transmitter,通用异步接收/发送装置)上的传输。为了在有限带宽情况下,有效地传输更多的音频数据,因此,需要对音频pcm裸数据进行压缩编码。鉴于智能移动终端的运算能力,采用sbc(subbandcoding,子带编码)算法对音频数据进行压缩编码相对适合。蓝牙sbc算法是一种以中等比特率传递高质量音频数据的低计算复杂度的音频编码算法。传统的sbc支持的采样率包括44.1khz、48khz、32khz、16khz;对于16khz默认的压缩比为4:1,采样率的音频所需的频宽为64kps。传统的sbc,具有以下不足:1)sbc是一种有损编码,压缩比越大,对音质的影响更大,高压缩率会引入噪声。2)sbc不支持8khz的采样率,不能将语音的传输的比特率降到更低,对带宽要求高。技术实现要素:本发明的目的在于克服上述提到的缺陷和不足,而提供一种基于sbc的低传输比特率高质量语音编解码方法。本发明实现其目的采用的技术方案如下。一种基于sbc的低传输比特率高质量语音编解码方法,包括以下步骤:s100,发射端实现8khz采样率语音数据的sbc编码,生成比特流数据发送;s200,接收端实现sbc解码,得到8khz的脉冲编码调制语音数据;s300,降噪模块对sbc解码得到的脉冲编码调制语音数据进行频域降噪。进一步,所述步骤100中,sbc编码,输入是脉冲编码调制数据,即采样后的时间序列,输出是二进制流,其具体步骤如下:s101,脉冲编码调制数据输入至多相滤波器组,多相滤波器组把时间序列变换到频域,子频段的个数是4个或8个,取每一个子频段幅值的最大值作为这个子频段的尺度因子;s102,比特分配和子带量化:每一个子频段有若干幅值需要编码,每个幅值需要用若干比特数来表示;同一个子频段中每个幅值的比特数相同,不同子频段幅值分配的比特数不同;为每个子频段分配幅值比特数的过程叫做比特分配;根据每个子频段的尺度因子及每个幅值需要的比特数,对每一个子频段进行编码的过程,得到每个子频段的量化结果,即子带量化;s103,比特流打包:是将每个子频段编码后的结果组合起来,加上校验码、帧头信息,生成比特流数据发送。进一步,所述步骤200中,sbc解码过程是编码过程的逆过程,其输入是二进制流,输出是脉冲编码调制数据,其具体步骤如下:首先对比特流进行解包,得到一帧一帧的数据;每一帧中都包含子频段数、每个子频段的尺度因子、每个子频段幅值需要的比特数;根据这些信息及每个子频段编码之后的数据,重建子频段的编码前的数据;然后经过逆向的多相滤波器组,得到原始的脉冲编码调制数据;将所有子频段的脉冲编码调制数据合并,得到解码后的脉冲编码调制语音数据。更进一步,步骤s102中,将比特分配设置为snr,在8k采样率实现8:1的压缩率。更进一步,所述步骤s300,包括以下步骤:步骤s301,重叠加窗,时频转换:降噪模块每次处理的时域点数为64点;每次保留前一帧的64个点的数据,组成128个点的语音帧,通过加窗防止重叠带来的突变,并保证重叠区部分窗口的平方和必须为1;根据需求设计的16bit位宽的128点窗函数的如下:sqrthanning=[0,399,798,1196,1594,1990,2386,2780,3172,3562,3951,4337,4720,5101,5478,5853,6224,6591,6954,7313,7668,8019,8364,8705,9040,9370,9695,10013,10326,10633,10933,11227,11514,11795,12068,12335,12594,12845,13089,13325,13553,13773,13985,14189,14384,14571,14749,14918,15079,15231,15373,15506,15631,15746,15851,15947,16034,16111,16179,16237,16286,16325,16354,16373,16384,16373,16354,16325,16286,16237,16179,16111,16034,15947,15851,15746,15631,15506,15373,15231,15079,14918,14749,14571,14384,14189,13985,13773,13553,13325,13089,12845,12594,12335,12068,11795,11514,11227,10933,10633,10326,10013,9695,9370,9040,8705,8364,8019,7668,7313,6954,6591,6224,5853,5478,5101,4720,4337,3951,3562,3172,2780,2386,1990,1594,1196,798,399];时域加窗操作表示为:其中,y(n)是128点的一帧脉冲编码调制数据,加窗后进行128点fft运算;长度为n的数据序列y(n)的离散傅里叶变换y(k)可表示为:其中,,为旋转因子;本步骤用按频率抽取的基4fft实现时域到频域的转换;步骤s302,最小值跟踪估计噪声:采用连续谱最小值跟踪法估计频域噪声分量;首先对各频点带噪语音功率谱进行平滑处理:其中,p(k,n)为平滑后的第n帧、k频点的语音信号功率谱;y(k,n)为第n帧、k频点的幅值;α为平滑因子;平滑处理后对各频点带噪语音功率最小值进行非线性跟踪:ifelseend本步骤中的非线性跟踪会连续对噪声功率进行估计,这里的就是估计的噪声功率谱密度;其中α取值为0.9,β取值为0.15,γ为0.8;步骤s303,维纳滤波降噪:维纳滤波的频域响应表示为:滤波后的频域信号表示为:步骤s304,去加窗,频时转换:经过维纳滤波后,对频域信号进行去窗操作,使用加窗同样的窗函数,保证重叠区部分窗口的平方和为1;去窗函数表示为:由x(k)通过离散傅里叶逆变换(idft)到x(n)表示为:通过上述步骤,实现了语音信号16kbit/s的传输比特率。本发明基于sbc编解码,提出一种8k采样率的8:1语音压缩/解压方案,并对解压后的语音进行降噪,实现了低传输比特率传递高质量音频数据的低计算复杂度的音频编解码。附图说明图1是低传输比特率高质量语音编解码方案实现流程图图2是sbc编码框图;图3是sbc解码框图;图4是频域降噪流程图。具体实施方式下面结合附图,对本发明作进一步详细说明。sbc(subbandcodec)叫做子带编码。它的基本原理是把信号的频率分为若干子带,然后对每个子带进行编码,并根据每个子带的重要性及特点分配不同的位数(采样深度)来表示音频数据。如图2所示,sbc编码的输入是pcm(脉冲编码调制)数据,即采样后的时间序列,输出是二进制流。多相滤波器组把时间序列变换到频域,子频段的个数可以是4个或8个,对应不同的多相滤波器组。每一个子频段的幅值的范围是不同的,取每一个子频段幅值的最大值作为这个子频段的尺度因子(scalefactor)。每一个子频段有若干幅值需要编码,每个幅值需要用若干比特数来表示。同一个子频段中每个幅值的比特数相同,不同子频段幅值分配的比特数不同。为每个子频段分配幅值比特数的过程叫做比特分配(allocationmethod)。根据每个子频段的尺度因子及每个幅值需要的比特数,对每一个子频段进行编码的过程,得到每个子频段的量化结果,即子带量化(quantizedsubband)。比特流打包(bitstreampacking)是将每个子频段编码后的结果组合起来,加上校验码、帧头信息等的过程。图3所示的sbc解码过程是编码过程的逆过程,其输入是二进制流,输出是pcm数据。首先对二进制流进行解包,得到一帧一帧的数据。每一帧中都包含子频段数(4或8)、每个子频段的尺度因子、每个子频段幅值需要的比特数,根据这些信息及每个子频段编码之后的数据,重建子频段的编码前的数据。然后经过逆向的多相滤波器组,得到原始的pcm数据。将所有子频段的pcm数据合并,得到解码后的pcm数据。通过sbc编码原理可知,sbc编码中唯一和采样率相关的过程是比特分配。sbc编码参数中的比特分配分为snr和loudness。两个配置决定比特分配是根据各频带的信噪比或是响度。如果设置为snr时,比特分配和采样率是无关的。所以当我们将比特分配(allocationmethod)设置为snr时,sbc是可以支持8k采样率的。为了在8k采样率实现8:1的压缩率,所需的sbc参数配置如下表所示。表1.sbc参数配置参数名配置channelmodemonobitpool12allocationmethodsnrblocks16bands88k采样率实现8:1的压缩率会引入噪声,降低了语音质量。降噪模块的原理是在频域采用维纳滤波器抑制估计出来的噪声。如图4所示,降噪模块的步骤如下:1)加窗和离散傅里叶模块的设计降噪模块每次处理的时域点数为64点。每次保留前一帧的64个点的数据,组成128个点的语音帧,通过加窗防止重叠带来的突变,并保证重叠区部分窗口的平方和必须为1。根据需求设计的16bit位宽的128点窗函数的如下:sqrthanning=[0,399,798,1196,1594,1990,2386,2780,3172,3562,3951,4337,4720,5101,5478,5853,6224,6591,6954,7313,7668,8019,8364,8705,9040,9370,9695,10013,10326,10633,10933,11227,11514,11795,12068,12335,12594,12845,13089,13325,13553,13773,13985,14189,14384,14571,14749,14918,15079,15231,15373,15506,15631,15746,15851,15947,16034,16111,16179,16237,16286,16325,16354,16373,16384,16373,16354,16325,16286,16237,16179,16111,16034,15947,15851,15746,15631,15506,15373,15231,15079,14918,14749,14571,14384,14189,13985,13773,13553,13325,13089,12845,12594,12335,12068,11795,11514,11227,10933,10633,10326,10013,9695,9370,9040,8705,8364,8019,7668,7313,6954,6591,6224,5853,5478,5101,4720,4337,3951,3562,3172,2780,2386,1990,1594,1196,798,399];时域加窗操作可表示为:其中,y(n)是128个点的语音帧,加窗后进行128点fft运算。长度为n的数据序列y(n)的离散傅里叶变换y(k)可表示为:其中,称为旋转因子。本方法用按频率抽取的基4fft实现时域到频域的转换。2)噪声估计模块本方法采用连续谱最小值跟踪法估计频域噪声分量。首先对各频点带噪语音功率谱进行平滑处理:其中,p(k,n)为平滑后的第n帧、k频点的语音信号功率谱;y(k,n)第n帧、k频点的幅值。α为平滑因子。平滑处理后对各频点带噪语音功率最小值进行非线性跟踪:ifelseend方法中的非线性跟踪会连续对噪声功率进行估计,这里的就是估计的噪声功率谱密度。其中α取值为0.9,β取值为0.15,γ为0.8。3)频域维纳滤波模块维纳滤波的频域响应可表示为:滤波后的频域信号可表示为:4)去窗和ifft模块经过维纳滤波后,对频域信号进行去窗操作,使用加窗同样的窗函数,保证重叠区部分窗口的平方和为1。去窗函数可表示为:由x(k)通过离散傅里叶逆变换(idft)到x(n)可表示为:通过上述方案,实现了语音信号16kbit/s的传输比特率。在易兆微电子的蓝牙语音遥控器项目中,需要遥控器端通过蓝牙模块模块,传输16khz采样率的pcm语音数据到接收端进行语音识别。可知16khz的pcm(16bit)占用的带宽为256kb/s。采用本专利提出的语音编解码方案,实现16kb/s的传输比特率,整体的压缩率达到16:1。方案整体的流程如下:1)实现16khz采样率到8khz采样率的下采;2)遥控器端实现8khz采样率下低运算复杂度的8:1语音压缩;3)接收端对接受数据解压缩得到8khz的语音;4)对8khz的语音进行降噪,提高语音质量;5)实现8khz到16khz的采样率变换;编解码后的音频和原始音频在听感上基本没有差别,也没有降低语音识别率。本发明按照实施例进行了说明,在不脱离本原理的前提下,本装置还可以作出若干变形和改进。应当指出,凡采用等同替换或等效变换等方式所获得的技术方案,均落在本发明的保护范围内。当前第1页1 2 3 
起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。
此文章来源于网络,如有侵权,请联系删除
热门咨询
tips