Giter Club home page Giter Club logo

pianotrans's Introduction

Simple GUI for ByteDance's Piano Transcription with Pedals

Test

ByteDance's Piano Transcription is the PyTorch implementation of the piano transcription system, "High-resolution Piano Transcription with Pedals by Regressing Onsets and Offsets Times [1]".

Using this, we can transcribe piano recordings into MIDI files with pedals.

This is a simple GUI and packaging for Windows and Nix on Linux/macOS.

Requirement

  • OS: Windows 7 or later (64-bit), Linux, macOS (Intel/M1)
  • Memory: at least 4G

Only Windows 10, Debian Linux 10, and macOS 12.1 M1 are tested.

How to use on Windows

  1. Download Microsoft Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019 vc_redist_x64.exe and install
  2. Download and unpack PianoTrans-v1.0.7z (1.5GB download, unpack using 7zip)
  3. Close other apps to free memory, need at least 2G free memory
  4. Run PianoTrans.exe in PianoTrans directory
  5. Choose audio/video files, hold CTRL to select multiple files
  6. Result MIDI files are in the same directory as the input files

If you want right click menu, run RightClickMenuRegister.bat, then you can select multiple audio/video files, right click and choose Piano Transcribe.

PianoTrans automatically uses GPU for inference, if you encounter any problem, you can try PianoTrans-CPU.bat to force using CPU.

How to use on Linux/macOS using Nix

Note: This howto is for Nix on Linux/macOS, if you don't use Nix, you can also follow the upstream install and usage guide for Python pip instead.

  1. Open the terminal
  2. Install and setup Nix:
    sh <(curl -L https://nixos.org/nix/install) --daemon
    mkdir -p ~/.config/nix
    echo 'experimental-features = nix-command flakes' > ~/.config/nix/nix.conf
    See https://nixos.org/download.html for more details
  3. Use Nix to install pianotrans:
    nix profile install github:azuwis/pianotrans
  4. Run pianotrans to open the GUI, choose audio/video files, hold CTRL (โŒ˜ for macOS) to select multiple files

For CLI usage, run pianotrans file1 file2 ....

To upgrade pianotrans, run:

$ nix profile list
0 github:azuwis/pianotrans#defaultPackage.aarch64-linux github:azuwis/pianotrans/e19d5fd12f4295816fad49f6398e2e53ed2d2b7a#defaultPackage.aarch64-linux /nix/store/zdalndvcralish8d43drzslv0p4pm97v-python3.9-pianotrans-0.2.1
# list nix profiles, `0` is pianotrans
$ nix --option tarball-ttl 1 profile upgrade 0
$ nix profile list
0 github:azuwis/pianotrans#defaultPackage.aarch64-linux github:azuwis/pianotrans/e944720dd0dfcc2b87dcc39c1fdaab086eba4ca6#defaultPackage.aarch64-linux /nix/store/rv5iikrdvc7jrc7mqs8mkc21qh2gklhx-python3.9-pianotrans-1.0
# pianotrans upgraded to v1.0

FAQ

Q: Can you improve transcription result?

A: This project is about packaging for https://github.com/bytedance/piano_transcription, as long as it gives you MIDI files, all other issues are out of scope of this project.

You should report to the upstream project here https://github.com/bytedance/piano_transcription/issues

Changelog

[1.0.1] - 2023-02-09

  • Add --cli option to force disable GUI
  • Remove filetypes arg from askopenfilenames to avoid crash
  • Update Nix flake, and remove mido/soundfile/torchlibrosa/piano-transcription-inference overlay, all patches accepted in nixpkgs, this means more dependances can be fetched directly from Nix binary cache, less local builds
  • Add github test workflow

[1.0] - 2022-02-21

  • Support Linux/macOS using Nix
  • All platforms:
    • Add real GUI alongside CLI
    • GUI allow adding files to transcribe queue
  • Windows:
    • Right-click menu supports multiple files (need to re-run RightClickMenuRegister.bat)
    • Update pytorch to 1.10.2

[0.2.1] - 2021-12-23

  • Update pytorch to 1.10.1.
  • Update piano-transcription-inference to 0.0.5

[0.2] - 2021-09-27

  • Update pytorch to 1.9.1.
  • Add PianoTrans-CPU.bat to force using CPU for inference.

[0.1] - 2021-02-02

  • Initial release.

Cite

[1] Qiuqiang Kong, Bochen Li, Xuchen Song, Yuan Wan, and Yuxuan Wang. "High-resolution Piano Transcription with Pedals by Regressing Onsets and Offsets Times." arXiv preprint arXiv:2010.01815 (2020). [pdf]

pianotrans's People

Contributors

azuwis avatar

Stargazers

chirs avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.