语音信号的A律压缩和u律压缩matlab仿真

简介: 语音信号的A律压缩和u律压缩matlab仿真

1.算法运行效果图预览
1.jpeg
2.jpeg
3.jpeg
4.jpeg

2.算法运行软件版本
MATLAB2022a

3.算法理论概述
语音信号的量化过程是将采样后的信号按整个声波的幅度划分成有限个区段的集合,把落入某个区段内的样值归为一类,并赋于相同的量化值。采取二进制的方式,以8位或16位的方式来划分纵轴。也就是说在一个以8位为记录模式的音效中,其纵轴将会被划分为个量化等级,用以记录其幅度大小。采样原理的示意图如图所示:

b920fce3a9525da63e8c853a132a6eaf_82780907_202310122343560128852652_Expires=1697126036&Signature=9k3ujQ67SgBoe3IwaV02WU5pt30%3D&domain=8.png

   非均匀量化,用数字值表示采样后的信号幅度值的过程即为量化,量化后信号就变成了数字信号。量化可以分为均匀量化和非均匀量化两种。量化过程会产生量化误差。而量化误差在接收端的表现形式即为量化噪声。非均匀量化根据幅度的不同区间来确定量化间隔,幅度小的区间量化间隔小,幅度大的区间量化间隔大,故可以有效改善小型号的量噪比。A律压缩和μ律压缩是一种常见的语音信号压缩技术,用于在数字通信中对语音信号进行编码。这些算法可以有效地减少数据传输所需的比特数,同时保持足够的音频质量。本文将详细介绍A律压缩和μ律压缩算法的原理、实现以及应用领域。 

3.1 A律压缩算法
A律压缩是一种非线性压缩算法,常用于8位PCM(脉冲编码调制)语音信号的压缩。其原理是通过对输入信号的幅度进行非线性映射,以便在更小的比特数上表示信号。A律压缩使用以下数学公式:
436dbaf072be0e79803a2e9bc5ff2c0e_82780907_202310122344060941582014_Expires=1697126046&Signature=3mR%2FQbPu8AbA%2BJBpTWGpjfLCJTE%3D&domain=8.png

   其中x表示为归一化的压缩器输入电压;y为归一化的压缩器输出电压,A为压扩参数,表示压缩程度。很明显,小信号时为线性特性,大信号时近似为对数特性。这种压扩特性常把压缩、量化和编码合为一体。A律可用13段折线逼近(相当于A=87.6),便于用数字电路实现。 

   A律13折线特性曲线如下所示:

8ff536ed942dc17408d6a2dc3c4190d1_82780907_202310122345110769315217_Expires=1697126111&Signature=Q0pa4QeI81Xxb%2FnblNkXfCy8aTA%3D&domain=8.png

3.2 μ律压缩算法
μ律压缩是一种类似于A律压缩的非线性压缩算法,通常在欧洲和亚洲地区使用。μ律压缩同样通过非线性映射来减小输入信号的幅度范围,从而降低所需的比特数。μ律压缩使用以下数学公式:

b9a12b5027085d8d5fce96319ddc6a07_82780907_202310122346010581248957_Expires=1697126161&Signature=2%2FExPg2fLAo8Q8HWM9pkv8A2JGM%3D&domain=8.png

   μ律压缩在欧洲和亚洲的语音通信系统中广泛应用。类似于A律压缩,它可以有效地降低传输带宽,并保持合理的语音质量。μ律(m-Law)压扩主要用在北美和日本等地区的数字电话通信中。m为确定压缩量的参数,它反映最大量化间隔和最小量化间隔之比,通常取100≤m≤500。

    A律压缩和μ律压缩算法是在数字通信中常用的语音信号压缩技术。通过非线性映射,它们可以有效地减小数据传输所需的比特数,同时保持合理的语音质量。选择适当的算法取决于地区和特定应用的要求。

4.部分核心程序

clear;
close all;
warning off;
addpath(genpath(pwd));
rng('default')

[y, fs] = audioread('signal.wav');

%=======A律编解码===================================
figure(1);
subplot(311),plot(y);
title('语音信号');
code2=alaw(y);
subplot(312),plot(code2);
title('A律编码语音信号');
u_code2=unalaw(code2);
subplot(313),plot(u_code2);
title('A律解码语音信号');
error2=u_code2-y;
figure(2);
plot(error2);
title('A律编解码误差');

%=======U律编解码===================================
figure(3);
subplot(311),plot(y);
title('语音信号');
code3=mulaw(y);
subplot(312),plot(code3);
title('U律编码语音信号');
u_code3=unmulaw(code3);
subplot(313),plot(u_code3);
title('U律解码语音信号');
error3=u_code3-y;
figure(4);
plot(error3);
title('U律编解码误差');
相关文章
|
10天前
|
数据可视化
基于MATLAB的OFDM调制发射与接收仿真
基于MATLAB的OFDM调制发射与接收仿真
|
14天前
|
传感器 算法 数据挖掘
基于协方差交叉(CI)的多传感器融合算法matlab仿真,对比单传感器和SCC融合
基于协方差交叉(CI)的多传感器融合算法,通过MATLAB仿真对比单传感器、SCC与CI融合在位置/速度估计误差(RMSE)及等概率椭圆上的性能。采用MATLAB2022A实现,结果表明CI融合在未知相关性下仍具鲁棒性,有效降低估计误差。
129 15
|
9天前
|
监控
基于MATLAB/Simulink的单机带负荷仿真系统搭建
使用MATLAB/Simulink平台搭建一个单机带负荷的电力系统仿真模型。该系统包括同步发电机、励磁系统、调速系统、变压器、输电线路以及不同类型的负荷模型。
195 5
|
14天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于WOA鲸鱼优化的XGBoost序列预测算法matlab仿真
基于WOA优化XGBoost的序列预测算法,利用鲸鱼优化算法自动寻优超参数,提升预测精度。结合MATLAB实现,适用于金融、气象等领域,具有较强非线性拟合能力,实验结果表明该方法显著优于传统模型。(238字)
|
17天前
|
人工智能 供应链 新能源
电动汽车参与运行备用的能力评估及其仿真分析(Matlab代码实现)
电动汽车参与运行备用的能力评估及其仿真分析(Matlab代码实现)
|
12天前
|
算法 计算机视觉
【MPDR & SMI】失配广义夹角随输入信噪比变化趋势、输出信干噪比随输入信噪比变化趋势研究(Matlab代码实现)
【MPDR & SMI】失配广义夹角随输入信噪比变化趋势、输出信干噪比随输入信噪比变化趋势研究(Matlab代码实现)
|
12天前
|
编解码 人工智能 算法
【采用BPSK或GMSK的Turbo码】MSK、GMSK调制二比特差分解调、turbo+BPSK、turbo+GMSK研究(Matlab代码实现)
【采用BPSK或GMSK的Turbo码】MSK、GMSK调制二比特差分解调、turbo+BPSK、turbo+GMSK研究(Matlab代码实现)
|
12天前
|
机器学习/深度学习 编解码 并行计算
【改进引导滤波器】各向异性引导滤波器,利用加权平均来实现最大扩散,同时保持图像中的强边缘,实现强各向异性滤波,同时保持原始引导滤波器的低低计算成本(Matlab代码实现)
【改进引导滤波器】各向异性引导滤波器,利用加权平均来实现最大扩散,同时保持图像中的强边缘,实现强各向异性滤波,同时保持原始引导滤波器的低低计算成本(Matlab代码实现)
|
10天前
|
存储 编解码 算法
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
|
10天前
|
机器学习/深度学习 传感器 算法
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
101 14

热门文章

最新文章