Basic Pitch ist eine Python-Bibliothek für die automatische Musiktranskription (AMT), die ein leichtes neuronales Netzwerk verwendet, das vom Audio Intelligence Lab von Spotify entwickelt wurde. Es ist klein, einfach zu verwenden und über sein Geschwister-Repo pip install
und npm install
.
Basic Pitch mag einfach sein, aber es ist alles andere als „einfach“! basic-pitch
ist effizient und einfach zu verwenden, und seine Multipitch-Unterstützung, seine Fähigkeit zur Verallgemeinerung über Instrumente hinweg und seine Notengenauigkeit konkurrieren mit viel größeren und ressourcenintensiveren AMT-Systemen.
Stellen Sie eine kompatible Audiodatei bereit und basic-pitch generiert eine MIDI-Datei, komplett mit Pitch Bends. Basic Pitch ist instrumentenunabhängig und unterstützt polyphone Instrumente, sodass Sie die Transkription all Ihrer Lieblingsmusik ungehindert genießen können, unabhängig davon, welches Instrument verwendet wird. Die Grundtonhöhe funktioniert am besten jeweils auf einem Instrument.
Diese Bibliothek wurde im Zusammenhang mit der Veröffentlichung von Spotify auf der ICASSP 2022 veröffentlicht. Weitere Informationen zu dieser Forschung finden Sie im Artikel „A Lightweight Instrument-Agnostic Model for Polyphonic Note Transcription and Multipitch Estimation“.
Wenn Sie diese Bibliothek in der wissenschaftlichen Forschung nutzen, sollten Sie darüber nachdenken, sie zu zitieren:
@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 ,
}
Beachten Sie, dass wir Basic Pitch über das in diesem Dokument vorgestellte hinaus verbessert haben. Wenn Sie die Ausgabe von Basic Pitch in der akademischen Forschung verwenden, empfehlen wir Ihnen daher, die verwendete Codeversion anzugeben.
Wenn Sie aus irgendeinem Grund noch nicht vollständig inspiriert sind oder einfach nur von der allgemeinen Stimmung und all dem Zeug überwältigt sind, schauen Sie sich unsere flotte Demo-Website basicpitch.io an, um mit unserem Modell mit dem von Ihnen bereitgestellten Musik-Audio zu experimentieren !
basic-pitch
ist über PyPI verfügbar. So installieren Sie die aktuelle Version:
pip install basic-pitch
Um Basic Pitch auf die neueste Version zu aktualisieren, fügen Sie --upgrade
zum obigen Befehl hinzu.
Basic Pitch enthält das ursprüngliche TensorFlow-Modell und das in CoreML, TensorFlowLite und ONNX konvertierte TensorFlow-Modell. Standardmäßig installiert Basic Pitch TensorFlow nicht als Abhängigkeit , es sei denn, Sie verwenden Python>=3.11 . Stattdessen wird CoreML standardmäßig auf MacOS, TensorFlowLite auf Linux und ONNX auf Windows installiert. Wenn Sie TensorFlow zusammen mit der Standard-Modellinferenzlaufzeit installieren möchten, können Sie TensorFlow über pip install basic-pitch[tf]
installieren.
Standardmäßig versucht Basic Pitch, ein Modell in der folgenden Reihenfolge zu laden:
Darüber hinaus wird die Modulvariable ICASSP_2022_MODEL_PATH standardmäßig auf die erste verfügbare Version in der Liste gesetzt.
Im Folgenden erklären wir Ihnen, wie Sie diese Prioritätenliste außer Kraft setzen können. Da alle anderen Modellserialisierungen von TensorFlow konvertiert wurden, empfehlen wir, wenn möglich, TensorFlow zu verwenden. Hinweis: Basic Pitch installiert TensorFlow nicht standardmäßig, um dem Benutzer Zeit bei der Installation und Ausführung von Basic Pitch zu sparen.
Diese Bibliothek bietet eine Befehlszeilen-Tool-Schnittstelle. Ein einfacher Vorhersagebefehl generiert und speichert eine MIDI-Dateitranskription von Audio im
zum
:
basic-pitch < output-directory > < input-audio-path >
Zum Beispiel:
basic-pitch /output/directory/path /input/audio/path
So verarbeiten Sie mehr als eine Audiodatei gleichzeitig:
basic-pitch < output-directory > < input-audio-path- 1> < input-audio-path- 2> < input-audio-path- 3>
Optional können Sie eines der folgenden Flags an Ihren Vorhersagebefehl anhängen, um zusätzliche Formate der Vorhersageausgabe im
zu speichern:
--sonify-midi
um zusätzlich eine .wav
Audiowiedergabe der MIDI-Datei zu speichern.--save-model-outputs
, um Rohmodellausgaben zusätzlich als NPZ-Datei zu speichern.--save-note-events
, um die vorhergesagten Notizereignisse zusätzlich als CSV-Datei zu speichern. Wenn Sie einen nicht standardmäßigen Modelltyp verwenden möchten (z. B. CoreML anstelle von TF), verwenden Sie das Argument --model-serialization
. Die CLI ändert das geladene Modell in den von Ihnen bevorzugten Typ.
Um mehr Parametersteuerung zu entdecken, führen Sie Folgendes aus:
basic-pitch --help
vorhersagen()
Importieren Sie basic-pitch
in Ihren eigenen Python-Code und führen Sie die predict
direkt aus, indem Sie einen
bereitstellen und die Vorhersageergebnisse des Modells zurückgeben:
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) legen die maximal und minimal zulässige Notenfrequenz in Hz fest, die vom Modell zurückgegeben wird. Tonhöhenereignisse mit Häufigkeiten außerhalb dieses Bereichs werden von den Vorhersageergebnissen ausgeschlossen.model_output
ist die Rohausgabe der Modellinferenzmidi_data
sind die transkribierten MIDI-Daten, die von model_output
abgeleitet wurdennote_events
ist eine Liste von Notizereignissen, die von model_output
abgeleitet wurdenHinweis: Wie bereits erwähnt, verwendet ICASSP_2022_MODEL_PATH standardmäßig die Laufzeit, die zuerst in der Liste TensorFlow, CoreML, TensorFlowLite, ONNX unterstützt wird.
predict() in einer Schleife
Um die Vorhersage innerhalb einer Schleife auszuführen, sollten Sie das Modell selbst laden und predict()
mit dem geladenen Modellobjekt selbst bereitstellen, das für wiederholte Vorhersageaufrufe verwendet werden kann, um redundantes und langsames Laden des Modells zu vermeiden.
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 ,
)
...
predict_and_save()
Wenn Sie möchten, dass basic-pitch
die Generierung und Speicherung unserer verschiedenen unterstützten Ausgabedateitypen orchestriert, können Sie predict_and_save
anstelle von predict
direkt verwenden:
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 > ,
)
Wo:
&
basic-pitch
zum Lesen/Schreiben.
zu steuern
Unterstützte Audio-Codecs
basic-pitch
akzeptiert alle Sounddateien, die mit seiner librosa
-Version kompatibel sind, einschließlich:
.mp3
.ogg
.wav
.flac
.m4a
Nur Monokanal-Audio
Während Sie Stereo-Audio als Eingabe für unser Modell verwenden können, werden die Kanäle der Eingabe zum Zeitpunkt der Vorhersage auf Mono heruntergemischt und dann analysiert und transkribiert.
Dateigröße/Audiolänge
Dieses Modell kann Audiodaten jeder Größe und Länge verarbeiten, die Verarbeitung größerer/längerer Audiodateien kann jedoch durch den verfügbaren Speicherplatz Ihres Computers eingeschränkt sein. Um diese Dateien zu verarbeiten, empfehlen wir, das Audio der Datei zu streamen und dabei Audiofenster nacheinander zu verarbeiten.
Abtastrate
Das Eingangsaudio kann eine beliebige Abtastrate haben, das gesamte Audio wird jedoch vor der Verarbeitung auf 22050 Hz neu abgetastet.
Vielen Dank an DamRsn für die Entwicklung dieser funktionierenden VST-Version von Basic-Pitch! - https://github.com/DamRsn/NeuralNote
Beiträge zum basic-pitch
sind willkommen! Weitere Informationen finden Sie unter CONTRIBUTING.md.
basic-pitch
unterliegt dem Copyright 2022 von Spotify AB.
Diese Software ist unter der Apache-Lizenz, Version 2.0 (die „Apache-Lizenz“) lizenziert. Sie können eine der beiden Lizenzen wählen, um Ihre Nutzung dieser Software nur unter der Bedingung zu regeln, dass Sie alle Bedingungen einer der Apache-Lizenzen akzeptieren.
Eine Kopie der Apache-Lizenz erhalten Sie unter:
http://www.apache.org/licenses/LICENSE-2.0
Sofern nicht durch geltendes Recht vorgeschrieben oder schriftlich vereinbart, wird die unter der Apache-Lizenz oder der GPL-Lizenz vertriebene Software „WIE BESEHEN“ und OHNE GEWÄHRLEISTUNGEN ODER BEDINGUNGEN JEGLICHER ART, weder ausdrücklich noch stillschweigend, vertrieben. Die spezifische Sprache, die die Berechtigungen und Einschränkungen unter der Apache-Lizenz regelt, finden Sie in der Apache-Lizenz.