news 2026/6/12 7:51:02

最近在折腾语音信号处理,发现小波阈值去噪挺有意思的。咱们先拿一段干净的人声开刀,用Matlab搞点噪声再把它洗干净,看看波形和频谱的变化。(文末附完整代码)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
最近在折腾语音信号处理,发现小波阈值去噪挺有意思的。咱们先拿一段干净的人声开刀,用Matlab搞点噪声再把它洗干净,看看波形和频谱的变化。(文末附完整代码)

基于Matlab语音信号处理,主要是对一段语音信号进行加噪声处理,去除噪声,对于语音波形图,语音语谱图,和信噪比进行对比,得到较好的去噪效果,小波阈值法去噪,关于语音信号的

先上硬货——加载语音信号的核心代码:

[voice, Fs] = audioread('sample.wav'); t = (0:length(voice)-1)/Fs; subplot(311) plot(t, voice) title('原始信号波形')

这里有个坑:如果采样率太高,处理起来会卡成PPT。建议先resample到8kHz,用decimate函数处理下采样。不过咱们先保持原样,方便观察细节。

接着制造点麻烦——加个高斯白噪声:

noisy_voice = awgn(voice, 10, 'measured'); % 信噪比10dB subplot(312) plot(t, noisy_voice) title('加噪后波形')

awgn函数的'measured'参数是关键,它根据原始信号功率自动计算噪声强度。这时候用soundsc播放听听,能明显感觉背景沙沙声。

上主菜——小波阈值去噪:

clean_voice = wdenoise(noisy_voice, 5, ... 'Wavelet', 'sym4', ... 'DenoisingMethod', 'Bayes', ... 'ThresholdRule', 'Soft'); subplot(313) plot(t, clean_voice) title('去噪后波形')

这里用了Symlets小波基,软阈值处理。重点说下第2个参数5,表示小波分解层数。层数太少去噪不彻底,太多会把语音特征也抹掉,建议在3-7层之间试错。

基于Matlab语音信号处理,主要是对一段语音信号进行加噪声处理,去除噪声,对于语音波形图,语音语谱图,和信噪比进行对比,得到较好的去噪效果,小波阈值法去噪,关于语音信号的

看波形不过瘾?咱们上语谱图:

subplot(131) spectrogram(voice, 256, 250, 256, Fs, 'yaxis') title('原始语谱') subplot(132) spectrogram(noisy_voice, 256, 250, 256, Fs, 'yaxis') title('带噪声语谱') subplot(133) spectrogram(clean_voice, 256, 250, 256, Fs, 'yaxis') title('去噪后语谱')

注意噪声在语谱图上呈现雪花状分布,去噪后虽然还有残留,但语音的共振峰结构已经清晰可见。颜色映射用hot更带感,改下colormap参数试试。

最后算信噪比验证效果:

ori_snr = 10*log10(sum(voice.^2)/sum((noisy_voice-voice).^2)); enh_snr = 10*log10(sum(voice.^2)/sum((clean_voice-voice).^2)); disp(['原始信噪比:', num2str(ori_snr), ' 增强后:', num2str(enh_snr)])

实测从10dB提升到18dB左右,但别高兴太早——这个算法在突发性强噪声面前会翻车。遇到这种状况,建议试试改进阈值函数,或者用EMD分解结合小波处理。

最后提醒:处理前务必做预加重(pre-emphasis),用filter([1 -0.97],1,voice)提升高频分量,这样小波分解时特征更明显。这个方法对气声辅音(比如/s/、/sh/)的恢复效果拔群。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/20 22:54:17

NewBie-image-Exp0.1启动失败?CUDA 12.1环境兼容性解决方案

NewBie-image-Exp0.1启动失败?CUDA 12.1环境兼容性解决方案 你是否在尝试运行 NewBie-image-Exp0.1 镜像时遇到了容器启动失败、PyTorch报错或CUDA初始化异常的问题?尤其是看到类似“CUDA driver version is insufficient”、“libcudart.so not found”…

作者头像 李华
网站建设 2026/6/9 18:31:01

如何用Z-Image-Turbo打造个性化艺术头像?附代码

如何用Z-Image-Turbo打造个性化艺术头像?附代码 你是否也厌倦了千篇一律的社交头像?想不想拥有一个既体现个性,又充满艺术感的专属形象?现在,借助阿里通义实验室开源的 Z-Image-Turbo 模型,只需几行代码和…

作者头像 李华
网站建设 2026/6/10 20:21:48

caj2pdf完全指南:终极免费的CAJ转PDF解决方案

caj2pdf完全指南:终极免费的CAJ转PDF解决方案 【免费下载链接】caj2pdf 项目地址: https://gitcode.com/gh_mirrors/caj/caj2pdf 还在为CAJ格式的学术文献无法在常用设备上阅读而烦恼?caj2pdf这款开源工具能帮您彻底解决格式兼容问题&#xff0c…

作者头像 李华
网站建设 2026/6/10 3:08:23

MinerU与Camelot对比:纯表格提取精度实战评测

MinerU与Camelot对比:纯表格提取精度实战评测 1. 引言:为什么表格提取值得认真对待 你有没有遇到过这样的情况?手头有一份几十页的财务报表、科研论文或技术文档,里面密密麻麻全是表格。你想把这些数据导入Excel做分析&#xff…

作者头像 李华
网站建设 2026/6/11 11:44:45

超棒的React博客系统源码来袭!极简设计超实用

新鲜出炉的React博客系统源码,极简主义设计,手机端可自适应,超级简单,带部署文档与演示视频加截图。 使用技术: 客户端前端:Next.js React 管理端前端:React Ant Design 后台:Node…

作者头像 李华
网站建设 2026/5/31 21:11:51

Canoe - OSEK网络管理自动化测试脚本CAPL使用体验

Canoe-OSEK网络管理自动化测试脚本CAPL 这适用于主流osek nm的测试用例 1.启动程序 2.加载配置文件 3.选择帧类型(标准帧或扩展帧) 4.修改配置文件,自动弹出配置文件窗口 5.选择测试用例 6.点击运行 7.测试完成打印报告并记录对应log 接单项目:Can通信电…

作者头像 李华