资源简介
谱减法语音增强 用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生成正弦波、三角波、锯齿波并
- ISM程序MATLAB.txt
- JPEG编解码matlab
- matlab红外图像两点定标非均匀校正
- hausdorff距离matlab程序
- 模板匹配matlab程序112018
- 蚁群算法的matlab源码
- 调通的ukfslam
- 绝对能用的EKF-SLAM修正错误的版本
- matlab的SPWM逆变电路仿真模型
- 单端反激电路的matlab仿真
- GM11模型MATLAB代码
- 细胞分割计数matlab程序 附GUI
- matlab2013a 密钥
- LQR路径跟踪.rar
- 数学建模MATLAB常见程序源代码
- FCLS matlab源码 丰度估计
- 灰度图像彩色化 matlab
- MATLAB程序initialize
- dpso算法matlab实现
- matlab轮廓波变换重采样
- 利用bp神经网络算法,进行交通预测的
- 自己写的GBVS(matlab代码)非常简单简
- 外推方法matlab程序代码
- PLS的原理及matlab实现
- fft对图像进行压缩.txt
- GPC的matlab程序
- 用hallen积分方程求偶极子天线电流分
- SMO matlab 代码
- MDP方法工具箱MATLAB
评论
共有 条评论