المعلوماتية > عام

التعرف على الموسيقا والبصمة الصوتية

" إذا كنت لا أقوى على الطيران، دعني أغـنّـي "

ستيفن سوندهايم

الموسيقا في كلِّ مكان، التّـجلي الأسمى للثّـقافة البشريّـة في الآلاف السنين الماضية كما يعتبرها كثيرون، وآذاننا وقلوبنا عنها في بحثٍ دؤوب من طبول القبائل الأولى إلى أجهزة الآي بود الحديثة.

الفارق الوحيد في العصر الرقميّ هو السهولة، فحين تسمع أغنية تعجبك في المقهى أو في الراديو أو من سيارة الأخ المواطن الذي يقوم بتجريب مجموعة الكينوود الجديدة في الشارع أخرج هاتفك المحمول، دعه يستمع للموسيقا المجهولة التي تسلّـلت إليك، ويخبرك باسم القطعة، واسم المؤلف والمؤدّي، والألبومات التي وردَت فيها المقطوعة، ورابط المقطع على اليوتوب، والنّـمط الموسيقي الذي تتبعه خلال أجزاء من الثانية.

في حين تبدو مهمةُ تميـيـز أغنية معـيّـنة من خلال مقارنتها بالأغاني الموجودة في الذاكرةِ البشريّـة مهمة سهلة نوعاً ما بالنسبة للعقل، تكون المهمة أكثر تعقيداً بالنسبة للأنظمة الرقميـّة. فنحن نتحدث هنا عن ملايين القطع الموسيقيـّة. علاوةً على ذلك، يجب بناء نظام قادر على فهم الأغاني بطريقة حسيـّة مختلفة عن الطريقة التي يستخدمها الكمبيوتر لفهم الملفّـات (أصفار وواحدات). حيث أنّ كل أغنية تتواجد بنماذجِ ضغط مختلفة وتخضعُ لظروفِ ترميز مختلفة قبل بثـّها، ممـّا يجعل نسختين من نفس الأغنية مختلفتين تماماً رقمياً.

برنامج Shazam هو أحد أهم البرامج التي تقومُ بالبحثِ عن الموسيقا المسموعة. والسـّبب وراءَ اختيارنا هذا البرنامج من بين العديد من البرامج الكثيرة التي تقوم بهذه المهمة، هو الانتشار الواسع لهذا البرنامج بالإضافة لوجود ورقة بحثـيـّة تعود للعام 2002 من أحد مؤسّـسي البرنامج تشرح التّـقنية التي يتمّ استخدامها في هذه الخدمة وهو أمر لا نصادفه كثيراً في الشّـركات الكبيرة.

سأوورد بدايةً شرحاً مُـختصرًا لعملِ البرنامج ونخوض فيما بعد في التفاصيل. تجدر الإشارة إلى أنّ القسم المفصّل من المقال قد يهمّ المختصين أكثر من القارئ العادي.

أُطلقت خدمة Shazam لأول مرة في العام 2002 حيث كان بإمكان مستخدمي الهاتف المحمول في المملكة المتحدة طلب الرقم 2580 وعرض الموسيقا المراد تمييزها ثمّ الإقفال لتقوم الخدمة بإرسال رسالة نصية قصيرة تتضمن اسم المغني وعنوان الألبوم.

ثـمّ ظهر في عام 2008 أوّل تطبيقات الخدمة على هواتف الـ iPhone ثمّ تمّ تطويره لاحقاً ليعمل على أنظمة الأندرويد والويندوز موبايل. و تمّ لاحقاً إضافة خدمة التّـعرف على البثّ التلفزيونيّ.

يصل عددُ مستخدمي البرنامج إلى 450 مليون مستخدم، كما تمّ استخدامه أكثر من 12 بليون مرة لتمييز الموسيقا.

يقوم المبدأ البسيط لعملِ الخدمة على:

1. عمل مسح لجميع الملفّات الموسيقيـّة، ثمّ تحديد بصمة صوتية (Acoustic fingerprint) لكل ملف. يجب أن تكون هذه البصمة الصوتيـّة ممانعة للضّـجيج وقابلة لإعادة الإنتاج في حال تمّ استخدام نسخة مختلفة من الأغنية رقمياً.

2. إعادة الخطوة السّـابقة عند طلب الخدمة من قبل أحد المستخدمين، لكن على العينة التي يريد المستخدم التعرف عليها.

3. مقارنة البصمة الخاصّـة بالعيـّنة، بالبصمات الموجودة في قاعدة بيانات الشركة.

4. تحديد أكثر الملفّـات مشابهة للعينة التي يُـراد التّـعرف عليها.

التفاصيل:

يمكن اختزالُ الخطواتِ السّـابقة في خطواتٍ أساسيـّةٍ ثلاث:

1- استخراج النّـقاط المُـميـّزة:

البصمة الصوتيـّة هي تعبير عن الهويّـة الحسيـّة للملف الصوتي الذي تـتمّ معالجته.

من الضروري أن تـتـوفر عدّة صفات في هذه البصمة، كأنْ تكون مميزة لكل ملف من الملفات ولا تـتـأثـّر بالضجيج وقابلة لإعادة الإنتاج من كافّـة النّـسخ الأخرى للملف.

هناك عدد كبير من الميزات التي يمكن استخدامها لتوليد البصمة. اختار مصممو الخدمة الاعتماد على «السبيكتوغرام» وهو مخطّـط ثنائي البُـعـد يمثّـل محوره الأفقي الزمن الذي يمتدّ عليه الملف الصوتي ومحوره الشاقولي التّرددات التي يتضمنها الملف عند كل لحظة، كما هو موضح في الشكل [1].

