完善资料让更多小伙伴认识你,还能领取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个回答
|
|
|
我也遇到了相同的问题,请问如何解决
|
|
|
|
|
|
大佬在吗 我想求教一下关于创建一个能控制显示出谱线数的问题
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
我用matlab的coder 封装了一个c语言的dll, 但是在用labview调用时,会出现识别不到库的问题,有大神遇到过吗
2630 浏览 0 评论
5216 浏览 0 评论
在matlab中如何计算含有第一类修正的贝塞尔函数的积分算不出的问题?
9012 浏览 0 评论
怎么利用matlab得到95%,80%和70%的置信区间,并生成不同区间下的功率误差贝塔分布?
10454 浏览 0 评论
请问simulink的s-function模块如何添加多输入输出接口
14615 浏览 2 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 20:37 , Processed in 0.638864 second(s), Total 75, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3224