سؤال

أنا جديد في هذا الحقل-لكنني بحاجة إلى إجراء تحويل Wav إلى Midi في Java. هل هناك طريقة لمعرفة ما هي الخطوات التي تنطوي عليها بالضبط في تحويل WAV إلى Midi؟ لدي فكرة تقريبية للغاية كما في الحاجة إلى ؛ عينة من ملف WAV ، وتصفيةه ، واستخدم FFT للتحليل الطيفي ، واستخراج الميزات ، ثم اكتب الميزات المستخرجة إلى MIDI. لكن لا يمكنني العثور على مصادر أو أوراق صلبة كما في كيفية القيام بكل ذلك؟ هل يمكن لأحد أن يعطيني أدلة كما في كيف وأين تبدأ؟ هل هناك أي واجهات برمجة تطبيقات مفتوحة المصدر متاحة لعملية تحويل WAV إلى MIDI؟

تقدم شكرا

هل كانت مفيدة؟

المحلول

إنها عملية أكثر تشاركًا مما تتخيل.

غالبًا ما يشار إلى مشكلة البحث هذه باسم نسخ الموسيقى: عملية تحويل تمثيل منخفض المستوى للموسيقى (على سبيل المثال ، الشكل الموجي) إلى تمثيل عالي المستوى مثل MIDI أو حتى الموسيقى الورقية.

يعتمد تطور الحل الخاص بك على تعقيد بيانات الإدخال الخاصة بك. تعالج الكثير من الأوراق البحثية نسخ الموسيقى فقط على البيانو أحادي الصغر أو الطبول ... لأنه من السهل نسخها. (نسبيا.) الكمان أصعب. الصوت أصعب. الكمان Plus Voice Plus Piano أصعب بكثير. سيمفونية شبه مستحيلة. يمكنك الحصول على الصورة.

تتضمن العناصر الأساسية لنسخ الموسيقى أيًا من المجالات المتداخلة التالية:

  1. (متعدد) تقدير الملعب
  2. التعرف على الصك ، نمذجة timbral
  3. الكشف عن الإيقاع
  4. ملاحظة ظهور/اكتشاف الإزاحة
  5. نمذجة النموذج/الهيكل

ابحث عن أوراق حول "النسخ الموسيقي" على الباحث العلمي من Google أو من وقائع Ismir: http://www.ismir.net. إذا كنت مهتمًا أكثر بواحدة من المواطن الفرعية أعلاه ، فيمكنني توجيهك إلى أبعد من ذلك. حظا طيبا وفقك الله.

تحرير: ومع ذلك ، هناك حلول موجودة يمكننا جميعًا العثور عليها على الويب. لا تتردد في تجربتها. ولكن كما تفعل ، قم بتقييمها بعيون وأذن حرجة. ما هي أنواع إشارات الصوت التي ستؤدي إلى فشل النسخ؟

تحرير 2: آه ، أنت تفعل هذا فقط للبيانو. حسنًا ، هذا ممكن. تقدم النسخ الموسيقي إلى النقطة التي يمكن أن تنسخ فيها البيانو أحادي الصدر بشكل جيد. سيظل كونشيرتو راشمانينوف مشكلات.

تعتمد توصياتنا على هدفك النهائي. أنت ذكرت "بحاجة إلى لأداء ... في جافا. "لذلك يبدو أنك تريد فقط أن يعمل شيئًا بغض النظر عن كيفية وصولك إلى هناك. في هذه الحالة ، أوافق 100 ٪ مع الآخرين: استخدم شيئًا موجودًا.

هذا في الواقع سؤال مثير للاهتمام ؛ جميع مكتبات MIR التي أعرفها عادة ما تكون C/C ++/Python/MATLAB. ولكن ليس جافا. يحتوي Echonest على واجهة برمجة تطبيقات Java ، لكنني لا أعتقد أنه يقوم بنسخ على مستوى الملاحظة. http://developer.echonest.com. (تحريره يفعل النسخ على مستوى الملاحظة. تتضمن البيانات التي تم إرجاعها الملعب ، timbre ، beat ، tatum ، وأكثر من ذلك. لكني أجد polyphony مشكلة.)

