Basic Pitch는 Spotify의 Audio Intelligence Lab에서 개발한 경량 신경망을 사용하는 AMT(자동 음악 녹음)용 Python 라이브러리입니다. 작고 사용하기 쉬우며 형제 저장소를 통해 pip install
및 npm install
가능합니다.
기본 피치는 간단할 수 있지만 "기본"과는 거리가 멀습니다! basic-pitch
는 효율적이고 사용하기 쉬우며 멀티 피치 지원, 악기 전반에 걸쳐 일반화하는 능력 및 음표 정확도는 훨씬 더 크고 리소스를 많이 사용하는 AMT 시스템과 경쟁합니다.
호환되는 오디오 파일을 제공하면 basic-pitch가 피치 벤드가 포함된 MIDI 파일을 생성합니다. 기본 피치는 악기에 구애받지 않으며 다성 악기를 지원하므로 어떤 악기를 사용하든 좋아하는 모든 음악의 녹음을 자유롭게 즐길 수 있습니다. 기본 피치는 한 번에 하나의 악기에서 가장 잘 작동합니다.
이 라이브러리는 ICASSP 2022에서 Spotify의 출판물과 함께 출시되었습니다. 이 연구에 대한 자세한 내용은 A Lightweight Instrument-Agnostic Model for Polyphonic Note Transcription and Multipitch Estimation 논문에서 읽을 수 있습니다.
학술 연구에 이 라이브러리를 사용하는 경우 다음과 같이 인용해 보세요.
@inproceedings { 2022_BittnerBRME_LightweightNoteTranscription_ICASSP ,
author = { Bittner, Rachel M. and Bosch, Juan Jos'e and Rubinstein, David and Meseguer-Brocal, Gabriel and Ewert, Sebastian } ,
title = { A Lightweight Instrument-Agnostic Model for Polyphonic Note Transcription and Multipitch Estimation } ,
booktitle = { Proceedings of the IEEE International Conference on Acoustics, Speech, and Signal Processing (ICASSP) } ,
address = { Singapore } ,
year = 2022 ,
}
이 백서에 제시된 것 이상으로 기본 피치가 향상되었습니다. 따라서 Basic Pitch의 출력물을 학술 연구에 활용하는 경우에는 사용된 코드의 버전을 인용하는 것이 좋습니다.
어떤 이유로든 아직 완전히 영감을 받지 못했거나 일반적인 분위기 등에 완전히 만족하지 못했다면 저희의 멋진 데모 웹사이트인 basicpitch.io를 확인하여 귀하가 제공하는 음악 오디오에 대한 모델을 실험해 보세요. !
basic-pitch
PyPI를 통해 사용할 수 있습니다. 현재 릴리스를 설치하려면 다음을 수행하십시오.
pip install basic-pitch
Basic Pitch를 최신 버전으로 업데이트하려면 위 명령에 --upgrade
추가하세요.
Basic Pitch에는 원래 TensorFlow 모델과 CoreML, TensorFlowLite 및 ONNX로 변환된 TensorFlow 모델이 함께 제공됩니다. 기본적으로 Basic Pitch는 Python>=3.11 을 사용하지 않는 한 TensorFlow를 종속성으로 설치 하지 않습니다 . 대신 기본적으로 CoreML은 MacOS에 설치되고 TensorFlowLite는 Linux에 설치되며 ONNX는 Windows에 설치됩니다. 기본 모델 추론 런타임과 함께 TensorFlow를 설치하려면 pip install basic-pitch[tf]
통해 TensorFlow를 설치할 수 있습니다.
기본적으로 Basic Pitch는 다음 순서로 모델 로드를 시도합니다.
또한 모듈 변수 ICASSP_2022_MODEL_PATH는 기본적으로 목록에서 사용 가능한 첫 번째 버전으로 설정됩니다.
아래에서는 이 우선순위 목록을 재정의하는 방법을 설명합니다. 다른 모든 모델 직렬화는 TensorFlow에서 변환되었으므로 가능하면 TensorFlow를 사용하는 것이 좋습니다. NB Basic Pitch는 Basic Pitch 설치 및 실행 시 사용자 시간을 절약하기 위해 TensorFlow를 기본적으로 설치하지 않습니다.
이 라이브러리는 명령줄 도구 인터페이스를 제공합니다. 기본 예측 명령은
에서
에 대한 오디오의 MIDI 파일 전사를 생성하고 저장합니다.
basic-pitch < output-directory > < input-audio-path >
예를 들어:
basic-pitch /output/directory/path /input/audio/path
한 번에 두 개 이상의 오디오 파일을 처리하려면:
basic-pitch < output-directory > < input-audio-path- 1> < input-audio-path- 2> < input-audio-path- 3>
선택적으로 예측 명령에 다음 플래그 중 하나를 추가하여 예측 출력의 추가 형식을
에 저장할 수 있습니다.
--sonify-midi
MIDI 파일의 .wav
오디오 렌더링을 추가로 저장합니다.--save-model-outputs
원시 모델 출력을 NPZ 파일로 추가로 저장합니다.--save-note-events
하면 예상되는 노트 이벤트를 CSV 파일로 추가로 저장할 수 있습니다. 기본이 아닌 모델 유형을 사용하려면(예: TF 대신 CoreML 사용) --model-serialization
인수를 사용하세요. CLI는 로드된 모델을 원하는 유형으로 변경합니다.
더 많은 매개변수 제어를 검색하려면 다음을 실행하세요.
basic-pitch --help
예측하다()
basic-pitch
자신의 Python 코드로 가져오고 predict
함수를 직접 실행하여
를 제공하고 모델의 예측 결과를 반환합니다.
from basic_pitch . inference import predict
from basic_pitch import ICASSP_2022_MODEL_PATH
model_output , midi_data , note_events = predict ( < input - audio - path > )
및
( float s)는 모델에서 반환된 최대 및 최소 허용 음표 주파수(Hz)를 설정합니다. 이 범위를 벗어나는 빈도의 피치 이벤트는 예측 결과에서 제외됩니다.model_output
은 원시 모델 추론 출력입니다.midi_data
model_output
에서 파생된 복사된 MIDI 데이터입니다.note_events
는 model_output
에서 파생된 노트 이벤트 목록입니다.참고: 앞서 언급했듯이 ICASSP_2022_MODEL_PATH는 TensorFlow, CoreML, TensorFlowLite, ONNX 목록에서 처음 지원되는 런타임으로 기본 설정됩니다.
루프에서 예측()
루프 내에서 예측을 실행하려면 중복되고 느린 모델 로딩을 피하기 위해 모델을 직접 로드하고 반복적인 예측 호출에 사용할 로드된 모델 객체 자체와 함께 predict()
제공하는 것이 좋습니다.
import tensorflow as tf
from basic_pitch . inference import predict , Model
from basic_pitch import ICASSP_2022_MODEL_PATH
basic_pitch_model = Model ( ICASSP_2022_MODEL_PATH ))
for x in range ():
...
model_output , midi_data , note_events = predict (
< loop - x - input - audio - path > ,
basic_pitch_model ,
)
...
예측_및_저장()
지원되는 다양한 출력 파일 유형의 생성 및 저장을 basic-pitch
조정하려면 predict
직접 사용하는 대신 predict_and_save
사용할 수 있습니다.
from basic_pitch . inference import predict_and_save
predict_and_save (
< input - audio - path - list > ,
< output - directory > ,
< save - midi > ,
< sonify - midi > ,
< save - model - outputs > ,
< save - notes > ,
)
어디:
및
basic-pitch
에서 읽고 쓸 수 있는 디렉토리 경로입니다.
에 저장을 제어합니다.
에 저장하는 것을 제어합니다.
에 NPZ 파일로 저장하는 것을 제어합니다.
로 저장하는 것을 제어하는 bool지원되는 오디오 코덱
basic-pitch
다음을 포함하여 librosa
버전과 호환되는 모든 사운드 파일을 허용합니다.
.mp3
.ogg
.wav
.flac
.m4a
모노 채널 오디오만
스테레오 오디오를 모델에 대한 입력으로 사용할 수 있지만 예측 시 입력 채널은 모노로 다운믹스된 다음 분석 및 전사됩니다.
파일 크기/오디오 길이
이 모델은 모든 크기나 길이의 오디오를 처리할 수 있지만 더 크거나 긴 오디오 파일의 처리는 컴퓨터의 사용 가능한 디스크 공간에 따라 제한될 수 있습니다. 이러한 파일을 처리하려면 파일의 오디오를 스트리밍하여 한 번에 오디오 창을 처리하는 것이 좋습니다.
샘플링 속도
입력 오디오는 임의의 샘플 속도일 수 있지만 모든 오디오는 처리 전에 22050Hz로 리샘플링됩니다.
기본 피치의 작동 가능한 VST 버전을 개발해 주신 DamRsn에게 감사드립니다! - https://github.com/DamRsn/NeuralNote
basic-pitch
에 대한 기여를 환영합니다! 자세한 내용은 CONTRIBUTING.md를 참조하세요.
basic-pitch
는 저작권 2022 Spotify AB입니다.
이 소프트웨어는 Apache 라이센스 버전 2.0("Apache 라이센스")에 따라 라이센스가 부여되었습니다. 귀하는 Apache 라이센스 중 하나의 조건을 모두 수락하는 조건 하에서만 이 소프트웨어의 사용에 적용되는 라이센스 중 하나를 선택할 수 있습니다.
다음 주소에서 Apache 라이센스 사본을 얻을 수 있습니다.
http://www.apache.org/licenses/LICENSE-2.0
해당 법률에서 요구하거나 서면으로 동의하지 않는 한, Apache 라이센스 또는 GPL 라이센스에 따라 배포되는 소프트웨어는 명시적이든 묵시적이든 어떠한 종류의 보증이나 조건 없이 "있는 그대로" 배포됩니다. Apache 라이선스에 따른 권한 및 제한 사항을 관리하는 특정 언어는 Apache 라이선스를 참조하세요.