完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
function output=WienerScalart96m(fs,signal,IS)
if (nargin<3 | isstruct(IS)) % 如果输入参数小于3个或IS是结构数据 IS=.25; end W=fix(.025*fs); % 帧长为25ms SP=.4; % 帧移比例取40%(10ms) wnd=hamming(W); % 设置窗函数 % 如果输入参数大于或等于3个并IS是结构数据(为了兼容其他程序) if (nargin>=3 & isstruct(IS)) SP=IS.shiftsize/W; %nfft=IS.nfft; wnd=IS.window; if isfield(IS,'IS') IS=IS.IS; else IS=.25; end end pre_emph=0; signal=filter([1 -pre_emph],1,signal); % 预加重 NIS=fix((IS*fs-W)/(SP*W) +1); % 计算无话段帧数 y=segment(signal,W,SP,wnd); % 分帧 Y=fft(y); % FFT YPhase=angle(Y(1:fix(end/2)+1,:)); % 带噪语音的相位角 Y=abs(Y(1:fix(end/2)+1,:)); % 取正频率谱值 numberOfFrames=size(Y,2); % 计算总帧数 FreqResol=size(Y,1); % 计算频谱中的谱线数 N=mean(Y(:,1:NIS)')'; % 计算无话段噪声平均谱值 LambdaD=mean((Y(:,1:NIS)').^2)'; % 计算噪声平均功率谱(方差) alpha=.99; % 设置平滑系数 NoiseCounter=0; % 初始化NoiseCounter NoiseLength=9; % 设置噪声平滑区间长度 G=ones(size(N)); % 初始化谱估计器 Gamma=G; X=zeros(size(Y)); % 初始化X h=waitbar(0,'Wait...'); % 设置运行进度条图 for i=1:numberOfFrames if i<=NIS % 若i<=NIS在前导无声(噪声)段 SpeechFlag=0; NoiseCounter=100; else % i>NIS判断是否为有话帧 [NoiseFlag, SpeechFlag, NoiseCounter, Dist]=vad(Y(:,i),N,NoiseCounter); end if SpeechFlag==0 % 在无话段中平滑更新噪声谱值 N=(NoiseLength*N+Y(:,i))/(NoiseLength+1); LambdaD=(NoiseLength*LambdaD+(Y(:,i).^2))./(1+NoiseLength); % 更新和平滑噪声方差 end gammaNew=(Y(:,i).^2)./LambdaD; % 计算后验信噪比 xi=alpha*(G.^2).*Gamma+(1-alpha).*max(gammaNew-1,0); % 计算先验信噪比 Gamma=gammaNew; G=(xi./(xi+1)); % 计算维纳滤波器的谱估计器 X(:,i)=G.*Y(:,i); % 维纳滤波后的幅值 waitbar(i/numberOfFrames,h,num2str(fix(100*i/numberOfFrames)));%显示运行进度条图 end close(h); % 关闭运行进度条图 output=OverlapAdd2(X,YPhase,W,SP*W); % 语音合成 output=filter(1,[1 -pre_emph],output); % 消除预加重影响 |
|
相关推荐
2个回答
|
|
我也遇到了相同的问题,请问如何解决
|
|
|
|
大佬在吗 我想求教一下关于创建一个能控制显示出谱线数的问题
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1577 浏览 1 评论
200圆!求助大佬给一份VSG并网和离网模式的simulink仿真
1859 浏览 0 评论
MATLAB(3)--矩阵的引用(sub2ind、ind2sub、reshape函数使用)
2676 浏览 0 评论
3016 浏览 0 评论
4095 浏览 1 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 03:17 , Processed in 1.102753 second(s), Total 78, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号