MATLAB 2018B语音信号降噪与盲源分离GUI系统,多维滤波技术展示与实时外放体验
2-6 基于matlab 2018B的语音信号降噪和盲源分离GUI界面包括维纳滤波小波降噪、高通、低通、带通滤波及提出的滤波方法。 每个功能均展示降噪前后声音效果并外放出来。 程序已调通可直接运行。直接双击运行main.m耳边突然炸开一阵尖锐的电流声——这其实是程序自带的测试音频在自虐式演示噪声污染效果。别急着关音箱右下角六个带LED灯效的按钮已经开始闪烁仿佛在说选我我能救你的耳朵。先说最暴力的高通滤波。点击时程序会执行这段function highpass_Callback(hObject, eventdata, handles) cutoff str2double(get(handles.cutoffEdit,String)); [b,a] butter(4, cutoff/(handles.fs/2), high); handles.output filtfilt(b, a, handles.noisyAudio); guidata(hObject, handles); plot_waveform(handles); sound(handles.output, handles.fs);别看butter函数名字可爱它生成的4阶巴特沃斯滤波器能把低频噪声按在地上摩擦。filtfilt的正反向滤波让相移见鬼去了代价是计算量翻倍。测试时发现当截止频率超过4kHz人声会像被掐着脖子说话但对付空调嗡嗡声倒是立竿见影。小波降噪的代码藏着玄机wname sym6; level 5; [C,L] wavedec(noisySig, level, wname); thr thselect(noisySig,rigrsure); sorh s; keepapp 1; denoised wdencmp(gbl,C,L,wname,level,thr,sorh,keepapp);这里rigrsure阈值选择规则比默认的sqtwolog更适合突发型噪声。有次手滑把sym6换成haar小波结果降噪后的语音自带科幻片机器人特效。后来发现sym6的6阶消失矩能更好保留语音的短时特征这大概就是调参狗的顿悟时刻。2-6 基于matlab 2018B的语音信号降噪和盲源分离GUI界面包括维纳滤波小波降噪、高通、低通、带通滤波及提出的滤波方法。 每个功能均展示降噪前后声音效果并外放出来。 程序已调通可直接运行。自研的混合滤波模块才是重头戏。核心算法在频域玩排列组合% 自适应谱减与小波残差融合 specSub spectral_subtraction(noisySig, fs); wavDenoise wdenoise(noisySig, 6); alpha calculate_correlation(specSub, wavDenoise); output alpha*specSub (1-alpha)*wavDenoise;这个相关性加权融合策略让我熬了三夜才调通。有次alpha计算失误导致输出信号像水下通话吓得隔壁工位以为我在搞潜艇声呐。现在听着降噪后清晰的北国风光千里冰封竟有种老父亲般的欣慰。盲源分离部分最魔幻当两个混杂的声源突然被拆分成独立音轨时GUI上的时频图会表演左右分屏魔术。记得测试时混入了《月亮之上》和新闻联播分离结果一个变成农业重金属伴奏另一个成了字正腔圆的广场舞教学——这算不算另类艺术创作点击运行按钮前建议调小音量毕竟谁也不知道你加载的是温柔情歌还是工地打桩录音。这个GUI最骚的是每次处理完会自动播放对比音频建议不要在深夜测试带通滤波功能别问我怎么知道的...突然响起的尖锐测试音效看就说要调小音量吧
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2463209.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!