Skip to content

Repository files navigation

音频分割合并工具

将 MP3 等音频格式批量转换为 WAV,并按静音段自动切分为多个小 WAV 文件。
支持切片文件批量重命名和多音频合并。
适用于英语教学音频(歌曲/儿歌类)按曲内停顿自动切分场景。

功能概览

功能 说明
音频分割 MP3 等格式转 WAV + 按静音自动切分
切片重命名 批量重命名切片文件(如 切片_001Rec03401
音频合并 多个音频按顺序拼接,可选 WAV/MP3 输出

环境要求

  • Python 3.8+
  • ffmpeg(必须安装并在系统 PATH 中,或通过 imageio-ffmpeg 自动提供)
  • Windows / macOS / Linux 均可运行

安装依赖

pip install -r requirements.txt

依赖包:

  • pydub — 音频处理核心库
  • imageio-ffmpeg — 提供 ffmpeg 二进制文件(无需手动安装 ffmpeg)

Python 3.13 特殊说明

Python 3.13 移除了标准库 audioop 模块,而 pydub 依赖它。使用 Python 3.13 时必须额外安装替代包

pip install audioop-lts

否则启动时会报错:ModuleNotFoundError: No module named 'audioop'

ffmpeg 配置优先级

程序按以下顺序自动探测 ffmpeg:

  1. 环境变量 FFMPEG_BINARY 指定的路径
  2. 系统 PATH 中的 ffmpeg 命令
  3. imageio-ffmpeg 包内置的 ffmpeg

如果以上均不可用,会抛出明确的错误提示。

GUI 使用(推荐)

python app.py

界面说明

  1. 输入设置(上半部分)

    • 选择「文件夹」模式:点击浏览,选择包含音频文件的目录
    • 选择「文件」模式:点击浏览,选择单个或多个音频文件
    • 支持的格式:mp3, wav, m4a, flac, ogg, aac, wma, aiff, opus
  2. 切分参数(中间部分)

    • 最小静音段 (ms):产生切分的静音段至少这么长。默认 500ms,增大则忽略短停顿
    • 静音阈值 (dBFS):低于此值视为静音。默认 -50.0,增大(如 -35)则更灵敏
    • 保留静音 (ms):切片前后各保留的静音毫秒数。默认 300,设为 0 则无保留
    • 最小切片 (ms):短于此值的切片丢弃。默认 1000(1秒),防止产生过短片段
    • 最大切片 (ms):超过此长度会继续内部分切。默认 0(不限制)
    • 采样率 (Hz):输出 WAV 采样率。默认 44100
    • 声道数:1=单声道,2=立体声。默认 2
    • 并发线程数:批量处理时的并行数。默认 1(顺序处理)
    • 处理前清除旧输出:勾选时,重新处理某文件会先清空其输出子目录再生成,避免旧切片残留
  3. 输出与控制(下半部分)

    • 选择输出目录
    • 点击「开始处理」
    • 进度条和日志实时显示处理状态
    • 可随时点击「停止」取消处理
    • 点击「切片重命名工具」打开重命名窗口
    • 点击「音频合并工具」打开合并窗口
  4. 配置管理

    • 「保存配置」按钮:将当前参数保存为 JSON 文件
    • 「加载配置」按钮:从 JSON 文件恢复参数

输出目录结构

输出目录/
├── 原文件名1/
│   ├── 切片_001.wav
│   ├── 切片_002.wav
│   └── ...
├── 原文件名2/
│   ├── 切片_001.wav
│   └── ...
└── ...

每个输入文件的切片放在同名子目录下,切片编号从 001 开始。

切片重命名工具

主界面点击「切片重命名工具」按钮打开。

  1. 选择包含切片 WAV 文件的文件夹
  2. 输入起始文件名(如 Rec03401,必须含数字)
  3. 点击「预览重命名」查看映射
  4. 确认后点击「执行重命名」

命名规则:Rec03401Rec03401.wavRec03402.wavRec03403.wav...
支持自然排序(切片_1切片_2切片_10 正确排序)。
采用两阶段重命名,避免文件名冲突。

音频合并工具

主界面点击「音频合并工具」按钮打开。

  1. 点击「添加文件」选择音频文件(支持多选)
  2. 用「上移」「下移」调整合并顺序
  3. 选择输出格式(WAV 或 MP3)
  4. 设置采样率和声道数
  5. 选择输出文件路径
  6. 点击「开始合并」

支持格式:mp3, wav, m4a, flac, ogg, aac, wma, aiff, opus

命令行用法

处理单个文件

python cli.py "01 farm animals.mp3" -o output/

处理整个目录

python cli.py ./audio_folder/ -o output/

自定义参数

python cli.py ./audio_folder/ -o output/ \
    --min-silence-ms 800 \
    --silence-thresh-db -45.0 \
    --keep-silence-ms 200 \
    --min-segment-ms 1500 \
    --max-segment-ms 30000 \
    --sample-rate 44100 \
    --channels 2 \
    --workers 4 \
    -v

参数说明

参数 默认值 说明
--min-silence-ms 500 最小静音段长度(ms)
--silence-thresh-db -50.0 静音阈值(dBFS)
--keep-silence-ms 300 保留静音(ms)
--min-segment-ms 1000 最小切片长度(ms)
--max-segment-ms 0 最大切片长度(ms),0=不限
--sample-rate 44100 输出采样率(Hz)
--channels 2 声道数
--workers 1 并发线程数,0=自动
--no-clean 关闭 不清理已存在的输出子目录
-v - 显示详细日志

打包为 EXE(Windows)

build_windows.bat

打包完成后,可执行文件位于 dist/AudioSplitTool.exe
打包后的 EXE 自带 ffmpeg,无需用户额外安装。

参数调优建议

教学音频(儿歌/歌曲)

  • 最小静音段:800-1200ms(歌曲间歇通常较长)
  • 静音阈值:-45 ~ -40 dBFS(音乐类音频背景音较高)
  • 保留静音:200-500ms(保留段首段尾自然过渡)
  • 最小切片:2000-3000ms(避免产生过短的无意义片段)

语音/播客

  • 最小静音段:500-800ms(说话间停顿较短)
  • 静音阈值:-50 ~ -45 dBFS
  • 保留静音:100-300ms
  • 最小切片:1000-2000ms

注意事项

  1. 内存使用:pydub 会将整个音频加载到内存。处理超过 1 小时的音频文件建议 ≥4GB RAM
  2. 大文件处理:单个音频文件超过 500MB 时,处理可能较慢,请耐心等待
  3. 静音检测:整段无声或全噪音的音频会给出明确错误提示
  4. 采样率影响:输出采样率不影响静音检测精度(检测在原始采样率上进行)
  5. 平台兼容:Windows 用户可直接运行;macOS/Linux 用户需确保 ffmpeg 可用

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages