资源简介
谱减法语音增强 用Matlab是实现谱减法语音增强达到消噪
代码片段和文件信息
%基本谱减法
clear;
%[xxfs]=wavread(‘E:\mywhisper\shu.wav‘);
%[xxfs]=wavread(‘E:\speech\x\w1xun_01.wav‘);
%[xxfs]=wavread(‘E:\speech\耳语音切割\b\w1ba_5‘);
[xxfs]=wavread(‘MIC0.wav‘);% 读取音频文件yuan.wav,并返回采样数据给变量xx及采样率Fs
[teamrow]=size(xx);%将数组xx的行数赋给team列数赋给row
if row==2
x=(xx(:1)+xx(:2))/2;
yy=x;
%如果语音信号xx为2列,即信号为双声道,则将其转换成单声道信号,即取两列的平均值赋给x,并将x的值赋给yy
else
x=xx;
yy=x;
%若语音信号xx为单声道,则将xx的值赋给x,并将x的值赋给yy
end
x=x-mean(x)+0.1*rand(length(x)1);
N=length(x);%将语音信号长度赋给变量N
n=220;%对语音信号进行分帧,帧长为220
n1=160;%帧移为160
frame=floor((N-n)/(n-n1));%将分帧数赋给变量frame
%frame=floor(N/n);
for i=1:frame
y1=x((i-1)*(n-n1)+1:(i-1)*(n-n1)+n).*hamming(n);
%对每段分帧进行加窗处理
fy=fft(y1n);
nen(i:)=abs(fy).^2;% 将频域信号功率赋给矩阵变量nen
ang(i:)=angle(fy);%将频域信号的相位角赋给矩阵变量ang
end
yuzhi=sum(sum(nen(2:5:)))/(4*n);
for i=1:frame
nen(i:)=nen(i:)-yuzhi;
nen(ifind(nen(i:)<0))=0;
%chuli=nen(i1:n/2);
%chuli=chuli-yuzhi;
%chuli(find(chuli<0))=0;
%nen(i:)=[chulifliplr(chuli)];
% nen(i:)=filter(1[0.5 0.5]nen(i:));
% nen(ifind(nen(i:)<0))=0;
end
for i=1:frame
nen(i:)=sqr
相关资源
- matlab_OFDM调制解调(来自剑桥大学)
- Matlab路面裂缝识别69319
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 基于MATLAB的质点弹道计算与外弹道优
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
- 通过不同方法进行粗糙集属性约简m
评论
共有 条评论