PDA

View Full Version : طراحی یک الگوریتم برای Voice recognition و خواندن متن از طریق کامپیوتر



Adriaan
چهارشنبه 27 مهر 1390, 14:20 عصر
دوستان سلام و خسته نباشید.
دوستان وارد در بحث هوش مصنوعی سوالی داشتم ، می خواستم بدونم چطوری میشه ویس ریکاگنیشنی نوشت که فرق بین کلمه ی حیات و حیاط رو در گفتار تشخیص بده؟؟؟
از طرفی، یک سوال دیگه هم داشتم، می خوام بدونم بهترین الگوریتم برای خوندن حروف فارسی از طریق کامپیوتر و اطلاعات داده شده به دیتا بیس چی هست؟
مثالی برای ملموس تر شدن ارائه می کنم.
اگر ما نیاز به یک دستگاهی داشته باشیم که بخواد نام و نام خانوادگی افراد رو به فارسی بخونه، مثلا : پایلاک پطروسیان چه روشی استفاده شه بهتره؟
ما می تونیم یه AudioDatabase ایجاد کنیم، و تمامی کلمات الفبا رو از طریق میکروفون ضبط و وارد دیتا بیس کنیم.
حالا سوال اینجاست، کلمات ترکیبی رو چطور وارد کنیم؟؟
مثال کلمه ی "پ" : باید به چندین نوع خونده بشه و تعریف بشه >> ترکیب با "ی" و "الف" علاوه بر تعریف ضمه کسره و فتحه و حتی ساکن حروف. پس حرف پ بصورت >> "پا" ، "پی" ، "پـَ " ، "پُ " "پِ "و با حالت ساکن باید قرائت شه برای همه ی کلمات همینطور تا بشه اون رو در کلمات مختلف تطبق اثر داد.
مثلا: "پا" - "ی (بصورت ساکن)" - " لا (لام بصورت ترکیبی با الف) و " ک (بصورت ساکن)"
و کلمه ای چون پدرامی : "پــِ" - "د (بصورت ساکن)" - "را" ("ر" بصورت ترکیبی با الف) - می (بصورت ترکیبی با ی)

الگوریتم بهتری هست؟ یا این الگوریتم بهترینه؟ این مشکلاتی هم داره، تعداد حروف برای خوندن بالا میره.
تقریبا هر حرف باید به 4 نوع خونده شه 32*6 = تقریبا 192 مدل ، کمی کار سخت میشه درسته؟
البته "ز" - "ظ" - "ذ" - "ض" یک نوع هستند در قرائت و همچنین "هـ" - "ح" و "ث"-"ص"-"س" هم یک نوع خونده میشن که الگوریتم هر دسته ی اینا رو یکی حساب میکنیم و حاصل میشه 156 حالت، که اگه ، "عا" رو هم جز "آ" محسوب کنیم و "قا " رو جز "غا" کمی سبک تر میشه، اما می خوام بدونم روش بهتری هست؟

mehran_sh_t
چهارشنبه 27 مهر 1390, 16:47 عصر
فرق بین کلمه ی حیات و حیاط رو در گفتار تشخیص بده؟؟؟

سلام. من زیاد هوش مصنوعی بلد نیستم، ولی این چیزی که گفتید جدا از الگوریتم تشخیص صدا هستش. تلفظ دو کلمه یکی هستش. برای این کار باید از الگوریتم های تشخیص محتوا استفاده کنید (اگر وجود داشته باشه! که فکر نکنم اگرم باشه درس حسابی باشه)

Adriaan
چهارشنبه 27 مهر 1390, 16:59 عصر
تشخیص محتوا چیه؟ مگه ما همچین چیزی داریم؟
منظورتون اینه باید بتونه در جمله تشخیص بده؟ مثلا من در حیاط خانه ام رو تمییز بده با "من در قید حیاتم" ؟؟؟؟
اینکه یه الگریتم خدا می خواد.

mehran_sh_t
چهارشنبه 27 مهر 1390, 22:17 عصر
منم توی پرانتز بهتون گفتم! خیلی احتمالش کمه، چون وابسته به کل جمله اس.
ولی صد در صد شما توی تشخیص صدا هیچوقت نمی تونید این ها رو از هم جدا کنید.

