最近自己和一些老师都有录制教学视频,但录音设备不太行,而且录音环境页不太理想,总有一些噪音。那没办法,就想着降噪。我们录制课程只需要单声道,所以降噪就方便很多。还好比较顺利,然后把这个步骤记录一下。
️ 第一步:环境准备与模型安装
在开始之前,要将音频能够提取出来,要根据操作系统,需要先有 FFmpeg,然后才能用pydub 读取任意音视频格式。 FFmpeg 工具也是后续视频合成的核心依赖。
- macOS 用户(通过 Homebrew 安装):
brew install ffmpeg
- Windows 用户: 推荐使用包管理器 winget 一键安装(免去繁琐的手动配置环境变量):
winget install ffmpeg
(如果没有winget,也可以用 Scoop,或者页可以直接去 FFmpeg 官网下载 essentials 版本的压缩包,解压后将 bin 目录添加到系统的 PATH 环境变量中。)
- Linux 用户(以 Ubuntu/Debian 为例):
sudo apt update && sudo apt install ffmpeg -y
安装 Python 核心依赖库(全平台通用):打开终端,运行以下命令安装魔搭社区 SDK、音频处理工具以及底层依赖:
pip install modelscope pydub oss2
第二步:降噪脚本(全平台兼容)
为了保证在 Windows、macOS 和 Linux 上都能完美运行,需要在 Python 脚本中使用了跨平台的路径处理模块 os。
然后用Void或者VScode之类的编辑起来新建一个名为 ai_denoise.py 的文件,填入以下代码:
import sys
import os
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
from pydub import AudioSegment
def ai_denoise(input_file):
# 1. 动态生成输出文件名,跨平台安全地处理文件名与后缀
base_name = os.path.splitext(input_file)[0]
temp_wav = "temp_input_16k.wav"
output_file = f"{base_name}_AI_clean.wav"
print(f" 步骤1:正在读取并转换音频格式(支持任意主流格式)...")
try:
# 使用 pydub 读取任意格式的音视频文件
audio = AudioSegment.from_file(input_file)
# 统一转换为模型要求的格式:16000Hz 采样率、单声道、16bit
audio = audio.set_frame_rate(16000).set_channels(1).set_sample_width(2)
audio.export(temp_wav, format="wav")
except Exception as e:
print(f" 文件读取失败,请检查路径或是否已正确安装 ffmpeg。错误信息:{e}")
return
# 2. 调用阿里通义实验室的 AI 语音降噪模型
print(" 步骤2:正在调用 AI 模型进行降噪(首次运行会自动下载模型,请耐心等待)...")
try:
# 加载语音降噪流水线
ans = pipeline(
Tasks.acoustic_noise_suppression,
model='iic/speech_zipenhancer_ans_multiloss_16k_base'
)
# 执行降噪
ans(temp_wav, output_path=output_file)
except Exception as e:
print(f" AI 模型处理失败:{e}")
# 清理临时文件
if os.path.exists(temp_wav):
os.remove(temp_wav)
return
# 3. 清理临时文件并提示完成
if os.path.exists(temp_wav):
os.remove(temp_wav)
print(f" 降噪完成!完美人声音频已保存为: {output_file}")
if __name__ == "__main__":
if len(sys.argv) < 2:
print(" 请在命令后加上你的音频/视频文件路径。")
print(" 用法示例: python ai_denoise.py input.mp4")
else:
ai_denoise(sys.argv[1])
运行方法(全平台通用):在终端中进入脚本所在目录,执行:
python ai_denoise.py input.mp4
第三步:视频画面压缩与音频合成
拿到降噪后的 input_AI_clean.wav 后,我们需要将其替换回原视频,并压缩到 720p。由于三大系统的硬件加速方案不同,这里分为两条路线:
路线 A:macOS 使用 VideoToolbox 硬件加速
macOS 下使用以下命令,可以兼顾速度与画质:
ffmpeg -hwaccel videotoolbox -i input.mp4 -i input_AI_clean.wav -c:v h264_videotoolbox -b:v 2000K -vf "scale=1280:-2" -c:a aac -b:a 128k -map 0:v:0 -map 1:a:0 -shortest output_final_720p.mp4
路线 B:Windows / Linux 用CPU 压缩
由于 Windows 和 Linux 的显卡驱动与硬件编码配置极其复杂(涉及 NVIDIA NVENC、AMD AMF、Intel QSV 等多种驱动匹配),为了保证这条命令在你电脑上100% 能直接跑通不报错,此处就用纯 CPU 方案。 虽然速度比硬件加速慢很多,但使用 libx265 编码器能在同画质下把体积压得更小,完美契合你“最小体积”的初衷:
ffmpeg -i input.mp4 -i input_AI_clean.wav -c:v libx265 -preset slower -crf 26 -vf "scale=1280:-2" -c:a aac -b:a 128k -map 0:v:0 -map 1:a:0 -shortest output_final_720p.mp4
核心参数解析:
-c:v libx265:使用 H.265 (HEVC) 编码器,比传统的 H.264 节省约 30%-40% 的体积。-preset slower:让 FFmpeg 花更多时间去计算最优压缩方式,换取更小的文件体积。-crf 26:恒定质量因子。26 是在 720p 下体积与画质妥协得非常好的数值。-vf "scale=1280:-2":将视频宽度强制缩放为 1280 像素(即标准 720p),高度自动按比例适配。-map 0:v:0 -map 1:a:0:精准提取原视频的画面流和 AI 降噪后的音频流进行合并。
这样,无论你用的是 Mac、Windows 还是 Linux,都能实现“视频中的声音提取-> 阿里 AI 极致降噪 -> 720p 视频合成”的这个过程了。
预览时标签不可点
Close
更多
Name cleared
微信扫一扫赞赏作者
Like the AuthorOther Amount
赞赏后展示我的头像
作品
暂无作品
Like the Author
Other Amount
¥
最低赞赏 ¥0
OK
Back
Other Amount
更多
赞赏金额
¥
最低赞赏 ¥0
1
2
3
4
5
6
7
8
9
0
.
虚拟化,操作系统,以及一些小工具 · 目录
虚拟化,操作系统,以及一些小工具
上一篇NuoYi 更新:新增在线转换引擎,没显卡也不怕,长文档也不那么头疼下一篇ErTing(耳听):一个简单的音频降噪工具
Close
更多
搜索「」网络结果
Close
调整当前正文文字大小
更多
100%