إسماعيل بن علا

MusicGen

Transformer مقابل LSTM مقابل RNN للموسيقى

الذكاء الاصطناعي التوليدي · ماي 2024 · مكتمل

ثلاث شبكات عصبية تتنافس على تأليف ألحان بأسلوب فولكلوري انطلاقًا من تدوين نصي.

التقنياتPyTorchKerasStreamlitmusic21FluidSynth + pydubPoetry

MusicGen — نظرة عامة

نظرة عامة

أردت مقارنة منضبطة بين نماذج التسلسل الكلاسيكية الثلاثة (Transformer وLSTM وRNN) على بيانات موسيقية واحدة، بدل نموذج واحد مضبوط بعناية وتخمين لسبب نجاحه.

يمثّل MusicGen المقطوعات بتدوين ABC، وهو صيغة نصية للنوتة الموسيقية، ويدرّب كل بنية على مواصلة هذا النص رمزًا تلو الآخر. نفّذت Transformer وLSTM وRNN من الصفر في PyTorch؛ ولـ LSTM وRNN أيضًا نسختان مبنيتان على طبقات PyTorch الجاهزة. أضفت ثلاثة مُقطِّعات (tokenizers): واحدًا على مستوى الأحرف، ومُقطِّع ترميز أزواج البايتات (byte-pair encoding) درّبته بنفسي، ومُقطِّع كلمات من Keras، لأرى كيف يغيّر التقطيع النتائج.

يجمع تطبيق Streamlit كل ذلك. تختار نموذجًا، وتعطيه بضع نوتات افتتاحية، فيولّد ألحانًا تُحوَّل إلى صوت ويمكن تنزيلها بصيغة MP3.

السؤال

على المدوّنة الموسيقية نفسها، كيف تتقارن Transformer وLSTM وRNN في توليد الموسيقى الرمزية؟

أهم الميزات

كيف يعمل

  1. المقطوعات كنص

    يُغلَّف تدوين ABC لكل لحن برمزي بداية ونهاية، وتُضم الألحان في نص تدريب واحد طويل.

  2. التقطيع

    يُقسَّم النص إلى رموز بأحد ثلاثة مُقطِّعات: أحرف منفردة، أو دمجات متعلَّمة بترميز أزواج البايتات، أو رموز كلمات Keras.

  3. تدريب متنبئات بالرمز التالي

    يتعلم كل من Transformer بمُفكِّك فقط وLSTM وRNN التنبؤ بالرمز التالي، مع متابعة الخسارة والدقة في التدريب والتحقق.

  4. معاينة موسيقى جديدة

    انطلاقًا من نوتات المستخدم الافتتاحية، يعاين النموذج الرموز واحدًا تلو الآخر، بالتحكم في درجة الحرارة وtop-k.

  5. التحويل إلى صوت

    يُحلَّل تدوين ABC المولَّد بـ music21، ويُكتب إلى MIDI، ويُركَّب إلى WAV بـ FluidSynth، ويُحوَّل إلى MP3 للتشغيل والتنزيل.

أمثلة

تطبيق Streamlit: نوتات ABC الافتتاحية وإعدادات المعاينة على اليسار، والألحان المولَّدة مع مشغّلات وروابط تنزيل MP3 على اليمين.
تطبيق Streamlit: نوتات ABC الافتتاحية وإعدادات المعاينة على اليسار، والألحان المولَّدة مع مشغّلات وروابط تنزيل MP3 على اليمين.
Transformer: الخسارة والدقة في التدريب والتحقق لكل حقبة (epoch).
Transformer: الخسارة والدقة في التدريب والتحقق لكل حقبة (epoch).
LSTM: الخسارة والدقة في التدريب والتحقق لكل حقبة.
LSTM: الخسارة والدقة في التدريب والتحقق لكل حقبة.
RNN: الخسارة والدقة في التدريب والتحقق لكل حقبة.
RNN: الخسارة والدقة في التدريب والتحقق لكل حقبة.

التقنيات المستخدمة

ما تعلمته

الحدود