أوه ، مارسياس مقرها جافا. رائع. اعتقدت أنه كان مجرد C ++. http://marsyas.info/ أوصي هذا. تم تطويره من قبل جورج تزانيتاكيس ، أستاذ في مير. يقوم بتحليل مستوى الإشارة ويجب أن يكون خيارًا جيدًا.

الآن ، إذا كان الأمر يتعلق بتجربة تعليمية ممتعة ، أعتقد أنه يمكنك استخدام أدوات معالجة الصوت في Java لتجربة إشارة WAV ومعرفة ما يظهر.

تحرير: تصف هذه الصفحة برنامج miR أفضل مما أستطيع: الأدوات التي نستخدمها

بالنسبة إلى Matlab ، قد تكون مهتمًا بـ مير أدوات

فيما يلي صفحة جميلة من مجموعات البيانات الشائعة: MIR مجموعات البيانات

نصائح أخرى

هذا تعهد كبير جدًا لكونك جديدًا في هذا المجال ، إلا إذا كنت تعني أنك على دراية بتحليل الإشارة واكتشاف الميزات بشكل عام وتريد أن تنظر بشكل أكثر تحديداً في النسخ التلقائي.

لا يوجد API لتحويل WAV إلى MIDI. تغوي الرجال هو إطار عمل لاستخراج الميزات ، ولكن للقيام بالنسخ التلقائي ، ستحتاج إلى استخدام جميع وظائف الإضافات الموجودة ، بالإضافة إلى تنفيذ الوظائف الموجودة في أي منها حتى الآن.

تصفح من خلال أوصاف المكونات الإضافية صفحة تنزيل VAMP, ، أي أوصاف لا تفهمها هي موضوعات يجب أن تبدأ في البحث إذا كنت تريد القيام بذلك.

إذا لم تكن بحاجة إلى أتمتة هذه المهمة (أي ، لموقع ويب حيث يمكن للأشخاص تحميل MP3 واستعادة ملفات MIDI) ، فيجب عليك التفكير في استخدام أداة مثل ميلوديني وهو بالفعل جيد جدا في الذهاب هذا. كما أشار ستيف ، هذه مهمة صعبة للغاية لإنجازها ، وحتى أفضل الخوارزميات والحلول الموجودة في الوقت الحالي لا يمكن الاعتماد عليها بنسبة 100 ٪.

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

دولفين ، آسف لكونك بروسك ، لكنك قللت تمامًا من المشكلة. ما تريد تحقيقه - نسخة صوتية كاملة للبيانو التي تنطوي على جميع المعلمات التي تم استخدامها أثناء اللعب سيحتاج إلى قدر هائل من الأبحاث مع الأشخاص الذين عملوا في هذا المجال لسنوات عديدة. حتى مجموعة من الدكتوراه في معالجة الإشارات يجب أن تستثمر الكثير من العمل حتى تقترب مما تعنيه. يحتاج النسخ الموسيقي إلى عقود من العمل حتى يعمل في منتصف الطريق. أقترح عليك اختيار مشكلة مختلفة يمكنك إدارتها بشكل أفضل من هذا.

هذا مجال لا يزال قيد التطوير بشكل كبير ، ومع ذلك ، هناك بعض الخوارزميات (التجريبية) المتاحة.

يمكنك تثبيت Sonic Annotator واستخدام بعض الإضافات Vamp.

علي سبيل المثال:

./sonic-annotator file.wav -d vamp:qm-vamp-plugins:qm-transcription:transcription -w midi

./sonic-annotator file.wav -d vamp:silvet:silvet:notes -w midi

./sonic-annotator file.wav -d vamp:ua-vamp-plugins:mf0ua:mf0ua -w midi
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top