PDA

توجه ! این یک نسخه آرشیو شده می باشد و در این حالت شما عکسی را مشاهده نمی کنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : تشخیص الگوی صدا با استفاده از شبکه عصبی



Y@SiN
09-13-2009, 07:58 PM
چکیده:
در حال حاظر تحقیقات زیادی در گرایش های پردازش تصویر و پردازش صوت در سطح دنیا در حال انجام است که عموما از روشهای هوش مصنوعی و الگوریتم های مختلف پردازش، نظیر DSP ،الگوریتم ژنتیک،شبکه عصبی و... استفاده میکنند.هدف این تحقیق ایجاد روشی هوشمند جهت افزودن قابلیت تشخیص کلمات برای کامپیوتر، مبتنی بر تکنیک شبکه عصبی میباشد.این روش از راه آموزش دادن شبکه ای مناسب، قادر است سیگنالهای صوتی مختلف را تفکیک و دسته بندی نماید و در نهایت مفاهیمی را که کاربر برای هر گروه از اصوات مشخص مینماید به طور محدود بیاموزد.در این تحقیق، شبکه با سیگنالهای صوتی اعداد صفر تا نه، به زبان فارسی آموزش داده شده وهدف شبکه بعد از آموزش، تفکیک سیگنالهای ورودی و یافتن عدد متناظر با سیگنال ورودی میباشد.

1) مقدمه:
در زمینه تشخیص الگوی صوت توسط شبکه عصبی تا کنون در ایران کار زیادی صورت نگرفته و مقاله های محدودی که وجود دارد بیشتر به این موضوع از دید عمومی و معرفی تکنیک پرداخته شده است. نتایج این تحقیق کاملا عملی و حاصل کار،یک نرم افزار به زبان برنامه نویسی مطلب میباشد ونتایج بصورت نمودار ها و جداول در پایان ارائه شده.در مقاله های خارجی از روشهای مختلف شبکه عصبی استفاده شده و عموما نمونه های صوت را بدون تغییر به عنوان دیتای ورودی به شبکه در نظر گرفته اند و این موضوع باعث حجیم شدن شبکه ،طولانی شدن مراحل آموزش شبکه، وابستگی شدید نتایج به دامنه سیگنال وحساسیت زیاد نتایج به نویز میباشد.
روش ارائه شده در این مقاله بواسطه وجود یک مرحله اصلاح وتغییر دیتا، مقداری از مشکلات بالا کاسته ولی نقاط ضعفی هم دارد. از جمله وابستگی زیاد شبکه به تن صدا ودیتایی که شبکه توسط آن آموزش می بیند. بنا بر این برای عمومیت پیدا کردن عملکرد شبکه نیاز به دیتای فراوان ازافراد مختلف،لهجه ها و گویش های متفاوت دارد.

2) روش استفاده شده برای تشخیص:
به طور کلی میتوان مراحل انجام این پروژه از ابتدا تا پایان را به قسمتهای زیر تقسیم بندی نمود
-1تهیه دیتا
-2اصلاح دیتای خام جهت ارائه به شبکه
-3ایجاد یک شبکه مناسب
-4آموزش شبکه
تمامی مراحل فوق به کمک جعبه ابزار ها و دستورات مختلف نرم افزار مطلب قابل اجرا است .

در مرحله اول که تهیه دیتا میباشد از جعبه ابزارData Acquisition Toolbox استفاده شده مراحل مختلف استفاده از این جعبه ابزار بطور کامل در help مطلب به همراه مثال آموزش داده شده .که بطور خلاصه شامل مراحل زیر است.
• تعریف یک ورودی آنالوگ
• مشخص نمودن مرجع دریافت ورودی (کارت صوتی تحت اختیار سیستم عامل و یا ...)
• تعریف کانال یا کانالهای ورودی(سخت افزار مرجع ممکن است چندین ورودی داشته باشد)
• تعیین فرکانس نمونه برداری.
• تعیین ورودی پیش فرض جهت نمونه برداری از بین کانالهای تعریف شده.
• مشخص نمودن نحوه شروع نمونه برداری (یک تحریک سخت افزاری یا یک دستور شروع نرم افزاری) که ما بنا بر ملاحظات کار خود حالت سخت افزاری را انتخاب میکنیم.
• دستور شروع نمونه برداری شامل یک حلقه هزارتایی جهت برداشت هزار سیگنال از اعداد0الی9

(شکل1) سیگنال مربوط به عدد یک میباشد و(شکل2) به ترتیب اعداد از0الی 9را نشان میدهد.الگوی سیگنال مربوط به سایر اعداد متفاوت میباشد.اما الگوی اعداد یکسان نیز کاملا منطبق بر هم نیست وتفاوتهایی باهم دارند.



