Basic Pitch هي مكتبة Python للنسخ التلقائي للموسيقى (AMT)، باستخدام شبكة عصبية خفيفة الوزن تم تطويرها بواسطة مختبر الذكاء الصوتي في 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
لحفظ عرض صوتي بتنسيق .wav
لملف MIDI.--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 > )
&
> (التردد العائم ) يضبط الحد الأقصى والأدنى لتردد النغمة المسموح به، بالهرتز، والذي يتم إرجاعه بواسطة النموذج. سيتم استبعاد أحداث العرض ذات الترددات خارج هذا النطاق من نتائج التنبؤ.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 العملي من العرض الأساسي! - https://github.com/DamRsn/NeuralNote
نرحب بالمساهمات في basic-pitch
! راجع CONTRIBUTING.md للحصول على التفاصيل.
حقوق basic-pitch
محفوظة لشركة Spotify AB لعام 2022.
تم ترخيص هذا البرنامج بموجب ترخيص Apache، الإصدار 2.0 ("ترخيص Apache"). لا يجوز لك اختيار أي من الترخيصين للتحكم في استخدامك لهذا البرنامج إلا بشرط قبول جميع شروط ترخيص Apache.
يمكنك الحصول على نسخة من ترخيص Apache على:
http://www.apache.org/licenses/LICENSE-2.0
ما لم يكن ذلك مطلوبًا بموجب القانون المعمول به أو تم الاتفاق عليه كتابيًا، يتم توزيع البرامج الموزعة بموجب ترخيص Apache أو ترخيص GPL على أساس "كما هي"، دون ضمانات أو شروط من أي نوع، سواء كانت صريحة أو ضمنية. راجع ترخيص Apache لمعرفة الأذونات والقيود التي تحكم اللغة المحددة بموجب ترخيص Apache.