جستجوی کلمات کلیدی در گفتار

تغییرات پروژه از تاریخ 1393/08/17 تا تاریخ 1393/09/15
یکی از کاربردهای مهم پردازش گفتار، یافتن کلمات کلیدی در گفتار است. به عنوان مثال یک پایگاه داده از صداهای ضبط شده را در نظر بگیرید. فرض کنید بخواهیم در این گفتارها به دنبال مجموعه ای از واژه های کلیدی بگردیم. در این صورت باید از الگوریتم های واژه‌یابی گفتار استفاده کنید. یکی از مقال هایی که این الگوریتم می تواند در آن جا مورد استفاده قرار گیرد، گفتارهای ضبط شده در یک کلاس درس است. مثلا فرض کنید که *گفتارهای درس مدارهای الکتریکی* ضبط شده باشد و ما می خواهیم بدانیم در کدامیک از قسمت های این مجموعه در مورد کلمه کلیدی *دیود* صحبت شده است.

# مقدمه
برای دهه ها تشخیص خودکار کلمات کلیدی[^ASR: Automatic Speech Recognition] به عنوان یکی از موضوعات تحقیقات علمی مطرح شده و به دلیل افزایش سرعت محاسبه و دقت سیستمهای دیجیتال، پیاده سازی این سیستم ها رشد چشمگیری داشته است[3]. حوزه ی پردازش گفتار گستره ی وسیعی از مسائلی که مرتبط با پردازش و شناسایی گفتار است را در بر می گیرد که در هر مورد صورت مسئله با توجه به فرضیاتی که برای سادگی حل اعمال می شوند متفاوت است. برای نمونه در برخی مسائل فرض بر این است که ما در یک پایگاه داده ی از پیش مشخص به دنبال یافتن برخی از کلمات کلیدی هستیم در حالی که در دسته ای دیگر از مسائل می بایست تشخیص کلمات کلیدی[^KWS: Keyword Spotting] بر روی یک جریان داده انجام گردد[^CSR: Continous Speech Recognition]. با همه این تفاوت ها هدف مشترک هر دو مسئله را می توان به شرح زیر تعریف نمود:
ساخت یک سیستم تشخیص کلمه، که قادر است تعداد محدودی از کلمات یا عبارات کلیدی از پیش تعیین شده را در گفتار گوینده تشخیص دهد در حالیکه از بقیه ی گفتار گوینده چشم پوشی می کند.
تعریف فوق هدف مشترک این دو دسته مسئله را بیان می کند در حالی که این دو دسته مسئله کاربردهای متفاوتی دارند. برای نمونه اگر هدف تشخیص کلمات کلیدی در یک جریان داده باشد و عمل تشخیص کلمات کلیدی به طور پیوسته انجام گردد کاربردهای زیادی(از جمله استفاده این سیستم ها در خانه ها هوشمند) را می توان برای آن متصور بود. اگر پایگاه داده از قبل مشخص باشد نیز کاربرد هایی چون جستجوی کلمات کلیدی در پایگاههای داده ی بزرگ را می توان برای آن برشمرد.
برای حل این دو دسته مسئله، دو نوع فیلتر مختلف طراحی و استفاده می گردد:
1. فیلتر واجی: که وظیفه ی آن تشخیص واج های مختلفی است که گوینده ادا می کند. در این نوع فیلتر هر واج مختلف فیلتر مخصوص به خود را دارد که در صورت تشخیص واج مورد نظر خروجی مطلوب را تولید می کند.
2. فیلتر بخشی: وظیفه ی این نوع فیلتر تشخیص بخش های کلمات کلیدی است و مانند فوق هر بخش دارای فیلترهای متعددی است که هر کدام وقوع بخش های مورد نظر خود را تشخیص می دهد.
در پیاده سازی چون بخش ها از نظر مدت صدا بزرگتر از واج ها هستند؛ فیلترهای واجی عملکرد بهتری دارند[4].