http://pnu-club.com/imported/mising.jpg
شکل1
http://pnu-club.com/imported/mising.jpg
شکل2

همانطور که قبلا نیز گفته شد،هر کدام از این سیگنالها شامل 4800 نمونه میباشد واین نمیتواند جهت ارئه به یک شبکه مناسب باشد.زیرا اولا باعث حجیم شدن بی مورد شبکه میشود چرا که در اینصورت شبکه میبایست 4800 ورودی دااشته باشد . ثانیا ّ این تعداد نمونه شامل اطلاعات جزئی بسیاری هست که از نظر ما چندان مورد نیاز نیست. بلکه یک سری اطلاعات کلی تر وبهینه که بیانگر بیشتر اطلاعات سیگنال اصلی باشد برای ما کفایت میکند.بدین منظور سیگنال خام ورودی را به 12 قسمت که هر قسمت شامل 400نمونه میباشد تقسیم میکنیم و از هر قسمت یک مشخصه که بیانگر رفتارسیگنال در آن بازه میباشد استخراج میکنیم.بدین ترتیب از هر سیگنال بجای 4800 نمونه 12 نمونه خواهیم داشت.که نتایج پروژه کافی بودن آن را تایید میکند.
اما روش استخراج این 12 مشخصه از هر سیگنال چیست ؟
در این مورد تاکید پروژه بر مشخصات فرکانسی سیگنال میباشد.به نحوی که در نهایت بدانیم در هر یک از 12 قسمت سیگنال، چه فرکانسی بیشترین سهم را در انرژی آن قسمت داشته است.بدین منظور باید ازهر قسمت سیگنال بطور جداگانه FFT گرفته وبا استفاده از تکنیک های مختلف ریاضی فرکانس غالب را از میان ضرایب FFTجستجو کنیم که در ادامه بیشتر به آن میپردازیم.(شکل3 ) سیگنال عدد یک را که به 12 قسمت تبدیل شده نمایش میدهد.



http://pnu-club.com/imported/mising.jpg

شکل3
(شکل4) FFT مربوط به هر قسمت را نظیر به نظیر نشان میدهد.وبه سادگی میتوان توزیع انرژی را در حوزه فرکانس مشاهده نمود.به علت تقارن نیمی از این اطلاعات برای تعیین فرکانس غالب کافیست.


http://pnu-club.com/imported/mising.jpg
شکل4

برای به دست آوردن فرکانس غالب روشهای مختلف آماری را میتوان بکار برد.انواع میانگین گیری های حسابی ،هندسی،وزنی، توافقی ، از این نوع میباشند.ولی در این پروژه از روش خاص دیگری از میانگین گیری استفاده شده که در ادامه توضیح داده میشود.
برای بدست آوردن فرکانس غالب،ابتدا اندازه ضرایب FFT را بدست میاوریم سپس این ضرایب را به ترتیب از ضریب dc تا بالاترین فرکانس، که 1 است روی یک دایره از 0تا2/π قرار میدهیم بطوری که به هر ضریب یک زاویه تعلق میگیرد(شکل5).بنابراین هر ضریب به صورت یک بردار در می آید.از حاصل جمع این بردارها یک بردار حاصل بدست میاید که زاویه آن بیانگر فرکانس غالب میباشد(شکل6).
http://pnu-club.com/imported/mising.jpg
شکل5 شکل6

بدیهی است برای هر یک از 12 قسمت سیگنال، یک بردار خواهیم داشت که زاویه هریک از این بردارها نشان دهنده فرکانس غالب آن قسمت خواهد بود .بدین ترتیب از هر سیگنال با 4800 نمونه تنها 12 عدد بدست می آید که اطلاعات کافی از سیگنال با خود دارد و ضمنا برای شبکه نیز مناسب است. چرا که در این صورت شبکه تنها12 ورودی خواهد داشت(.شکل7 ) این 12 بردار را از یک سیگنال(سیگنال صحبت عدد یک)در کنار هم نشان میدهد.



http://pnu-club.com/imported/mising.jpg
شکل7

شکل (8)در نتیجه اعمال الگوریتم بالا بر روی سیگنالهای صوتی اعداد 1 ،2،..... 9 ،0 میباشد.همینطور که مشاهده میشود از هر یک از سیگنالها خام که 4800 نمونه هستند،سیگنال جدید اصلاح شده ،شامل 12 نمونه تولید شده است.



http://pnu-club.com/imported/mising.jpg

