PDA

View Full Version : سوال: روش تشخیص نوع صدا (قفل صوتی)



arman_Delta2002
پنج شنبه 15 مرداد 1388, 20:52 عصر
سلام
میخوام به نرم افزار بسازم که با دریافت صدای کاربر و تشخیص نوع آن و مقایسه آن با صدای ذخیره شده . به کاربر اجاره ورود به برنامه را بدهد. لطفاً کمک کنید .

milad.biroonvand
سه شنبه 20 مرداد 1388, 09:28 صبح
سلام دوست عزيز ،

شما بايد اول يه ocr از شركت سازنده ، بخري بعد از اون مي توني استفاده كني ، اگر ocr تشخيص صدا مجاني گير اوردي ما رو هم خبر كن .

Saeed_m_Farid
سه شنبه 20 مرداد 1388, 11:26 صبح
سلام
میخوام به نرم افزار بسازم که با دریافت صدای کاربر و تشخیص نوع آن و مقایسه آن با صدای ذخیره شده . به کاربر اجاره ورود به برنامه را بدهد. لطفاً کمک کنید .
سلام
برای دریافت صدای کاربر و ذخیره یا پردازش اولیه، اگه دارید با VB.Net کار می کنید و نمی خواهید زیاد درگیر جزئیات بشید (البته حتماً یه ذره پیش زمینه (http://barnamenevis.org/forum/showthread.php?p=753015#post753015)درباره صوت و نوع فایلهای صوتی -WAV file format- باید داشته باشید، نه اینکه فقط دنبال یه چیز آماده بگردید) بهتره از DirectSound استفاده کنید :

http://www.codeproject.com/KB/audio-video/Circular_Buffers/image002.png

البته احتمالاً می دونید که با یکی دو خط کد، نمیشه همچین کاری کرد، این مقاله تو CodeProject (http://www.CodeProject.com/KB/audio-video/Circular_Buffers.aspx?fid=949589&df=90&mpp=25&noise=3&sort=Position&view=Quick&select=2927656) برای اینکه بتونید بدون ورود به پیچیدگیهای ساختاری برای اینکار تو ++C/C برای این کار آماده بشید، نقطه خوبی هست :

http://www.codeproject.com/KB/audio-video/Circular_Buffers/image001.png

کاری که شما قصد انجامش ("تشخیص نوع آن و مقایسه آن با صدای ذخیره شده") رو دارید قسمتی اش، مربوط میشه به مبحثی که معمولاً Voice activity detection - VAD یا Speech detection (http://en.wikipedia.org/wiki/Voice_activity_detection) گفته میشه، و زیاد هم با وی بی نمیشه همچین کارهایی کرد، به نظر من اگه قصد انجام چنین کارهایی (مخصوصاً "مقایسه آن ") دارید، بهتره سکوی برنامه نویسی تون رو عوض کنید.

سلام دوست عزيز ،

شما بايد اول يه ocr از شركت سازنده ، بخري بعد از اون مي توني استفاده كني ، اگر ocr تشخيص صدا مجاني گير اوردي ما رو هم خبر كن .
آخه دوست عزيز، OCR (http://en.wikipedia.org/wiki/Optical_character_recognition) چه ربطی به پردازش صوت داره؟ کسانی که سوال می پرسند، روی گفته های شما حساب می کنند و ممکنه بیراهه برند، کدوم شرکت سازنده کارت صوتی ای با الگوریتم تشخیص گفتار (حالا پولی یا بدون پول)، میده؟ حتی اگه هم کارت هایی با چنین API هایی باشند، مطمئناً به زبان وی بی نخواهند بود!

Hossein Bazyan
سه شنبه 20 مرداد 1388, 12:19 عصر
سلام

البته احتمالاً می دونید که با یکی دو خط کد، نمیشه همچین کاری کرد، این مقاله تو CodeProject (http://www.CodeProject.com/KB/audio-video/Circular_Buffers.aspx?fid=949589&df=90&mpp=25&noise=3&sort=Position&view=Quick&select=2927656) برای اینکه بتونید بدون ورود به پیچیدگیهای ساختاری برای اینکار تو ++C/C برای این کار آماده بشید، نقطه خوبی هست :

کاری که شما قصد انجامش ("تشخیص نوع آن و مقایسه آن با صدای ذخیره شده") رو دارید قسمتی اش، مربوط میشه به مبحثی که معمولاً Voice activity detection - VAD یا Speech detection (http://en.wikipedia.org/wiki/Voice_activity_detection) گفته میشه، و زیاد هم با وی بی نمیشه همچین کارهایی کرد، به نظر من اگه قصد انجام چنین کارهایی (مخصوصاً "مقایسه آن ") دارید، بهتره سکوی برنامه نویسی تون رو عوض کنید.


سلام
دوست عزیز نه تنها با وی بی دات میشه بلکه با وی بی 6 هم امکانش هست . من نرم افزاری دارم که با وی بی 6 نوشته شده است که گفته های شخص رو از میکرفون دریافت میکنه و با فایلی با فرمت wav مقایسه میکنه و حتی دو فایل را به شکل نموداری با هم مقایسه میکنه که ما برای آموزش زبان از آن استفاده میکنیم اما به دلیل کپی رایت نمیتوانم dll مربوطه را به کسی بدهم اسم برنامه Linqs و در سوئد نوشته شده است .

Navid Asadi
سه شنبه 20 مرداد 1388, 16:21 عصر
سلام من یک نمونه دارم( البته با VB6 نوشته شده)
اولش اصلا با صدای من کار نکرد اما با یکمی دست کاری رو کد به خوبی عمل کرد...
البته زیاد نباید روش حساب کرد...
اگه برای تو هم اول کار نکرد ناراحت نشو رو کدش کار کن ، می تونی...

Saeed_m_Farid
سه شنبه 20 مرداد 1388, 19:52 عصر
سلام
دوست عزیز نه تنها با وی بی دات میشه بلکه با وی بی 6 هم امکانش هست . من نرم افزاری دارم که با وی بی 6 نوشته شده است که گفته های شخص رو از میکرفون دریافت میکنه و با فایلی با فرمت wav مقایسه میکنه و حتی دو فایل را به شکل نموداری با هم مقایسه میکنه که ما برای آموزش زبان از آن استفاده میکنیم اما به دلیل کپی رایت نمیتوانم dll مربوطه را به کسی بدهم اسم برنامه Linqs و در سوئد نوشته شده است .
با سلام، جناب Hossein Bazyan :
همونطورکه خودتون فرمودید، موتور پردازش و تشخیص صوتی در برنامه مورد استفاده شما تو یک فایل dll خارجی نهفته است و بار عملیاتی بر دوش این کتابخانه است. این رو مطمئن باشید که هیچ عاقلی سرعت، توانایی و از همه مهمتر انعطاف پذیری ++C/C و اسمبلی در استفاده از منابع سیستم و انواع داده ها، ساختارها و عملیات بیتی رو رها نمی کنه و بیاد dll مربوطه رو با وی بی بنویسه! من به اینصورت عرض نکردم که "با وی بی نمیشه"؛ عرض بنده این بود که عملیات مرتبط با لایه های پایین در کار با چنین مواردی از عهده VB خارجه، و هنوز هم رو حرفم هستم. یعنی چیزی در این سطح از یه برنامه نویس وی بی انتظار نمیره، به زبان دیگه قابلیت این زبان (بهتره بگیم اینترپرتر!) نیست که بتونه همچین کاری بکنه!
یه لحظه هم نمیشه تصور کرد که چه بلایی سر آدم میاد وقتی بخواد بافرهای Waveframe کپچر شده از کاربر (کار با سخت افزار بماند!) رو درون ساختاری که با وی بی طراحی شده بریزه و بعد اونو با یه Wave ذخیره شده رو سیستم، با الگوریتمهای پیچیده ای ( نمونه یه مقاله در این زمینه (http://eprints.iisc.ernet.in/5261/1/comparision.pdf)) مقایسه کنه (ببینید واسه یه فایل یه دقیقه ای چقدر بافر تو حافظه احتیاج خواهید داشت و گذشته از اون از عملیات بیتی هم خبری نیست و ...). والّا نوشتن یه GUI برای یه موتور پردازشی صوتی با اسکریپت نویسی هم امکان پذیره، نه علم میخواد نه زحمت ...

صحبت شما مثل این می مونه که skin های winamp رو کار اصلی اون بدونید، اینها لایه های بالایی نرم افزار هستند و چیزی هست که در سطح کاربر هستند، اصل کارکرد برنامه کار با منابع سیستم و پردازش بافرهای صوتی و الگوریتمهای مرتبط با مقایسه صوت ها هستند که با این امکانات فوق العاده محدود وی بی در این زمینه (و مخصوصاً نسخه دات نتی اش)، که شما حتی حق دستکاری اشاره گر ندارین! چه برسه به بیت و بایتهای ساختاری ساده ترین نوع فرمت صوت WaveForm که کاملاً در گیر جزئیات بیتی هست. نمیگم نمیشه همچین کاری کرد (و چنین چیزی هم نگفته بودم)، ولی این کار لقمه رو دور سر گردوندن هست، برای نمونه شما چه ساختاری تو VB.Net برای ساده تربن نوع فرمت صوتی پایین پیشنهاد می کنید؟ با علم به اینکه این ساختار هنوز هیچ کدک یا رمزگذاری ای روش صورت نگرفته!

http://www.codeproject.com/KB/audio-video/Circular_Buffers/image003.png

گذشته از اینها مگه من چی گفتم؟ اولش اینو عرض کردم :

اگه دارید با VB.Net کار می کنید و نمی خواهید زیاد درگیر جزئیات بشیدو لینک برنامه نمونه پستم هم به یه article وی بی دات نت بود که از DirectSound داره استفاده می کنه، این نه بحث برانگیز بود نه مقایسه با سایر زبانها.
تنها موردی که تو صحبت هام بهش اشاره کردم این بود:

مربوط میشه به مبحثی که معمولاً Voice activity detection - VAD یا Speech detection (http://en.wikipedia.org/wiki/Voice_activity_detection) گفته میشه، و زیاد هم با وی بی نمیشه همچین کارهایی کرد، به نظر من اگه قصد انجام چنین کارهایی (مخصوصاً "مقایسه آن ") دارید، بهتره سکوی برنامه نویسی تون رو عوض کنید.راستش خیلی ارفاق کردم، باید می گفتم "اصلاً همچین کارهایی با این زبان نمیشه کرد" که شما هم دلیل نقض علمی واسه این نیاوردین، و این که برنامه ای به زبان وی بی هست که از یه dll لایسنس دار (مطمئناً به یه زبان دیگه و بدون سورس!) داره برای این کار استفاده می شه و هیچ قطعه کدی هم برای کار با Wave نیاوردین دلیل رد عرایض بنده نمیشه.

ممنون و موفق باشید.

Navid Asadi
سه شنبه 20 مرداد 1388, 21:25 عصر
حرفتون درسته
اما این کار رو میشه با مقایسه نمودار صوتی انجام داد...
به فایلی که گذاشتم دقت کنید

hanijackson
شنبه 25 مهر 1388, 17:23 عصر
سلام دوستان،
روشی هست توی VB که بشه وقتی ماوس رو روی لینکی بردی توی یه صفحه وب لینک رو تشخیص بده؟؟ یا رنگش رو تشخیص بده؟؟؟

سارا_1372
دوشنبه 07 اسفند 1391, 19:44 عصر
این بحث مال خیلی وقط پیشه می دونم اما منم دچار یک هم چیم مشکلی شدم .. نمی خوام اصلا وارد پردازش بشم بالاخره یکی این کد رو درست کرده دیگه حالا اکتیو اکسی dll چیزی هست .؟!! اگر امکانش هست یکی نام این رو اگر مشکلی نداره بزاره که ببینمیم به لاخره میشه این کار رو با یک طراحی خوب در vb انجام داد یا باید یک خاک دیگه ای به سرمون بریزیم..