语音编码

1.系统基本原理分析

1.1系统设计要求

将WAV 格式的模拟音频信号转换为数字信号,WAV格式的文件自己选择。

下面是需要完成的具体部分:

Encoder:   filter bank(32)                Decoder:   huffman decoding

          DCT/quantization                        IDCT/inverse quantiser     

          Huffman coding                         inverse filter bank

课题的输出要求及结果:

  1. 读取 WAV 格式的文件(没有压缩过的)
  2. 用Encoder 完成信号的压缩
  3. 显示并对比经过压缩后的信号的存储空间减小了   
  4. 用Decoder 完成信号的解码
  5. 在MATLAB 里经解码后的声音播放出来

1.2 系统设计方案

Encoder:   filter bank(32)                Decoder:   huffman decoding

          DCT/quantization                        IDCT/inverse quantiser     

          Huffman coding                         inverse filter bank

具体的理论分析与代码在2部分结合给出。

2.系统代码设计

·语音读取模块

语音读取的代码如下所示:

function [x,Fs,nbits] = func_readwav(resources);

[x,Fs,nbits]=wavread(resources);   

sound(x,Fs,nbits);

其波形如下所示:

·滤波器与滤波器反变化

    用窗函数法设计FIR滤波器组的基本思路为:

 (1)根据所要求的分析频率范围和频率分辨率选择一组分析频率ωk及相对应的原型理想低通滤波器的截止频率ωck(k=0,1,…,L-1),L为滤波器组的通道数,得出理想带通滤波器组的复合频率响应。

(2)用窗函数法近似实现各个理想带通滤波器。实际的复合频率响应等于理想复合频率响应与设计窗的频率特性的卷积。在用窗函数法设计FIR滤波器时,还需要知道通带内的纹波幅度δ,它可以根据阻带衰减量As的要求来确定,通常的典型值为

As=-20lgδ=40∽60                                              (1)

如果选择Kaiser窗,参数β的计算公式为

当As >50时,β=0.1102(As-8.7);

当21<As <50时,β=0.5845(As-21)0.5+0.07886(As-21)。            (2)

滤波器的阶数为

        M=(As-7.95)/14.36△F+1                                         3)

式中△F是归一化过渡带宽,即△F=△f•T,而

        △f=△ω/2π                                                   (4)

过渡带宽△ω的选择根据对每个滤波器的频率分辨率要求来决定,必须满足限制条件

△ωk<2ωck                                                     (5)

如果各通道采用相同的设计窗,保证中心频率及带宽的选择能覆盖-π到π频率范围(不管滤波器的中心频率和带宽如何分布),那么最终得到的实际复合响应一定是理想的,即具有平坦幅度和线性相位。

   

 

首先计算各个通道下的滤波器H0,H1,H2,。。。。。H31。

然后分别进行滤波。得到各个通道下的滤波效果;

 

反滤波过程。

g0=-wrev(H(1,:));

g1=-wrev(H(2,:));

…………

首先对各个H,取逆。然后作为反滤波器函数G。

然后再次分别进行滤波从而得到各个通道下的滤波后的数据,然后将各个通道下的数据相加得到原始的信号。

load H.mat;

if select == 1

g0=-wrev(H(1,:));

g1=-wrev(H(2,:));

g2=-wrev(H(3,:));

g3=-wrev(H(4,:));

x_recon=filter(g0,1,datas(1,:))+filter(g1,1,datas(2,:))+filter(g2,1,datas(3,:))+filter(g3,1,datas(4,:));

end

if select == 0

x_recon    = datas;

end  

注意,由于本系统采32子通道的话将耗费大量的仿真时间,因此,本系统暂时采用的4通道的仿真模式。其滤波器组的仿真结果如下所示;

    【采用32个通道的时候,仿真时间超级长,所以先给你做出基本的东西,如果没什么问题,改为32个通道就OK。】

 

·DCT与IDCT

我们在这里使用MATLAB内部的dct函数。这里就不多做介绍了。

这里比较简单,就是MATLAB自带的函数,dctidct两个函数。

 

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MATLAB语音编码是指使用MATLAB软件对语音信号进行压缩或加密处理的过程。语音编码的目的是减小语音信号的数据量,同时尽可能保持语音质量。MATLAB提供了一系列算法和函数,用于实现不同的语音编码技术。 常见的MATLAB语音编码技术包括线性预测编码(LPC)、自适应差分脉冲编码调制(ADPCM)、自适应编码/解码器(ACELP)等。这些技术通过对语音信号进行数学建模和压缩处理,可以达到较高的压缩比和保真度。 在MATLAB中,可以使用MATLAB语音处理工具箱提供的函数和工具,例如lpc函数实现LPC编码,adhocde函数实现ADPCM编码,vocoder函数实现ACELP编码等。通过调用这些函数和工具,可以对语音信号进行编码和解码处理。 使用MATLAB进行语音编码的主要步骤包括:首先,对语音信号进行预处理,例如去除静音段、分帧、加窗等;然后,选择合适的编码算法和参数,对分帧后的语音信号进行编码;最后,将编码后的数据恢复为原始语音信号,可以进行解码和播放。 MATLAB语音编码语音通信、语音压缩等领域有广泛的应用。通过合理选择编码算法和参数,可以实现在保持较低数据传输率的同时,保证语音质量。同时,使用MATLAB进行语音编码也可以进行语音加密处理,保护语音信息的安全性。 总之,MATLAB语音编码是一种将语音信号进行压缩或加密处理的技术,通过使用MATLAB提供的函数和工具实现。它在语音通信、语音压缩以及语音加密等领域具有广泛的应用前景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fpga和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值