شکل8
در این پروژه از یک شبکه عصبی رقابتی دو لایه Backpropagation با آموزش LM استفاده شده ورودی شبکه همان بردارهای 12تائی فصل قبل میباشد وخروجی شبکه یا همان target ها یک بر دار 10تایی از اعدادی میباشدکه درایه متناظر با عدد گفته شده مقدار1 وسایر درایه ها مقدار صفر را دارند .)شکل9 (نمایی از شبکه و) شکل(10 الگوی خروجی را نشان میدهد



http://pnu-club.com/imported/mising.jpg
الگوی در نظر گرفته شده برای خروجی حالت رقابتی ایجاد میکند .یعنی بعد از آموزش دادن به شبکه هرگاه یک ورودی به شبکه بدهیم ،هریک از10 خروجی یک مقدار را نشان میدهد.که از رقابت نرون های مختلف با هم حاصل میشود .نرون خروجی برنده نرونی است که بیشترین مقدار را نشان دهد، حتی اگر منطبق بر مقدار آموزش داده،یعنی 1 نباشد .با استفاده از یک ماکزیمم گیری از خروجی میتوان دست اندیس خروجی ماکزیمم را به عنوان برنده بالا برد.

آموزش شبکه همانطور که گفته شد روش Levenberg-Marquard یا همان LM میباشد.که یکی از سریعترین روشهای آموزش شبکه میباشد.(شکل11) همگرائی آموزش را نشان میدهد که با150 epoch به دقت 0.0048 رسیده است و شیب منحنی در مراحل پایانی به سمت صفر نزدیک شده که نشان میدهد دقت بیشتر از0048.0 چندان میسر نیست.
http://pnu-club.com/imported/mising.jpg
شکل11


3. ساختار شبیه سازی و آزمون:
بعد از آموزش شبکه، برای تست شبکه ، دو نوع آزمایش انجام میشود . در جداول 1 و 2 پاسخ شبکه به دو نوع آزمایش دیده میشود.آزمایش اول به این صورت است که اعداد 1 ،2،.....9 ،0 به ترتیب در چهار نوبت گفته شده. در) جدول (1مربوط به آزمایش اول، خانه های با حاشیه و فونت ضخیم تر نشان میدهد که خروجی به درستی بیشترین مقدار را کسب کرده و پاسخ صحیح است.خانه های خاکستری نشان میدهد که پاسخ نادرست است و آن خانه مقدار مناسب را کسب نکرده است.
آزمایش دوم مربوط به مواردی است که سیگنال ورودی کلماتی بجز اعداد 0 الی 9 باشد. در این صورت نیز یکی از خروجی ها به تصادف ماکزیمم میشود. سوال این است که آیا میتوان این نوع کلمات غیر مجاز را تشخیص داد. جهت بررسی رفتار شبکه نسبت به اینگونه موارد سیگنال صحبتهای مربوط به کلمات اراک، سلام، شبکه،نرون،سمینار،آزمون،مط لب،جمعه،دانشگاه وموسیقی به شبکه داده شده و خروجی متناظر به این کلمات نیزدر )جدول2 (ارائه شده که در بخش نتیجه گیری در مورد نتایج آن بحث میشود.

4. نتیجه گیری:

در مورد سیگنالهای اعداد 0 الی 9 همینطور که دیده میشود فراوانی پاسخ صحیح چشمگیر است. نتایج نشان میدهد که در بیش از 70% موارد،تشخیص شبکه صحیح است و در مواردی نیز خروجی مربوط به دو یا چند عدد همزمان 1می شوند که تشخیص اشتباه میباشد.نتایج فوق با آموزش شبکه توسط صدسیگنال از هر عدد حاصل شده . درصورتی که آموزش شبکه بادیتای بیشتری صورت گیرد قطعا خطا نیز کاهش خواهد یافت.

در مورد یک کلمه مجاز در بهترین شرایط یکی از خروجیها 1 و نه تای دیگر0 است پس انتظار داریم واریانس و میانگین، هردو0.1 باشد. برای تشخیص ورودی های غیر مجاز میتوان از نحوه توزیع خروجی شبکه استفاده کرد.در این صورت خروجی هادر بیشتر موارد توزیعی نسبتاً یکنواخت دارند و یا اینکه بطور همزمان بیش از یک ماکزیمم خواهیم داشت.بنا بر این واریانس خروجی کوچک خواهد شد و میانگین نیز از 0.1 فاصله میگیرد بدین ترتیب ما متوجه این خطا خواهیم شد. همینطور که مشاهده میشود. در مورد کلمات غیر مجاز جدول2 هردوشرط میانگین و واریانس با هم بر قرار نیست. بنا بر این میتوان از این دو پارامتر به عنوان معیاری جهت قبول یا رد پاسخ استفاده کرد .
نکته آخر اینکه موفقیت شبکه در تشخیص صحیح به شدت وابسته به تعداد و تنوع دیتا میباشد.و حتی با اضافه کردن دو شرط بالا در صورت کم بودن دیتای آموزش، موفقیت شبکه چندان قابل توجه نخواهد بود.