تبين النّـقاط ذات اللون القاتم التّـردّدات الأكثر احتواءً في الملف الموسيقي عند كل لحظة. يتمّ اختياره هذه النّـقاط القاتمة بالذات لتشكيل البصمة الصوتيـّة. في البداية يتمّ اختيار النقاط التي لها مطال (لون أكثر قتامة في مثالنا) أكبر من كل النّـقاط المحيطة بها ضمن مساحة معينة. هذه النقاط التي تحقق الشرط السابق يتم اختيار النـّقاط الأقوى منها وفق مطالها وذلك لضمان فرص أكبر لعدم تشوّهها بالضجيج لتنتج لدينا مجموعة من النّقاط القويـّة، كما هو موضح في الشكل [2].

الشكل 1

الشكل 2

من الممكن أن نعتبر هذه النّـقاط بمثابة بصمة صوتيـّة، حيث نقوم باستخراج النّـقاط القويـّة من «السبيكتوغرام» في العيـّنة التي نبحث عنها ونقوم بعملية مطابقة وإزاحة بينها وبين كل ملف في قاعدة البيانات، وحين نحصل على تطابق كبير نقرّر بأنّ العيـّنة المعنية تنتمي إلى الملف المطابق. لكن هذه الطريقة غير مُـجدية أبدًا، حيث أنها تـتـطـلّب زمناً فلكياً للمعالجة حين يكون لدينا عدد كبير من الملفات ولهذا لجأ المطوّرون إلى الخطوة الثانية.

2- تطبيق تابع التهشير:

يتم في هذه المرحلة تطبيق تابع تهشير يعتمد على ترميز العلاقة بين النّـقاط التي تمّ استخراجها في الخطوة الأولى، وبدلاً من ترميز كل نقطة من هذه النقاط على حِدى يتم ترميزها بشكل مرتبط حيث ترتبط كل نقطة بمجموعة من النقط المجاورة لها، كما هو موضح في الشكل [3].

يتمّ تطبيق تابع التهشير مرّة لكل زوج نقاط (النقطة المدروسة مع كل من النقاط المجاورة).

فإذا رمزنا لعدد النقاط المجاورة التي يتمّ أخذها بعين الاعتبار بالرمز F يتم تطبيق تابع التهشير F مرة لكل نقطة من النّقاط الناتجة عن الخطوة الأولى.

قيمة الهاش التي يعطيها تابع التهشير هي عبارة عن تردد النّـقطة المدروسة وتردد النقطة المجاورة والفرق الزمني بين النقطتين وخرج هذا التابع عبارة عدد صحيح مكون من 32 بت، كما يبين الشكل [4].

ترتبطُ هذه القيمة بـ32 بت أخرى تـتـضمّـن المسافة الزمنية بين بداية الملف في قاعدة البيانات والنقطة المدروسة. هذا الانتقال من الترميز المنفصل للنقاط إلى ترميز العلاقة بين النقاط يوفر تسريعاً كبيراً لعملية البحث، فبينما يعطينا الترميز المنفصل 10 بت مثلاً لكل نقطة يعطينا الترميز المتصل 30 بت لكل نقطة، أي دقة أعلى بمقدار 2 ^ 20 = مليون مرة عن الترميز المنفصل.

بالطبع يجب الأخذ بعين الاعتبار أن الترميز المُـتّـصل سيولّد مزيداً من قيم الهاش التي تحتاج إلى معالجة في كل من ملفات قاعدة البيانات والعينة المراد التعرف عليها بالمقدار F المذكور آنفاً. فإذا تم اختيار قيمة F لتكون 10 مثلاً يكون مقدار التسريع الذي حصلنا عليه 1000000/100 ويساوي عشرة آلاف مرة أسرع من الترميز المنفصل. بهذا يكون المطورون قد عمدوا إلى توسيع قاعدة البيانات 10 مرات مقابل السرعة الكبيرة في المعالجة.

الشكل 3

الشكل 4

3- التّـعرف:

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

لنفترض أننا حصلنا في العينة على 40 قيم هاش، يتمّ البحث عن كل قيمة من هذه القيم الأربعين في قاعدة البيانات وتسجيل كل ملف أصلي يحتوي على هاش مطابق.

لنفترض ثانية أنّـنا وجدنا قيـَماً مطابقة لهذه القيم في 6 ملفات من الملفات الموجودة في قاعدة البيانات. تتم حساب الانزياحات الزمنية بين كل قيم الهاش الناتجة عن العينة وبين كل قيم الهاش الموجودة في كل من هذه الملفات الستة التي تم العثور عليها في قاعدة البيانات.

على الرغم من أنّ النقطة التي تبدأ عندها العيـّنة في الأغنية الأصلية غير معروفة، إلا أنّـه من الممكن توقع أن التتابع الزمني لقيم الهاش في العينة سيكون هو ذاته التتابع الزمني لقيم الهاش في الملف الأصلي في قاعدة البيانات، وهكذا. لا بد أن نحصل على قيمة عظمى للتطابق في أحد الملفات الستة في حالتنا في فترة معينة ويكون هذا الملف هو الملف المنشود.

بإمكانكم الاطلاع على الورقة البحثية على الرابط التالي للخوض أكثر في التفاصيل:

هنا...

كما يمكنكم التعرف على مزيد من خدمات تمييز الموسيقى وطرقها في بناء البصمة الصوتية على الرابط:

هنا...

المصادر:

. 2003.ISMIR "An Industrial Strength Audio Search

Algorithm."Wang، Avery. www.shazam.com/company

هنا

مصدر الصورة : هنا