تشخیص دانگ های موسیقی سنتی ایرانی

/*! elementor - v3.17.0 - 08-11-2023 */ .elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}
تشخیص دانگ های موسیقی سنتی ایرانی
/*! elementor - v3.17.0 - 08-11-2023 */ .elementor-widget-divider{--divider-border-style:none;--divider-border-width:1px;--divider-color:#0c0d0e;--divider-icon-size:20px;--divider-element-spacing:10px;--divider-pattern-height:24px;--divider-pattern-size:20px;--divider-pattern-url:none;--divider-pattern-repeat:repeat-x}.elementor-widget-divider .elementor-divider{display:flex}.elementor-widget-divider .elementor-divider__text{font-size:15px;line-height:1;max-width:95%}.elementor-widget-divider .elementor-divider__element{margin:0 var(--divider-element-spacing);flex-shrink:0}.elementor-widget-divider .elementor-icon{font-size:var(--divider-icon-size)}.elementor-widget-divider .elementor-divider-separator{display:flex;margin:0;direction:ltr}.elementor-widget-divider--view-line_icon .elementor-divider-separator,.elementor-widget-divider--view-line_text .elementor-divider-separator{align-items:center}.elementor-widget-divider--view-line_icon .elementor-divider-separator:after,.elementor-widget-divider--view-line_icon .elementor-divider-separator:before,.elementor-widget-divider--view-line_text .elementor-divider-separator:after,.elementor-widget-divider--view-line_text .elementor-divider-separator:before{display:block;content:"";border-bottom:0;flex-grow:1;border-top:var(--divider-border-width) var(--divider-border-style) var(--divider-color)}.elementor-widget-divider--element-align-left .elementor-divider .elementor-divider-separator>.elementor-divider__svg:first-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-left .elementor-divider-separator:before{content:none}.elementor-widget-divider--element-align-left .elementor-divider__element{margin-left:0}.elementor-widget-divider--element-align-right .elementor-divider .elementor-divider-separator>.elementor-divider__svg:last-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-right .elementor-divider-separator:after{content:none}.elementor-widget-divider--element-align-right .elementor-divider__element{margin-right:0}.elementor-widget-divider:not(.elementor-widget-divider--view-line_text):not(.elementor-widget-divider--view-line_icon) .elementor-divider-separator{border-top:var(--divider-border-width) var(--divider-border-style) var(--divider-color)}.elementor-widget-divider--separator-type-pattern{--divider-border-style:none}.elementor-widget-divider--separator-type-pattern.elementor-widget-divider--view-line .elementor-divider-separator,.elementor-widget-divider--separator-type-pattern:not(.elementor-widget-divider--view-line) .elementor-divider-separator:after,.elementor-widget-divider--separator-type-pattern:not(.elementor-widget-divider--view-line) .elementor-divider-separator:before,.elementor-widget-divider--separator-type-pattern:not([class*=elementor-widget-divider--view]) .elementor-divider-separator{width:100%;min-height:var(--divider-pattern-height);-webkit-mask-size:var(--divider-pattern-size) 100%;mask-size:var(--divider-pattern-size) 100%;-webkit-mask-repeat:var(--divider-pattern-repeat);mask-repeat:var(--divider-pattern-repeat);background-color:var(--divider-color);-webkit-mask-image:var(--divider-pattern-url);mask-image:var(--divider-pattern-url)}.elementor-widget-divider--no-spacing{--divider-pattern-size:auto}.elementor-widget-divider--bg-round{--divider-pattern-repeat:round}.rtl .elementor-widget-divider .elementor-divider__text{direction:rtl}.e-con-inner>.elementor-widget-divider,.e-con>.elementor-widget-divider{width:var(--container-widget-width,100%);--flex-grow:var(--container-widget-flex-grow)}توضیح دانگ و نمود آن در پروژه:
در این پروژه تلاش میشود که با استفاده از مدل های عمیق دانگ های موسیقی ایرانی تشخیص داده شود.
ابتدا به این بپردازیم که دانگ چیست و چرا از دانگ برای تشخیص دستگاه های موسیقی ایرانی استفاده میکنیم.
دانگ در موسیقی معادل نصف اکتاو است. هر اکتاو معادل یک پیمایش کامل نت های یک گام است. در نتیجه هر گام موسیقی ایران شامل دو دانگ میباشد.
استاد داریوش طلایی، موسیقی دان، آهنگساز و نوازنده تار و سه تار موسیقی ایرانی معتقد است تمام موسیقی سنتی ایرانی در چهار دانگ نواخته میشود که عبارتند از: شور، نوا، ماهور، چهارگاه. در نتیجه هرهفت دستگاه ایرانی و تمام آواز ها و گوشه ها از این دانگ ها تشکیل میشوند. به عنوان مثال دستگاه شور از دانگ شور، دستگاه نوا از دانگ نوا، دستگاه های ماهور و راستپنجگاه از دانگ ماهور، دستگاه چهارگاه از دانگ چهارگاه، دستگاه های شور وسهگاه از دانگ شور و دستگاه همایون از دانگ های شور و چهارگاه تشکیل شده اند. در نتیجه به عنوان مثال گام دستگاه همایون از دو دانگ چهارگاه و شور تشکیل میشود و گام دستگاه ماهور شامل دو دانگ از نوع دانگ ماهور میباشد.
در این پروژه تلاش میکنیم با استفاده از یک مدل عمیق این دانگ ها را تشخیص بدهیم. که میتوان در ادامه از این درکی که در مدل به نسبت دانگ به دست آمده برای تشخیص دستگاه ها، آواز ها و گوشه های موسیقی سنتی نیز تلاش کرد اما در این پروژه فقط به بخش اول میپردازیم.
داده و پیش پردازش:
در این پروژه از دادگان نوا استفاده شده است که با همت خانمان آشنا گرگان محمدی و اسماء فرجی دیزجی و با تلاش و راهنمایی های دکتر باقر باباعلی جمع شده است. این دادگان به منظور دو مسئله کلاس بندی جمع شده است: یکی تشخیص ساز و دوم تشخیص دستگاه موسیقی. در این پروژه از منظر تشخیص دستگاه های موسیقی به دادگان نوا مینگریم.
paper این دادگان و کسب اطلاعات بیشتر درباره آن با فشردن دکمه زیر قابل مشاهده میباشد:
برای استفاده از دادگان نوا در پروژه آهنگ های دادگان را که از هفت دستگاه بودند در چهار دانگ معرفی شده تقسیم کرده و از mp3 به فرمت wav تغییر داده و از هر یک از آنها با توجه به طولشان یک، دو یا سه بخش 20 ثانیه ای برای یادگیری مدل جدا شده است.
در پروژه های مشابه با پردازش سیگنال ها به وسیله فیلتر ها تلاش شده است که نت های آهنگ استخراج شده سپس این توالی نت ها برای تشخیص دستگاه به مدل داده شود اما با توجه به اینکه انسان برای تشخیص اینکه یک آهنگ در چه دستگاهی نواخته میشود حتما نیاز ندارد نت های آن را بداند و صرفا با گوش دادن و درک حال و هوای آهنگ میتواند تشخیص بدهد که آهنگ در چه دستگاهی میباشد در این پروژه به جای استخراج نت ها همان آهنگ به صورت اسپکتروگرام به مدل داده میشود با این دید که مدل نیازی ندارد دقیقا نت ها را بداند بلکه با داشتن درکی درست از دستگاه میتواند به درستی کار بکند.
در ساختن اسپکتروگرام آهنگ ها یک نکته را باید در نظر بگیریم. اندازه فرکانسی فاصله دو نت در اکتاو اول حدود 15 برابر فاصله همان دو نت در اکتاو پنجم میباشد پس رسم اسپکتوگرام به صورت خطی منطقی نبوده و به صورت لگاریتمی رسم شده است.
مدل:
دراین پروژه با توجه به اینکه توالی که در آهنگ وجود دارد به آن معنی میدهد پس برای درک این توالی در مدل از RNN استفاده میشود. در واقع مدل از سه بخش تشکیل میشود: بخش اول شامل چهار لایه کانولوشن و پولینگ برای استخراج ویژگی های داده. بخش دوم شامل دو لایه با ساز و کار RNN. بخش سوم چند لایه کاملا متصل برای کلاس بندی داده ها.
تصویر زیر بخشی از مدل را نشان میدهد که شمای کلی از مدل از آن برداشت میشود:
در تصویر لایه آخر کانولوشن و پولینگ قابل مشاهده میباشد که خروجی آن [256, 8, 156] میباشد. برای دیده شدن ویژگی های داده به صورت ستون به ستون(با این نوع پیمایش داده انگار RNN از اول تا آخر آهنگ را بر اساس زمان مشاهده میکند) باید داده reshape شود و بعد آن به مدل RNN داده شود.
داده به چهار بخش مساوی تقسیم میشود به گونه ای که میتوان گفت هر بخش نشان دهنده 5 ثانیه از آهنگ میباشد. دلیل این تقسیم این است که تمام توالی آهنگ دارای اهمیت میباشد و با توجه به اینکه در RNN با دیدن بخش های بعدی توالی بخش های قبلی به صورت خیلی واضح در خاطر مدل نمیماند پس طول بخشی که به هر RNN داده میشود کوتاه شده تا تاثیر این کمتر شدن وضوح کم شود.
سپس هر کدام از این بخش ها وارد یک RNN از نوع LSTMمیشوند تا درکی از آنها استخراج شود. دلیل استفاده از LSTM ها این است که میتوانند ضریب اهمیت بدهند.
سپس این درک ها از چهار بخش داده به صورت یک توالی چهار تایی به یک لایه GRU داه میشوند تا مدل درکی کلی از کل دیتا داشته باشد.
در مرحله آخر با چند لایه کاملا متصل کلاس بندی صورت خواهد گرفت.