用完全开源免费的本地模型来对视频中的音频进行降噪

最近自己和一些老师都有录制教学视频,但录音设备不太行,而且录音环境页不太理想,总有一些噪音。那没办法,就想着降噪。我们录制课程只需要单声道,所以降噪就方便很多。还好比较顺利,然后把这个步骤记录一下。

️ 第一步:环境准备与模型安装

在开始之前,要将音频能够提取出来,要根据操作系统,需要先有 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%