Basic Pitch — это библиотека Python для автоматической транскрипции музыки (AMT), использующая легкую нейронную сеть, разработанную лабораторией Audio Intelligence Lab компании Spotify. Это небольшой, простой в использовании пакет, pip install
и npm install
через родственный репозиторий.
Базовый шаг может быть простым, но он далеко не «базовый»! basic-pitch
эффективен и прост в использовании, а его поддержка нескольких шагов, возможность обобщения между инструментами и точность нот конкурируют с гораздо более крупными и более ресурсоемкими системами AMT.
Предоставьте совместимый аудиофайл, и функция Basic-Pitch сгенерирует MIDI-файл с изменениями высоты тона. Базовая высота звука не зависит от инструмента и поддерживает полифонические инструменты, поэтому вы можете свободно наслаждаться транскрипцией всей вашей любимой музыки, независимо от того, какой инструмент используется. Базовый тон лучше всего работает на одном инструменте одновременно.
Эта библиотека была выпущена одновременно с публикацией Spotify на ICASSP 2022. Подробнее об этом исследовании можно прочитать в статье «Облегченная инструментально-агностическая модель для транскрипции полифонических нот и оценки многотональности».
Если вы используете эту библиотеку в академических исследованиях, рассмотрите возможность процитировать ее:
@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 и моделью TensorFlow, преобразованной в CoreML, TensorFlowLite и ONNX. По умолчанию Basic Pitch не будет устанавливать TensorFlow в качестве зависимости , если вы не используете Python>=3.11 . Вместо этого по умолчанию CoreML будет установлен в MacOS, TensorFlowLite будет установлен в Linux, а ONNX будет установлен в Windows. Если вы хотите установить TensorFlow вместе со средой выполнения вывода модели по умолчанию, вы можете установить TensorFlow с помощью pip install basic-pitch[tf]
.
По умолчанию Basic Pitch попытается загрузить модель в следующем порядке:
Кроме того, переменная модуля ICASSP_2022_MODEL_PATH по умолчанию будет иметь значение первой доступной версии в списке.
Ниже мы объясним, как переопределить этот список приоритетов. Поскольку все остальные сериализации моделей были преобразованы из TensorFlow, мы рекомендуем использовать TensorFlow, когда это возможно. NB Basic Pitch не устанавливает TensorFlow по умолчанию, чтобы сэкономить время пользователя при установке и запуске Basic Pitch.
Эта библиотека предлагает интерфейс инструмента командной строки. Базовая команда прогнозирования сгенерирует и сохранит транскрипцию звука 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. Если вы хотите использовать тип модели, отличный от типа по умолчанию (например, использовать CoreML вместо TF), используйте аргумент --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) устанавливают максимальную и минимальную допустимую частоту нот в Гц, возвращаемую моделью. События высоты звука с частотами вне этого диапазона будут исключены из результатов прогнозирования.model_output
— результат вывода необработанной модели.midi_data
— это расшифрованные MIDI-данные, полученные из model_output
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_and_save
вместо прямого использования predict
:
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
для чтения/записи.
Поддерживаемые аудиокодеки
basic-pitch
принимает все звуковые файлы, совместимые с его версией librosa
, включая:
.mp3
.ogg
.wav
.flac
.m4a
Только моноканальный звук
Хотя вы можете использовать стереозвук в качестве входных данных для нашей модели, во время прогнозирования входные каналы будут микшированы в моно, а затем проанализированы и транскрибированы.
Размер файла/длина звука
Эта модель может обрабатывать аудиофайлы любого размера и длины, но обработка аудиофайлов большего/длинного размера может быть ограничена доступным дисковым пространством вашего компьютера. Для обработки этих файлов мы рекомендуем осуществлять потоковую передачу звука файла, обрабатывая окна звука за раз.
Частота дискретизации
Входной звук может иметь любую частоту дискретизации, однако перед обработкой весь звук будет передискретизирован до 22050 Гц.
Спасибо DamRsn за разработку рабочей VST-версии Basic-Pitch! - https://github.com/DamRsn/NeuralNote
Вклады в basic-pitch
приветствуются! Подробности смотрите на CONTRIBUTING.md.
Copyright basic-pitch
Spotify AB.
Это программное обеспечение распространяется по лицензии Apache версии 2.0 («Лицензия Apache»). Вы можете выбрать любую лицензию для управления использованием данного программного обеспечения только при условии, что вы принимаете все условия любой лицензии Apache.
Вы можете получить копию лицензии Apache по адресу:
http://www.apache.org/licenses/LICENSE-2.0
Если это не требуется применимым законодательством или не согласовано в письменной форме, программное обеспечение, распространяемое по лицензии Apache или лицензии GPL, распространяется на условиях «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ ИЛИ УСЛОВИЙ, явных или подразумеваемых. См. лицензию Apache для получения информации о конкретном языке, регулирующем разрешения и ограничения в рамках лицензии Apache.