Skip to content

About

对于AutoTranscriber项目的WebUI适配

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

AutoTranscriber-WebUI 🎵

音频自动扒谱工具的可视化 Web 界面。输入任意音频,自动转成 MIDI 乐谱(并支持导出 PDF 谱子)。

本项目在 AutoTranscriber 原项目基础上做了两件事:

  1. 对原项目 main.py 进行了修改——支持自带 ffmpeg、--pdf 谱面导出等增强;
  2. 为其开发了可视化 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

🚀 快速开始(源码运行 WebUI)

前置条件:安装 Python 3.9+,并安装 AutoTranscriber‑WebUI 目录下的依赖。

cd AutoTranscriber‑WebUI
pip install -r requirements.txt
python main.py

启动后会自动打开浏览器访问 http://127.0.0.1:8000:

  1. 上传音频:点击选择文件,或直接把音频拖入页面;
  2. 文件会另存一份到 WebUI 的 input/ 目录;
  3. 点击扒谱,后端调用 AutoTranscriber/main.py 进行处理,输出保存到 output/;
  4. 可在 Web 端下载 MIDI,也可以直接去 input/、output/ 文件夹里取。

Windows 下也可直接双击 start_ui.bat 一键启动。

runtime 自动配置:打包版(exe)首次运行时会自动从 Release 页拉取 runtime.zip(内嵌 Python 环境 + ffmpeg)并解压到程序根目录,联网即可自动完成环境配置。若自动下载失败,请手动从 Release 下载 runtime.zip,将压缩包内的 runtime 文件夹解压到程序根目录后重启。


🎛 CLI 用法(AutoTranscriber 后端)

不借助 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

📦 打包成 Windows exe

打包版依赖内嵌 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 反馈。

🙏 致谢

About

对于AutoTranscriber项目的WebUI适配

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages