Basic Pitch est une bibliothèque Python pour la transcription automatique de la musique (AMT), utilisant un réseau neuronal léger développé par l'Audio Intelligence Lab de Spotify. Il est petit, facile à utiliser, pip install
-able et npm install
-able via son dépôt frère.
Le pitch de base est peut-être simple, mais il est loin d'être « basique » ! basic-pitch
est efficace et facile à utiliser, et sa prise en charge de plusieurs hauteurs, sa capacité à généraliser à travers les instruments et sa précision de note rivalisent avec des systèmes AMT beaucoup plus grands et plus gourmands en ressources.
Fournissez un fichier audio compatible et basic-pitch générera un fichier MIDI, complet avec les pitch bends. La tonalité de base est indépendante de l'instrument et prend en charge les instruments polyphoniques, vous pouvez donc profiter librement de la transcription de toute votre musique préférée, quel que soit l'instrument utilisé. La hauteur de base fonctionne mieux sur un instrument à la fois.
Cette bibliothèque a été publiée conjointement avec la publication de Spotify à l'ICASSP 2022. Vous pouvez en savoir plus sur cette recherche dans l'article A Lightweight Instrument-Agnostic Model for Polyphonic Note Transcription and Multipitch Estimation.
Si vous utilisez cette bibliothèque dans le cadre de recherches universitaires, pensez à la citer :
@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 ,
}
Notez que nous avons amélioré le Basic Pitch au-delà de ce qui a été présenté dans cet article. Par conséquent, si vous utilisez le résultat de Basic Pitch dans le cadre d’une recherche universitaire, nous vous recommandons de citer la version du code qui a été utilisée.
Si, pour une raison quelconque, vous n'êtes pas encore complètement inspiré, ou si vous êtes complètement dépassé par l'ambiance générale, consultez notre site Web de démonstration accrocheur, basicpitch.io, pour expérimenter notre modèle sur l'audio musical que vous fournissez. !
basic-pitch
est disponible via PyPI. Pour installer la version actuelle :
pip install basic-pitch
Pour mettre à jour Basic Pitch vers la dernière version, ajoutez --upgrade
à la commande ci-dessus.
Basic Pitch est livré avec le modèle TensorFlow d'origine et le modèle TensorFlow converti en CoreML, TensorFlowLite et ONNX. Par défaut, Basic Pitch n'installera pas TensorFlow en tant que dépendance , sauf si vous utilisez Python>=3.11 . Au lieu de cela, par défaut, CoreML sera installé sur MacOS, TensorFlowLite sera installé sur Linux et ONNX sera installé sur Windows. Si vous souhaitez installer TensorFlow avec le runtime d'inférence de modèle par défaut, vous pouvez installer TensorFlow via pip install basic-pitch[tf]
.
Par défaut, Basic Pitch tentera de charger un modèle dans l'ordre suivant :
De plus, la variable de module ICASSP_2022_MODEL_PATH sera par défaut la première version disponible dans la liste.
Nous expliquerons ci-dessous comment remplacer cette liste de priorités. Étant donné que toutes les autres sérialisations de modèles ont été converties à partir de TensorFlow, nous vous recommandons d'utiliser TensorFlow lorsque cela est possible. NB Basic Pitch n'installe pas TensorFlow par défaut pour faire gagner du temps à l'utilisateur lors de l'installation et de l'exécution de Basic Pitch.
Cette bibliothèque propose une interface d'outil en ligne de commande. Une commande de prédiction de base générera et enregistrera une transcription de fichier MIDI de l'audio au
dans le
:
basic-pitch < output-directory > < input-audio-path >
Par exemple:
basic-pitch /output/directory/path /input/audio/path
Pour traiter plusieurs fichiers audio à la fois :
basic-pitch < output-directory > < input-audio-path- 1> < input-audio-path- 2> < input-audio-path- 3>
Facultativement, vous pouvez ajouter l'un des indicateurs suivants à votre commande de prédiction pour enregistrer des formats supplémentaires de la sortie de prédiction dans le
:
--sonify-midi
pour enregistrer en plus un rendu audio .wav
du fichier MIDI.--save-model-outputs
pour enregistrer en outre les sorties brutes du modèle sous forme de fichier NPZ.--save-note-events
pour enregistrer en outre les événements de note prévus sous forme de fichier CSV. Si vous souhaitez utiliser un type de modèle autre que celui par défaut (par exemple, utilisez CoreML au lieu de TF), utilisez l'argument --model-serialization
. La CLI changera le modèle chargé en type que vous préférez.
Pour découvrir plus de contrôle des paramètres, exécutez :
basic-pitch --help
prédire()
Importez basic-pitch
dans votre propre code Python et exécutez directement les fonctions predict
, en fournissant un
et en renvoyant les résultats de prédiction du modèle :
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) définissent la fréquence de note maximale et minimale autorisée, en Hz, renvoyée par le modèle. Les événements de pitch dont les fréquences se situent en dehors de cette plage seront exclus des résultats de prédiction.model_output
est la sortie brute de l'inférence du modèlemidi_data
est les données MIDI transcrites dérivées du model_output
note_events
est une liste d'événements de note dérivés de model_output
Remarque : Comme mentionné précédemment, ICASSP_2022_MODEL_PATH utilisera par défaut le premier moteur d'exécution pris en charge dans la liste TensorFlow, CoreML, TensorFlowLite, ONNX.
prédire() dans une boucle
Pour exécuter une prédiction dans une boucle, vous souhaiterez charger le modèle vous-même et fournir à predict()
l'objet de modèle chargé lui-même à utiliser pour les appels de prédiction répétés, afin d'éviter un chargement de modèle redondant et lent.
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 ,
)
...
prédire_et_save()
Si vous souhaitez que basic-pitch
orchestre la génération et la sauvegarde de nos différents types de fichiers de sortie pris en charge, vous pouvez utiliser predict_and_save
au lieu d'utiliser predict
directement :
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 > ,
)
où:
&
basic-pitch
à partir duquel lire/écrire.
Codecs audio pris en charge
basic-pitch
accepte tous les fichiers son compatibles avec sa version de librosa
, notamment :
.mp3
.ogg
.wav
.flac
.m4a
Audio mono canal uniquement
Bien que vous puissiez utiliser l'audio stéréo comme entrée dans notre modèle, au moment de la prédiction, les canaux de l'entrée seront mixés en mono, puis analysés et transcrits.
Taille du fichier/longueur audio
Ce modèle peut traiter n'importe quelle taille ou longueur d'audio, mais le traitement de fichiers audio plus volumineux/plus longs peut être limité par l'espace disque disponible de votre machine. Pour traiter ces fichiers, nous vous recommandons de diffuser l'audio du fichier, en traitant les fenêtres audio à la fois.
Taux d'échantillonnage
L'audio d'entrée peut avoir n'importe quelle fréquence d'échantillonnage, cependant, tout l'audio sera rééchantillonné à 22 050 Hz avant le traitement.
Merci à DamRsn d'avoir développé cette version VST fonctionnelle de basic-pitch ! - https://github.com/DamRsn/NeuralNote
Les contributions au basic-pitch
sont les bienvenues ! Voir CONTRIBUTING.md pour plus de détails.
basic-pitch
est protégé par Copyright 2022 Spotify AB.
Ce logiciel est sous licence Apache, version 2.0 (la « Licence Apache »). Vous pouvez choisir l'une ou l'autre licence pour régir votre utilisation de ce logiciel uniquement à la condition que vous acceptiez tous les termes de l'une ou l'autre licence Apache.
Vous pouvez obtenir une copie de la licence Apache à l'adresse :
http://www.apache.org/licenses/LICENSE-2.0
Sauf disposition contraire de la loi applicable ou accord écrit, les logiciels distribués sous la licence Apache ou la licence GPL sont distribués « EN L'ÉTAT », SANS GARANTIES NI CONDITIONS D'AUCUNE SORTE, expresses ou implicites. Consultez la licence Apache pour connaître les autorisations et limitations spécifiques à la langue dans le cadre de la licence Apache.