【《音频压缩实验结果分析案例》5300字】_第1页
【《音频压缩实验结果分析案例》5300字】_第2页
【《音频压缩实验结果分析案例》5300字】_第3页
【《音频压缩实验结果分析案例》5300字】_第4页
【《音频压缩实验结果分析案例》5300字】_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

音频压缩实验结果分析案例目录TOC\o"1-3"\h\u12411音频压缩实验结果分析案例 1143741.1概念证明简述 1210121.2双通道滤波器组实现方法 1314011.2双通道QMF滤波器组实现方法 6169601.332通道伪QMF滤波器组实现方法 9312761.4滤波器组与重叠变换 11282281.5感知音频编码 131.1概念证明简述关于MPEG-1Layer-Iaudio编码规范的概念证明,我们首先研究使用常规滤波器和QMF滤波器的双通道滤波器组。然后,我们将研究扩展到32通道PQMF滤波器组,并说明如何使用基于块的重叠变换有效地实现它。通过为滤波器组提供用于子带信号的感知量化器来结束。1.2双通道滤波器组实现方法在研究完整的M通道滤波器组之前,我们首先讨论两个通道的情况,以及每个分支中抽取和插值的影响。首先生成一个采样率为8kHz的4秒线性调频信号(从0到4kHz),以此为参考,绘制频谱图(图1.1)。Fs=8000;%信号的采样频率为8kHzinput_signal=chirp((0:4*Fs)/Fs,0,4,4000);%输入对应数据的线性调频信号specgram(input_signal,1024,Fs,256);%原始线性调频信号的语谱图1.1原始线性调频信号语谱图直接将下采样-上采样乘以2会导致其他所有采样都被替换为零。这里解决的办法是添加伪像信号,伪像信号无需使用分析和合成滤波器即可进行上采样,其频谱是线性调频信号的正交镜像。两个正弦波在任何时候都可以被听到(图1.2)。(请注意,在上采样时,我们将信号乘以2,以便信号的功率保持不变。)downsampled=input_signal(1:2:end);%下采样为从1到结束间隔2的输入信号upsampled(1:2:2*length(downsampled))=2*downsampled;%上采样为2倍下采样1.2在不使用分析和合成滤波器的情况下对下采样进行上采样后的线性调频信号语谱图在上采样后增加一个四分之一频带滤波器来消除图像失真,并确保在任何时候都只有一个正弦曲线(图1.3和图1.4)。在线性调频信号语谱图的前半段,正弦波就是他自己本身。在后半段,由于线性调频信号的正交镜像,正弦曲线是一个别名。为了避免相位失真,我们将合成滤波器设计为对称FIR,并将其阶数设置为1000,以获得高阻带抑制(接近80dB)。注意:前1000个样本是瞬态的。G0=fir1(1000,1/2);%低通合成滤波器G0的窗函数freqz(G0,1);%G0滤波器频率响应函数G0_output=filter(G0,1,upsampled);%G0滤波器的输出specgram(G0_output(1001:end),1024,Fs);%仅使用低通合成滤波器进行下采样-上采样后的线性调频频谱图图1.3四分之一频带分析滤波器的频率响应;1.4仅使用低通合成滤波器进行下采样-上采样后的线性调频频谱图在下采样之前添加另一个四分之一频带滤波器可消除混叠失真,即线性调频信号语谱图的后半部分的混叠(1.5)。该合成过滤器与分析过滤器相同。H0=G0;%低通分析滤波器等于低通合成滤波器H0_output=filter(H0,1,input_signal);%低通分析滤波器H0的输出downsampled=H0_output(1:2:end);%下采样为H0滤波器间隔2的输出信号upsampled(1:2:2*length(downsampled))=2*downsampled;%上采样为两倍下采样G0_output=filter(G0,1,upsampled);%G0滤波器的输出specgram(G0_output(2001:end),1024,Fs,256);%使用低通分析和合成滤波器进行下采样-上采样后的线性调频频谱图1.5使用低通分析和合成滤波器进行下采样-上采样后的线性调频频谱图1.6具有高通分析和合成滤波器的功能相同。使用HF四分之一波段滤波器替代LF滤波器并选择线性调频信号的后半部分(图1.6)。G1=fir1(1000,1/2,'high');H1=G1;H1_output=filter(H1,1,input_signal);%滤波器替代的实现downsampled=H1_output(1:2:end);%下采样为H1滤波器间隔2的输出upsampled(1:2:2*length(downsampled))=2*downsampled;%上采样为两倍下采样G1_output=filter(G1,1,upsampled);%G1滤波器的输出现在,我们通过将上面获得的两个信号相加来检查双通道子带滤波器组的输出(图1.7)。如先前的频谱图所示,无法实现完美的重构。仔细检查误差波形(1.8)显示,大多数误差位于信号中心(频谱图未显示),即,对于H0和H1滤波器重叠的频率来说,在每个频带中都不能避免更重要的混叠。synt_signal=G0_output+G1_output;%移位合成信号以解决过滤器延迟%N阶(长度N+1)的对称FIR滤波器带来N/2个样本的延迟error=synt_signal(1001:end)-input_signal(1:end-1000);%错误信号图1.7双通道滤波器组输出的频谱图图1.8错误信号波形1.2双通道QMF滤波器组实现方法在添加低通和高通子带信号时可以消除整体混叠的情况下,即使使用非理想的滤波器(即在每个频带中都有一些混叠),也可以实现完美的重构。正如我们将看到的,这主要是分析和综合过滤器的责任。Johnson的QMF滤波器为近乎完美的重建提供了解决方案。在此示例中,我们使用Johnson的“B-12”QMF(图1.9)。H0_QMF=[-0.0064439770.02745539-0.00758164...-0.09138250.098085220.4807962];%H0QMF滤波器H0_QMF=[H0_QMFfliplr(H0_QMF)];[H0,W]=freqz(H0_QMF,1);%返回512点复频响应矢量H0和512点的频率向量wH1_QMF=H0_QMF.*[1-11-11-11-11-11-1];%H1QMF滤波器[H1,W]=freqz(H1_QMF,1);%返回512点复频响应矢量H1和512点的频率向量w这些滤波器的频率选择不是很严格(因为它们的阶数很低),因此将允许在每个频带中使用重要的混叠。通过将我们的线性调频信号通过相应的滤波器组来确保这一点(图1.10、1.11)。%低频波段H0_output=filter(H0_QMF,1,input_signal);%H0滤波器的输出subband_0=H0_output(1:2:end);%子带0为H0滤波器间隔2的输出upsampled(1:2:2*length(subband_0))=2*subband_0;%上采样为两倍子带G0_QMF=H0_QMF;%设G0QMF滤波器为H0QMF滤波器G0_output=filter(G0_QMF,1,upsampled);%G0滤波器的输出%高频波段H1_output=filter(H1_QMF,1,input_signal);%H1滤波器的输出subband_1=H1_output(1:2:end);%子带1为H1滤波器的输出upsampled(1:2:2*length(subband_0))=2*subband_1;%上采样为两倍子带G1_QMF=-H1_QMF;%设G1QMF滤波器为负H1QMF滤波器G1_output=filter(G1_QMF,1,upsampled);%G1的输出synt_signal=G0_output+G1_output;%合成信号为G0和G1输出的和图1.9双通道QMF滤波器组输出的频谱图;图1.10QMF滤波器组的LF通道输出的频谱图;图1.11HF通道输出的频谱图。可以观察到重要的混叠。但是,由于QMF分析和合成滤波器使得每个频带中的混叠总和为0的十次方(图1.12),因此现在可以实现完美的重构。图1.12双通道QMF滤波器组输出的频谱图1.332通道伪QMF滤波器组实现方法现在,我们按照MPEG-1Layer-I规范实施了一个32通道PQMF滤波器组,并检查其完善的重构能力。MATLAB函数涉及:hn=PQMF32_prototype在hn中返回长度为512的原型低通对称滤波器的脉冲响应,用于构建32通道PQMF滤波器组。该滤波器在MPEG-1Layer-I编码器中使用。其带通为Fs/2/32/2=341.5Hz,并且满足PR条件。我们首先从原型滤波器构建滤波器组,然后检查所有滤波器的幅度频率响应(图1.13)。显然,PQMF滤波器不是带宽=689Hz的理想带通滤波器,但是它们的响应仅与两个相邻的滤波器重叠(因此,它们的名称为“伪”QMF滤波器)。实际上,每个滤波器的总带宽约为689Hz的两倍。注意滤波器增益为15dB,即20*log10(32)/2。结果,两次通过滤波器将产生32的增益,该增益将32的抽取补偿。在下一行中,因此不必将32的上采样子带信号相乘。%加载原型低通滤波器hn=PQMF32_prototype;%构建32个以归一化频率Fi=(2*i+1)/64*1/2为中心的余弦调制滤波器PQMF32_Hfilters=fliplr(PQMF32_Gfilters);fori=1:32[H,W]=freqz(PQMF32_Hfilters(i,:),1,512,44100);plot(W,20*log10(abs(H)));holdonendxlabel('Frequency(Hz)');ylabel('Magnitude(dB)');set(gca,'xlim',[022050]);ylabel('Magnitude(dB)');holdoff;1.13PQMF滤波器组的32个分析滤波器的幅频响应;1.14包含小提琴演奏的一些音符的音频信号的频谱图现在,让我们检查一下在馈入2秒以41.100Hz采样的小提琴单声道信号时,PQMF滤波器组的输出(图1.14)。如收听子带3所示,隔离的子带信号非常混叠,因为每个PQMF滤波器都不理想(图1.15)。[input_signal,Fs]=wavread('violin.wav');output_signal=zeros(size(input_signal));%输出信号fori=1:32Hi_output=filter(PQMF32_Hfilters(i,:),1,input_signal);subband_i=Hi_output(1:32:end);upsampled_i(1:32:32*length(subband_i))=subband_i;%合成滤波器是分析滤波器的对称滤波器,可确保每个子带中的线性相位Gi_output=filter(PQMF32_Gfilters(i,:),1,upsampled_i');output_signal=output_signal+Gi_output;ifi==3G3_output=Gi_output;图1.15子频带3的频谱图;图1.16样本11000附近的原始信号和误差信号的周期图。但是,PQMF滤波器组可确保在添加子带时相邻带中的混叠自行消除。重建误差的功率比信号的功率低约85dB(图1.16)。请注意,输出延迟了511个样本(因为分析和合成过滤器的延迟为511/2个样本)。1.4滤波器组与重叠变换现在我们展示如何使用块变换来实现分析和综合过滤器。当在M通道子带滤波器中使用的滤波器的长度恰好是M个样本时,这些操作将简化为对输入信号的连续M个样本帧进行连续,不重叠的线性变换。例如,一个4样本DFT可以实现一个4通道滤波器组,其子带滤波器脉冲响应是4x4DFT矩阵的线的时间反转。将其应用于我们的线性调频信号很简单。Fs=8000;input_signal=chirp((1:4*Fs)/Fs,0,4,4000);fori=1:length(input_signal)/4%用4个样本创建列向量input_frame=input_signal(4*(i-1)+1:4*(i-1)+4)';%在每个下采样的子带中产生一个样本,即,在一个操作中对所有子带进行带通滤波和下采样。subbands=fft(input_frame);%产生滤波器组输出的四个样本,即上采样,对所有子带进行带通滤波,并在一个操作中将它们相加。output_frame=ifft(subbands);%将输出列向量存储在输出信号output_signal(4*(i-1)+1:4(i-1)+4)=output_frame'中;end;%soundsc(output_signal,Fs);显然,这将返回原始的线性调频信号。然而,由于基础滤波器具有复数系数,所以每个子带信号都是复数。而且,这种类型的滤波器组不是很好的频率选择性,如图1.17所示。相邻频带之间的频率重叠大约是主瓣带通的一半(与PQMF的上一部分相同),但是旁瓣非常高。这不能使其成为子带编码的良好候选者。图1.17DFT滤波器组的4个通道的幅频响应。注意,我们显示了在整个[0,1]频率范围内的响应,因为这些频率响应不是双向的。通常,子带编码器中使用的分析和综合滤波器的脉冲响应的长度大于信道的数量M。但是,滤波操作仍然可以实现为L样本帧与LxM或MxL矩阵的乘积。其中每个滤波器的脉冲响应的长度N为512个样本,可以如下有效地实现(这与我们以前基于DFT的滤波器组的实现非常相似,但有重叠部分)。显然,我们得到了与以前相同的结果(图1.18)。图1.18样本11000附近的原始信号和误差信号的周期图1.5感知音频编码上文中开发的子带滤波过程将原始采样流以采样频率Fs转换为以Fs/32采样的32个并行子带。它仍然需要一个量化和编码步骤来产生整体的比特率压缩。统一量化子带样本不允许在低比特率下实现很高的透明性,如每个子带样本的4位测试中所显示的低(压缩系数=4)。产生的输出信号降级;其频谱图如图1.19所示。%构建PQMFH和G过滤器hn=PQMF32_prototype;PQMF32_Gfilters=zeros(32,512);fori=0:31t2=((2*i+1)*pi/(2*32))*((0:511)+16);PQMF32_Gfilters(i+1,:)=hn.*cos(t2);end[input_signal,Fs]=wavread('violin.wav');%基于块的子带分析过滤input_frame=zeros(512,1);output_signal=zeros(size(input_signal));n_frames=(length(input_signal)-512+32)/32;fori=1:n_frames%重叠input_frames(列向量)input_frame=input_signal((i-1)*32+1:(i-1)*32+512);%分析过滤器和下采样%注意:我们将子带信号放在列中subbands(i,:)=(PQMF32_Gfilters*input_frame)';%使用中线程对4位进行均匀量化quantizerin[-1,+1]n_bits=4;alpha=2^(n_bits-1);quantized_subbands(i,:)=…(floor(alpha*subbands(i,:)+0.5))/alpha;%mid-thread%综合过滤器output_frame=PQMF32_Gfilters'*quantized_subbands(i,:)';%重叠输出帧(延迟511个样本)output_signal((i-1)*32+1:(i-1)*32+512)=...output_signal((i-1)*32+1:(i-1)*32+512)+output_frame;end输出信号严重失真。SNR下降到10.3dB。%注意:不需要延迟补偿,因为第一个子带%重叠变换产生的样本对应于第512个原始样本error=output_signal-input_signal;[signal_psd,w]=periodogram(input_signal(11001:12024),…hamming(1024));[error_psd,w]=periodogram(error(11001:12024),…hamming(1024));plot(w/pi*22050,10*log10(signal_psd));holdon;plot(w/pi*22050,10*log10(error_psd),'r','linewidth',2);holdoff;snr_4bits=snr(input_signal(512:end-512),…output_signal(512:end-512),0)snr_4bits=10.3338图1.19使用固定的4位均匀量化的子带编码图1.19(顶)使用固定的4位均匀量化的子带编码语谱图图1.19(底)使用固定的4位均匀量化的子带编码的原始信号和误差信号的周期图(此处在样本11000附近计算)几乎相同,除了低频。可以看到,这个固定的[-1,+1]量化范围并不能充分考虑子带信号电平在子带之间以及时间上的变化(图1.20)。plot(quantized_subbands(100:200,2));holdon;plot(subbands(100:200,2),'--r');holdoff;图1.20使用固定的4位均匀量化前后子带#2摘录图1.21使用能级的4位均匀量化前后子带#2的摘录因此,提高其质量的一种显而易见的方法是将比例因子应用于每个子带量化器。与MPEG-1Layer-I编码器一样,我们每12个子带样本(即,在原始采样率下,每32x12=384个样本)计算一个新的比例因子。由此产生的量化误差大大降低了((图1.21)。%每块12帧的自适应量化n_frames=fix(n_frames/12)*12;fork=1:12:n_frames%计算每12个样本子带块中的比例因子[scale_factors,tmp]=max(abs(subbands(k:k+11,:)));%在[-最大值,+最大值]中使用中线程量化器对4位进行自适应均匀量化forj=1:32%foreachsub-bandn_bits=4;alpha=2^(n_bits-1)/scale_factors(j);quantized_subbands(k:k+11,j)=...%mid-thread(floor(alpha*subbands(k:k+11,j)+0.5))/alpha;end;end;现在所产生的信号具有更高的质量,如图1.22所示。整体SNR已增加到25dB。图1.22使用自适应4位均匀量化的子带编码左:频谱图;右图:样本11000附近的原始信号和误差信号的周期图。snr_4bits_scaled=snr(input_signal(512:end-512),…output_signal(512:end-512),0)snr_4bits_scaled=25.0629最终的改进是迄今为止最有效的方法,也是多年音频研究的成果,它在于在不会被听到的频带中接受更多的量化噪声(通过分配更少的位,从而接受更低的SNR),并使用这些额外的比特用于在感知上更重要的频段。所需的感知信息由心理声学模型提供。对于从输入信号中获取的任何512样本帧,MPEG-1Layer-I心理声学模型计算一个全局掩蔽阈值,该阈值是通过首先分别检测突出的音调和噪声掩蔽器并将它们各自的阈值组合而获得的。然后将此全局阈值和绝对听觉阈值中的最大值作为最终阈值(图1.23)。MATLAB函数涉及:function[SMR,min_threshold_subband,masking_threshold]=MPEG1_psycho_acoustic_model1(frame)计算与MPEG-1音频中使用的心理声学模型#1对应的掩蔽阈值(以dB为单位)。输入帧长度应为512个样本。min_thresholdsubban返回32个子带中每个子带的最小屏蔽阈值。SMR返回27个信噪比(以dB为单位);不使用SMR。frame=input_signal(11001:11512);[SMR,min_threshold,frame_psd_dBSPL]=...MPEG1_psycho_acoustic_model1(frame);%注意:该函数返回的功率电平假定满量程信号([-1,+1]中的信号)对应于96DBSPLf=(0:255)/512*44100;auditory_threshold_dB=3.64*((f/1000).^-0.8)-...6.5*exp(-0.6.*((f/1000)-3.3).^2)+0.001*((f/1000).^4);plot(f,frame_psd_dBSPL,f,min_threshold,'r',...f,auditory_threshold_dB,'k');holdoff;axis([022050-20100]);legend('SignalPSD','Min.thresholdpersub-band',…'Absolutethreshold');xlabel('Frequency(Hz)');ylabel('Magnitude(dB)');以非常保守的方式为每个频带计算信噪比(SMR):信号PSD的最大值与每个频带中的掩蔽阈值的最小值之比。比特分配是通过迭代算法来执行的,该迭代算法优先考虑具有较高SMR的子带。每个子带中的最终SNR应大于或等于SMR,以便将噪声电平推到掩蔽阈值以下(图1.24)。MATLAB函数涉及:function[N_bits,SNR]=MPEG1_bit_allocation(SMR,bit_rate)实现简化的位分配贪婪算法。SMR是由MPEG1心理声学模型定义的每个子带中的信号屏蔽比。bit_rate以千比特/秒为单位。N_bits是每个子带中的位数。SNR是量化后每个子带中的最大SNR,即假设每个子带包含一个全范围正弦波的SNR。对于子带28至32,N_bits和SNR设置为零。%s以192kbits/s的目标比特率分配比特(压缩比为4)[N_bits,SNR]=MPEG1_bit_allocation(SMR,192000);stairs((0:32)/32*22050,[SMRSMR(32)]);holdon;stairs((0:32)/32*22050,[SNRSNR(32)],'--');axis([022050-20100]);legend('SMR','SNR');xlabel('Frequency(Hz)');ylabel('Magnitude(dB)');图1.23每个子带的屏蔽阈值图1.24信噪比(SMR),以及在分配比特后获得的最大(理论)SNR。SNR系统地高于SMR,从而使量化噪声听不见让我们最后在完整信号上对此进行测试,将感知比特分配添加到自适应均匀量化中。注意,与MPEG-1相比,我们在这里简化了量化方案,它考虑了使用[0…16]范围内的任意位数进行量化。%每块12帧的自适应量化n_frames=fix(n_frames/12)*12;fork=1:12:n_frames%计算每12个样本子带块中的比例因子[scale_factors,tmp]=max(abs(subbands(k:k+11,:)));%计算SMRsframe=input_signal(176+

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论