音频自动扒谱工具的可视化 Web 界面。输入任意音频,自动转成 MIDI 乐谱(并支持导出 PDF 谱子)。
本项目在 AutoTranscriber 原项目基础上做了两件事:
- 对原项目
main.py进行了修改——支持自带 ffmpeg、--pdf谱面导出等增强; - 为其开发了可视化 WebUI,用浏览器即可完成「上传音频 → 扒谱 → 下载 MIDI」全流程,无需命令行。
仓库已收敛为单一版本(最新代码),旧的多余版本目录已清除,本仓库即唯一源码来源。
- 🌐 Web 可视化界面:打开即用,上传 / 拖拽音频即可扒谱
- 🎤 音频转 MIDI:支持乐器、旋律、和弦等各类音频
- 🎵 多音高估计:迭代谐波减法,可同时识别多个音符(和弦)
- 📄 PDF 谱面导出:扒谱后可直接导出并预览 PDF 乐谱(
--pdf) - 🎸 可选音源分离:Demucs 分离人声 / 伴奏后分别扒谱(需额外配置环境)
- 📦 支持打包分发:内置 PyInstaller 打包配置(
webui.spec)
AutoTranscriber-WebUI/
├── README.md # 本说明
├── AutoTranscriber/ # 扒谱后端(CLI 工具)
│ ├── main.py # 主入口(含 --pdf 导出、自带 ffmpeg)
│ ├── AutoTranscriber/
│ │ ├── audio_loader.py # 音频加载与预处理
│ │ ├── spectral.py # 频谱分析 (CQT)
│ │ ├── onset_detection.py # 音符起始检测
│ │ ├── pitch_estimation.py # 多音高估计(谐波减法)
│ │ ├── note_tracking.py # 音符追踪与平滑
│ │ ├── midi_writer.py / midi_to_pdf.py
│ │ ├── separator.py # 音源分离(Demucs + HPSS 后备)
│ │ └── perceptual_filter.py 等
│ ├── test_audio/ # 测试音频
│ └── requirements.txt
└── AutoTranscriber‑WebUI/ # Web 前端 + 服务端
├── main.py # FastAPI 服务(含 runtime 自动下载配置)
├── frontend/index.html # 单页前端
├── start_ui.bat # 一键启动脚本
├── lock_helper.py # 并发任务锁辅助
├── webui.spec # PyInstaller 打包配置
└── requirements.txt
前置条件:安装 Python 3.9+,并安装 AutoTranscriber‑WebUI 目录下的依赖。
cd AutoTranscriber‑WebUI
pip install -r requirements.txt
python main.py启动后会自动打开浏览器访问 http://127.0.0.1:8000:
- 上传音频:点击选择文件,或直接把音频拖入页面;
- 文件会另存一份到 WebUI 的
input/目录; - 点击扒谱,后端调用
AutoTranscriber/main.py进行处理,输出保存到output/; - 可在 Web 端下载 MIDI,也可以直接去
input/、output/文件夹里取。
Windows 下也可直接双击
start_ui.bat一键启动。
runtime 自动配置:打包版(exe)首次运行时会自动从 Release 页拉取
runtime.zip(内嵌 Python 环境 + ffmpeg)并解压到程序根目录,联网即可自动完成环境配置。若自动下载失败,请手动从 Release 下载runtime.zip,将压缩包内的runtime文件夹解压到程序根目录后重启。
不借助 WebUI,也可直接用命令行扒谱:
# 基本扒谱(乐器 / 单音轨)
python main.py -i 音频文件.wav -o 输出.mid
# 扒谱 + 导出 PDF 谱子
python main.py -i 音频文件.mp3 --pdf
# 扒谱 + PDF + 自动打开谱子
python main.py -i 音频文件.mp3 --pdf --view
# 歌曲扒谱(分离人声+伴奏)
python main.py -i 歌曲.mp3 -o 歌曲.mid --separate
python main.py -i 歌曲.mp3 -o 伴奏.mid --separate --track accompaniment
python main.py -i 歌曲.mp3 -o 人声旋律.mid --separate --track vocals --n_peaks 2| 参数 | 说明 | 默认值 |
|---|---|---|
-i / --input |
输入音频路径(wav/mp3/flac 等) | 必填 |
-o / --output |
输出 MIDI 路径 | 输出名_result.mid |
--pdf |
同时导出 PDF 乐谱 | 关 |
--view |
生成后自动打开结果 | 关 |
--separate / -s |
开启音源分离模式 | 关 |
--piano |
合并为钢琴轨输出 | 关 |
--perceptual / -p |
开启感知滤波 | 关 |
--solo |
单音/独奏模式 | 关 |
--track |
分离模式扒哪一轨:both/vocals/accompaniment |
both |
--demucs_model |
Demucs 分离模型 | htdemucs |
--n_peaks |
每帧最大同时音符数(和弦 5-8,人声 1-2) | 5 |
--hop_length |
帧移(越小时间分辨率越高) | 512 |
--bins_per_octave |
每八度频带数(12=半音,36=1/3 半音) | 36 |
--onset_threshold |
起始检测灵敏度(0~1) | 0.3 |
--pitch_threshold |
音高检测幅度阈值 | 0.1 |
--min_note_duration |
最小音符时长(帧数,过滤短噪声) | 4 |
--simplify |
谱面简化强度 | 0 |
--tempo |
MIDI 速度 BPM | 120 |
--sr |
采样率 | 22050 |
打包版依赖内嵌 Python 运行时(runtime),通过 PyInstaller 打包 WebUI 前端与后端。
cd AutoTranscriber‑WebUI
pip install pyinstaller
pyinstaller webui.spec- 打包产物:
dist/AutoTranscriber‑WebUI/AutoTranscriber‑WebUI.exe - 发布时需要与
runtime/(内含 ffmpeg 与 Python 环境)放在同一级目录,或将runtime.zip发布到 GitHub Release 供程序自动下载。
- WebUI 当前仅适配了音频转 MIDI 功能;人声/伴奏分离功能因依赖体积较大未纳入 WebUI 一键配置,可通过 CLI 配合原项目 README 手动配置使用。
- 音源分离(
--separate)需额外安装 Demucs 环境(torch/demucs/soundfile/av等)。 - 如遇问题,欢迎通过 GitHub Issues 反馈。