基于DCT变换和huffman编码的语音压缩算法matlab仿真

简介: 基于DCT变换和huffman编码的语音压缩算法matlab仿真

1.算法运行效果图预览

1.jpeg
2.jpeg
3.jpeg
4.jpeg

2.算法运行软件版本
matlab2022a

3.算法理论概述
语音是人类最重要、最有效、最常用和最方便的交换信息的形式,是人们思想疏通和情感交流的最主要途径。在实际的语音通信中,有些信道难以扩宽且质量很差;有些信道正被广泛使用,短期内难以更新;有些昂贵的信道,每压缩一个比特都意味着节省开支。因此,语音压缩编码无疑在语音通信及人类信息交流中占有举足轻重的地位。

   随着通信技术的快速发展,语音压缩编码技术得到了快速发展和广泛应用,尤其是最近20年,语音压缩编码技术在移动通信、卫星通信、多媒体技术以及IP电话通信中得到普遍应用,起着举足轻重的作用。语音编码就是将采集得到的数字语音信号作为数字信号传输、存储或处理,然后对数字语音信号进行压缩编码从而减小存储空间。

   本系统主要包括以下几个模块:多通道滤波器,DCT变换与反变换,量化与逆量化,哈夫曼编码译码,系统的结构框图如下所示:

66a7a0ee9d93df709258e7d10fa89094_82780907_202309222347320691280684_Expires=1695398252&Signature=FdjBXZAdboKDQFz28wBFucO%2FxVs%3D&domain=8.png

4.1 多通道滤波
多通道滤波器被用来对多个输入数据流进行滤波,在通信、多媒体等领域被广泛使用。多通道的主要优势在于可以在输入数据流(通道)采样率较低的情况下,使用速度很快的运算单元。其基本结构如下所示:

9c5506bd475e82610febf147143efafd_82780907_202309222349210207370573_Expires=1695398361&Signature=URuAjUIMvc%2B08ycATxLSQkbBrfw%3D&domain=8.png

6dfae8ba668f0ef15ad707bec716c716_82780907_202309222349210160933526_Expires=1695398361&Signature=meNJcRzbpBI7mzvRtCax1LIV5VQ%3D&domain=8.png

4.3 哈夫曼编码
huffman编码经常应用于数据压缩。 在计算机信息处理中,“哈夫曼编码”是一种一致性编码法,用于数据的无损耗压缩。这一术语是指使用一张特殊的编码表将源字符进行编码。这张编码表的特殊之处在于,它是根据每一个源字符出现的估算概率而建立起来的。

    本系统发送端最后的编码模块,需要将量化后的数据进行压缩,得到二进制比特率进行发送,这里我们使用huffman编码。Huffman编码的基本原理如下所示:哈夫曼编码是用于数据文件压缩的一个十分有效的编码方法,压缩率通常在20%~90%之间。哈夫曼编码算法使用字符在文件中出现的频率表来建立一个0,1串,以表示各个字符的最优表示方式。

4.部分核心程序

```%% step2:编码
%step2.1:filter bank
%子通道数目,这里暂时设置为4,因为整个系统运行比较缓慢,设置为多通道后,仿真时间
%为原来的N倍,所以这里暂时取N=2,即2通道滤波器组。
N = 127;
nbands = 32;
data_filter = func_32_filter(N,nbands,x,select);
%step2.2:DCT
data_DCT = func_dct(data_filter,select);
figure;
plot(data_DCT(1,:),'r');grid on;title('其中一个通道的DCT变化后的效果仿真');
%step2.3:量化
data_quantization = func_q(data_DCT,select);
%step2.4:huffman 编码
[data_Huffman1 ,data_Huffman2 ,data_Huffman3 ,data_Huffman4,...
data_Huffman5 ,data_Huffman6 ,data_Huffman7 ,data_Huffman8,...
data_Huffman9 ,data_Huffman10,data_Huffman11,data_Huffman12,...
data_Huffman13,data_Huffman14,data_Huffman15,data_Huffman16,...
data_Huffman17,data_Huffman18,data_Huffman19,data_Huffman20,...
data_Huffman21,data_Huffman22,data_Huffman23,data_Huffman24,...
data_Huffman25,data_Huffman26,data_Huffman27,data_Huffman28,...
data_Huffman29,data_Huffman30,data_Huffman31,data_Huffman32] = func_huffman2(data_quantization,select);

save y.mat data_Huffman1

%% step3:解码
%step3.1 huffman解码
data_unhuffman = func_invhuffman2(data_Huffman1 ,data_Huffman2 ,data_Huffman3 ,data_Huffman4,...
data_Huffman5 ,data_Huffman6 ,data_Huffman7 ,data_Huffman8,...
data_Huffman9 ,data_Huffman10,data_Huffman11,data_Huffman12,...
data_Huffman13,data_Huffman14,data_Huffman15,data_Huffman16,...
data_Huffman17,data_Huffman18,data_Huffman19,data_Huffman20,...
data_Huffman21,data_Huffman22,data_Huffman23,data_Huffman24,...
data_Huffman25,data_Huffman26,data_Huffman27,data_Huffman28,...
data_Huffman29,data_Huffman30,data_Huffman31,data_Huffman32,...
select);

%step3.2 反量化
data_inquantization = func_unq(data_unhuffman,select);

%step3.3 反DCT
data_IDCT = func_IDCT(data_inquantization,select);
figure;
plot(data_IDCT(:,1),'r');hold on; grid on;title('其中一个通道IDCT后的效果');

%step3.4 反滤波器
reconstruct_sound = func_inv32_filter(data_IDCT',select);
figure;
plot(reconstruct_sound,'r');
title('重构后的音乐');
grid on;
%% step4:解码之后播放
sound(reconstruct_sound,Fs);
toc


```

相关文章
|
11月前
|
5G
基于IEEE 802.11a标准的物理层MATLAB仿真
基于IEEE 802.11a标准的物理层MATLAB仿真
577 0
|
11月前
|
算法
基于MATLAB/Simulink平台搭建同步电机、异步电机和双馈风机仿真模型
基于MATLAB/Simulink平台搭建同步电机、异步电机和双馈风机仿真模型
1251 30
|
11月前
|
编解码 算法 数据可视化
MATLAB 实现同步压缩小波变换
MATLAB 实现同步压缩小波变换
732 3
|
11月前
|
机器学习/深度学习 算法 数据可视化
基于MVO多元宇宙优化的DBSCAN聚类算法matlab仿真
本程序基于MATLAB实现MVO优化的DBSCAN聚类算法,通过多元宇宙优化自动搜索最优参数Eps与MinPts,提升聚类精度。对比传统DBSCAN,MVO-DBSCAN有效克服参数依赖问题,适应复杂数据分布,增强鲁棒性,适用于非均匀密度数据集的高效聚类分析。
|
11月前
|
存储 人工智能 移动开发
利用 Hough 变换处理量测得到的含杂波的二维坐标,解决多目标航迹起始问题(Matlab代码实现)
利用 Hough 变换处理量测得到的含杂波的二维坐标,解决多目标航迹起始问题(Matlab代码实现)
276 0
|
11月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
883 0
|
11月前
|
数据采集 分布式计算 并行计算
mRMR算法实现特征选择-MATLAB
mRMR算法实现特征选择-MATLAB
536 2
|
存储 编解码 算法
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
382 6
|
12月前
|
传感器 机器学习/深度学习 编解码
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
460 3
|
11月前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
486 8

热门文章

最新文章