aminfarajian
پنج شنبه 28 مهر 1390, 10:13 صبح
سلام
این مواردی که شما فرمودید دو زمینه از زمینه های کاری در بحث هوش مصنوعی هستن تحت نامهای تشخیص خودکار گفتار (Automatic Speech Recognition) و تبدیل نوشتار به گفتار (Text To Speech). در در مورد سیستمهای تبدیل متن به گفتار من یه مدتی داشتم روی این سیستم ها کار میکردم. همونطور که گفتید یک مجموعه ای از آواها باید در ابتدای کار تولید بشن و بعد سیستم از اونها برای تولید گفتار استفاده میکنه. روشهای زیادی برای تولید و بکارگیری این آواها وجود داره. روش اول که بسیار ساده هم هست اینه که برای هر کدوم از حروفی که در زبان مورد نظر داریم یک آوا تولید کنیم. این روش کیفیت بسیار پائینی داره و عملا غیر قابل استفادست. روش دوم استفاده از "دایفون" هاست. به این ترتیب که شما ترکیبات تمام آواها در زبان رو تولید میکنید و بعد از به هم چسبوندن اونها گفتار تولید میشه. بذارید یه مثال بزنم. فرض کنید میخواید سیستم شما کلمه "کِتاب" را بخونه. برای این کار باید 6 تا دایفون زیر رو از قبل تولید کرده باشید:
1. "سکوت" + "ک"
2. "ک" + "ِ(کسره)"
3. "ِ(کسره)" + "ت"
4. "ت" + "آ"
5. "آ" + "ب"
6. "ب" + "سکوت"
از به هم چسبوندن این 6تا دایفون، صدای مربوط به کلمه "کتاب" تولید میشه. حالا این که این دایفونها را چه جوری باید تولید کرد و کیفیتشون در چه حدی باید باشه و ... ایشاا... اگه تمایل داشتید سر فرصت براتون میگم. یا اینکه خودتون میتونید برید و مطالعه کنید. خوشبختانه در این زمنیه خیلی منبع میتونید پیدا کنید.
روشهای دیگه ای هم هستن که در حال حاضر یکی از بهترین اونها روش "انتخاب واحد (Unit Selection)" هستش که کیفیت بسیار بالایی داره اما هزینه تولید اون بسیار بالاست. راستی فراموش کردم بگم که برای زبان فارسی هم تحقیقات بسیار زیادی انجام شده و مقالات خوبی در این زمینه وجود داره و هم اینکه سیستم هایی عملیاتی وجود داره که انصافا کیفیتهای خوبی دارن. مثلا پارس آوا که خیلی خوب کار میکنه. محصولات دیگه ای هم در این زمینه هستن مثل پکتوس، شیوا، و ....
در مورد موضوع اول هم که فرموده بودین من یک سری اطلاعات کلی دارم . ولی برای اون مشکلی که گفتین فرق بین "حیات" و "حیاط" رو چه جوری میشه تشخیص داد روشهای مختلفی وجود داره. خیلی ها از روشهای مبتنی بر n-gram استفاده میکنن. که دقت نسبتا خوب و سرعت اجرای خوبی داره. روشهای دیگه ای هم هست که اگه خواستید میتونم سر فرصت براتون توضیح بدم.

Adriaan
پنج شنبه 28 مهر 1390, 23:22 عصر
احتمالش هست تو همین ایران ما دوستان کردستانی ما این نرم افزار رو ساختند به کمک یه متخصص هوش مصنوعی. من مطمئنم هست مهران عزیزم.

Adriaan
پنج شنبه 28 مهر 1390, 23:23 عصر
امیر عزیرم از توضیحاتت واقعا ممنونم، می خوام بیشتر برام توضیح بدی، اگه امکان داره ممنون میشم

mehran_sh_t
جمعه 29 مهر 1390, 09:49 صبح
جالب شد! میشه در مورد n-gram بیشتر توضیح بدی؟
(اصلا فکر نمی کردم همچین چیزی باشه!!!)

IamOverlord
شنبه 28 دی 1392, 18:56 عصر
سلام دوستان.
یه سوالی که در این رابطه داشتم اینه که چه طور می شه ــــَـــــِــــُــ رو فرقشون رو از هم تشخیص بدیم؟!
تبدیل فوریه چه کمکی به ما می کنه؟
البته یه سری سوالات دیگه هم در این رابطه دارم...