# کارهای مرتبط
راه حل هایی که برای تشخیص کلمات کلیدی به طور پیوسته ارائه شده به شرح زیر است:
1. تطبیق الگو[^Template Matching]. در این روش با استفاده از تکنیک های برنامه نویسی پویا؛ در هر لحظه از زمان یک فاصله نسبت به الگوی صدای هر کلمه ی کلیدی محاسبه می شود و بر اساس این فاصله ی محاسبه شده: وقوع یا عدم وقوع کلمه ی کلیدی تعیین می گردد[10].
2. مدل مخفی مارکوف[^Hidden Markov Model]. در این روش شباهت صحبت گوینده با کلمات کلیدی یا زیربخش های کلمات کلیدی طبق مدل مخفی مارکوف آن کلمه یا زیربخش سنجیده می شود. در گام بعدی؛ امتیاز شباهت بدست آمده توسط رویه ی امتیاز دهی مدل مارکوف  با یک حد آستانه مقایسه می گردد و با توجاه به نتیجه مقایسه روخداد یا عدم رخداد کلمه ی کلیدی تشخیص داده می شود[5,8,9].
3. شبکه عصبی[^Neural Network]. اخیرا نوع خاصی از شبکه های عصبی در حل مسئله ی تشخیص کلمات کلیدی به کار گرفته شده اند.  شبکه های عصبی با تاخیر زمانی[^TDNN: Time Delay Neural Network] نوعی شبکه عصبی هستند که قادر به تشخیص رویدادن کلمات کلیدی هستند[6]. همچنین از شبکه های عصبی چند لایه نیز برای حل این مسئله استفاده گردیده[2].
4. روش های ترکیبی: برای نمونه مدلی مرکب ارائه گردیده که مرکب از مدل مخفی مارکوف و یک شبکه ی عصبی مصنوعی با توابع شعاعی[^Radial Basis Function] است و قادر است با عملکرد خوبی کلمات کلیدی مورد نظر را  تشخیص دهد. در این روش ها سعی بر آن است که از مزایای هر کدام از روش ها استفاده گردد تا عملکرد کلی سیستم بهتر از به کارگیری جداگانه هر یک از این روش ها باشد.
از راه های ارائه شده برای حل مسئله ی تشخیص کلمات کلیدی در گفتار؛، مدل مخفی مارکوف بیشتر توسعه پیدا کرده و در اغلب سییستم های پردازش پیوسته ی گفتار بکار گرفته می شود. برای نمونه مخفی مارکوف در سیستمی که علاوه بر تشخیص کلمات کلیدی، توانایی تشخیص کلمات غیر کلیدی را نیز دارد به کار گرفته می شود[7]. این کار به کمک مدل کردن واج های مختلف با فیلترهایی که از مدل مخفی مارکوف بهره می برند قابل پیاده سازی می باشد.

واج ها کوچکترین جزء زبان هستند که با کنار هم قرار گرفتن آنها کلمات تشکیل می شوند و تغییر دادن آنها موجب تغییر معنی کلمات هستند. نکته ی مورد توجه در مورد واج ها این است که هر زبان بسته به ذات خود و چگونگی تحلیل آن، تعداد واج های متفاوتی دارد. برای نمونه زبان فارسی بسته به چگونگی تحلیل آن دارای 29 تا 45 واج مختلف است در حالیکه زبان انگلیسی 31 تا 64 واج دارد. هر چندکه فیلتر های واجی بهتر از فیلتر های بخشی عمل می کنند، اما باید آنها را به طور جداگانه و برای هر زبان به صورت منحصر به فرد تعریف کرد[4].


# آزمایش‌ها

# کارهای آینده

# مراجع
[1] Mandal, Anupam, KR Prasanna Kumar, and Pabitra Mitra. "Recent developments in spoken term detection: a survey." International Journal of Speech Technology 17.2 (2014): 183-198.
[2] Chen, Guoguo, Carolina Parada, and Georg Heigold. "SMALL-FOOTPRINT KEYWORD SPOTTING USING DEEP NEURAL NETWORKS."
[3] Yong Ling. "keyword spotting in continous speech utterance." school of computer science, McGill university, 1999
[4] Javier Tejedor, Dong Wang, Joe Frankel, Simon King, Jose´ Cola´s. "A comparison of grapheme and phoneme-based units
for Spanish spoken term detection." 2008
[5] David Grangier, Joseph Keshet, Samy Bengio. "Discriminative Keyword Spotting." 
[6] Richard C.Rose. "Word Sspotting from continous speech utterance." 1996
[7] Richard C. Rose, Douglas B. Paul. "A HIDDEN MARKOV MODEL BASED KEYWORD RECOGNITION SYSTEM." 1990speech communication, 2008
[5] David Grangier, Joseph Keshet, Samy Bengio. "Discriminative Keyword Spotting." speech communication, 2009
[6] Richard C. Rose. "Word Spotting from continuous speech utterance." 1996
[7] Richard C. Rose, Douglas B. Paul. "A hidden markov model based keyword recognition system." bell laboratories  1990
[8] T. Kawabata, T. Hanazawa, and K. Shikano. Word spotting method based on hmm phoneme recognition. Journal of the Acoustical Society of America (JASA), 1(84), 1988.
[9] L. Rabiner and B.H. Juang. "Fundamentals of Speech Recognition." Prentice-Hall, Upper Saddle River, NJ, USA, 1993
[10] J. S. Bridle. "An efficient elastic-template method for detecting given words in running speech. In Proceedings of the British Acoustic Society Meeting." British Acoustic Society, 1973.


# پیوندهای مفید
+ [کتابخانه پردازش گفتار](http://kaldi.sourceforge.net)