当前位置: 首页 > news >正文

噪音消除模块调研

一.原理

1.1降噪

noisereduce 库的 reduce_noise 函数使用的是一种基于频谱减法的噪声消除算法。它通过分析音频的频谱,识别出噪声成分,并尝试将这些噪声成分从音频信号中去除,从而提升信号的清晰度。

1.2 动态范围压缩(预加重)

预加重(Pre-emphasis)是一种简单的信号处理技术,常用于音频处理中。它通过增强音频信号的高频成分来改善信噪比,特别是在某些编码技术中。预加重可以看作是一种高通滤波操作,通过减少低频成分的能量相对增加高频成分的能量。

1.3 增益处理

增益处理是通过线性放大音频信号的幅值来增加其响度的。增益因子 gain_factor 的大小决定了放大倍数。需要注意的是,过高的增益因子可能会导致音频信号超出其允许的动态范围,从而引起失真。

1.4 信号裁剪

将数组的值限制在指定的范围内。这里将音频信号限制在 [-1.0, 1.0] 之间,以防止因增益处理导致的信号失真(即音频信号过大或过小,超出了标准音频信号的范围)。

.库安装

pip install  pydub
pip install noisereduce

.测试代码

import numpy as np
from pydub import AudioSegment
import librosa
import noisereduce as nr
import librosa.effects as effects
# 加载音频文件
librosa_audio, sr = librosa.load("8888.wav", sr=16000)# 使用noisereduce库进行噪声消除
reduced_noise_audio = nr.reduce_noise(y=librosa_audio, sr=sr)# 使用librosa的动态范围压缩进行音频增强
compressed_audio = effects.preemphasis(reduced_noise_audio)  # 使用预加重作为简单的压缩方式# 增加增益,提升音量
gain_factor = 5  # 增益因子,可根据实际情况调整
enhanced_audio = compressed_audio * gain_factor# 确保音频信号在[-1, 1]范围内
enhanced_audio = np.clip(enhanced_audio, -1.0, 1.0)# 将处理后的人声转换回AudioSegment对象
vocals_audio_segment = AudioSegment(
    data=np.array(enhanced_audio * 32767, dtype=np.int16).tobytes(),
    sample_width=2,
    frame_rate=sr,
    channels=1
)# 导出处理后的人声
vocals_audio_segment.export("8888out.wav", format="wav")

三.测试结果

测试原始文件

输出文件

原始波形图

输出文件波形图

见上传资源

见上传资源


http://www.mrgr.cn/news/17838.html

相关文章:

  • 模型案例:| 垃圾桶识别模型
  • win10添加右键菜单打开VSCode
  • 计算机网络(一) —— 网络基础入门
  • Python 用pandas连接Postgresql库
  • Transformer 动画揭秘:数据处理的四大关键技术
  • 活动系统开发之采用设计模式与非设计模式的区别-需求设计及拓展
  • 天通报警呼叫柱:在自然保护区中守护绿色生命
  • 垃圾收集算法
  • electron-vite打包出错
  • 视频技术未来展望:EasyCVR如何引领汇聚融合平台新趋势
  • Java提高篇——Java 异常处理
  • 高效验证SRv6 TE Policy:解锁网络设备性能测试的关键技巧
  • SAP 查询中间表
  • 【路径规划】移动机器人在未知环境下目标的路径规划算法
  • 《黑神话·悟空》带火山西旅游,上线一周“小西天”抖音订单量环比增长17倍
  • 前端安全:如何防范跨站脚本攻击(XSS)
  • Spring boot swagger 引入 以及后续使用 Knife4j 替换swagger
  • 一年级大学生应携带和使用的床上用品有哪些?
  • 嵌入式全栈开发学习笔记---shell脚本
  • 【开学季】告别一次性AI写作工具,打造你自己的专属AI助手!