PDA

View Full Version : حرفه ای: پردازش صدا (صوت)



ابوالفضل عباسی
سه شنبه 19 مرداد 1395, 11:35 صبح
باسلام خدمت دوستان برنامه نویس.
با عرض پوزش اگر سوال بنده کمی مسخره می باشد.
میخواهم یک میکروفن کار بگذارم و وقتی صدا موجودی رو شنید یک صدا پخش شود، که با آن ارتباط برقرار کنم.
حال چطور میتونم صدای موجودی که میکروفن پخش میشه رو با یک صدا مقایسه کنم که اگر این صدا 80 درصد شبیه هم بود، صدای موردنظرم رو پخش کنم؟
اگر در این زمینه لینک، کد و یا کامپوننتی دارید،ممنون دار همه ی شما هستم.
درضمن نحوه استفاده اش رو ذکر کنید،:خجالت:
باز هم متشکرم:لبخند:

یا علی

golbafan
شنبه 23 مرداد 1395, 09:16 صبح
کاری که در نظر دارید ، مبحث بسیار پیچیده ای در حوزه پردازش سیگنال هست

قبل از هرچیز باید با استفاده از فیلترهای صوتی ، نویز رو حذف کنید (ساده ترین مورد استفاده از level صدا و همینطور VAD هست) Voice activity detection
سپس باید بتونید فیچرهای صوت رو استخراج کنید. مثلا با استفاده از الگوریتم های مبتنی بر فرکانس صوت مثل MFCC : Mel-frequency cepstral coefficients
در نهایت باید با روشهای یادگیری دیتا (data mining) مبتنی بر هوش مصنوعی مثل روش K-means یا KNN داده ها رو طبقه بندی (classification) کنید

voice recognition رو جستجو کنید

ابوالفضل عباسی
شنبه 23 مرداد 1395, 18:51 عصر
خیلی ممنون
ولی بنده چیزی سر در نیاوردم.کامپوننتی مثل imageEn(که تصویر رو پردازش میکنه)برای صدا و صوت وجود نداره؟
با روشی که شما گفتید،کاری پیچیده و سخت میشود،اگر بحث نویز رو بکنار بگذاریم چطور میشه راحت تر دو صدا رو مقایسه کرد؟
ممنون

golbafan
یک شنبه 24 مرداد 1395, 07:53 صبح
صداها از موجود زنده تولید میشن یا اینکه یک ابزار اونها رو تولید میکنه؟
صداها ریتم خاصی دارن یا بصورت متغیر هست؟ مثلا صدای اره برقی هست یا صدای رادیو؟؟؟

اگر صداهای تولید شده خیلی ساده باشن میتونید با استفاده از تبدیل فوریه F.F.T براحتی سیگنال اصلی رو به سیگنال فرکانسی تبدیل کنید و مقایسه کنید. برای مثال تشخیص و جداسازی بوق تریلی از بوق پراید

هنوز کامپوننت بدرد بخوری برای این کار (حداقل در دلفی) موجود نیست. با اینحال میتینید از کامپوننت های Audio-Lab و Signal-Lab برای شروع استفاده کنید
پردازش صوت بسیار پیچیده تر از پردازش تصویره و نسبت به اون خطای بالایی هم داره.

ابوالفضل عباسی
یک شنبه 24 مرداد 1395, 10:11 صبح
بازهم تشکر.
صدا از موجود زنده تولید میشه و من هم یک صدا از اون ها ضبط شده دارم.حالا میخواهم ببینم که از بین موجودات زنده ای که وجود داره،کدام یک از این صدا ها شبیه به صدای ضبط شده است؟

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

موفق باشید.

ابوالفضل عباسی
یک شنبه 24 مرداد 1395, 10:18 صبح
درضمن خطاهم زیاد باشه اشکالی نداره.
تقریبا صدا ها ساده هستند.تا 50 درصد خطا ایرادی نداره،ولی بشرطی که وقتی دو صدا مقایسه میشه و 60 درصد شبیه تشخیص داده شد،یک انسان که به دو صدا گوش بدهد،بفهمد که دو صدا تقریبا شبیه هستند.

مثلا: دلفی وقتی صدای تریلی رو با صدای گربه مقایسه میکنه،تشخیص بدهد 60 درصد شبیه هستند.این تشخیص کاملا اشتباه است.(خطا تا این حد برای من قابل قبول نیست)

حال اگه صدا تا یک حدی تشخیص داده شد که شبیه هستند،من به برنامه پردازش تصویر هم اضافه میکنم که کاملا شبیه باشه.
ولی باید صدا اول تشخیص داده بشه،چون ممکنه گربه با پلنگ در پردازش تصویر، اشتباه تشخیص داده بشه.پس باید صدا و تصویر مکمل هم باشند.

از جناب golbafan هم تشکر میکنم بابت راهنمایی هایشان.

golbafan
یک شنبه 24 مرداد 1395, 13:58 عصر
از اونجایی که خطای 60 درصد برای شما قابل قبول نیست و صدا از موجود زنده (پردازش پرخطاتر) تولید میشه
برای دقت های بالاتر بهتره از الگوریتم MFCC برای استخراج ویژگی های صدا استفاده کنید و همینطور باید از VAD استفاده کنید برای جداسازی صوت از صدای زمینه (voice recognition)
و اگر صدا از انسان تولید بشه که بسیار پیچیده خواهد بود . باید برید مبحث speaker recognition رو مطالعه کنید
که البته در جدید ترین سیستم های روز دنیا برای speaker recognition مثل الگوریتم های vector quantization حداقل 30 درصد خطا داره اونهم تازه اگر کیفیت صدا خوب باشه
موفق باشید

ابوالفضل عباسی
سه شنبه 26 مرداد 1395, 12:27 عصر
من تونستم برنامه هایی پیدا کنم که صدا ها رو انالیز کنه.
حالا بنظرتون صدا ها (مثلا انسان)در فرکانس ها شباهت زیادی پیدا میشه و یا در سیگنال ها؟
بطور مثال اگر بخواهم دو صدای انسان(با فرکانس یکسان 2000 هرتز) رو مقایسه کنم که ببینم صدا هاشون چقدر شبیه میشه از مقایسه سیگنال های صدا فهمید؟ یا سیگنال اصلا به درد این کار نمی خوره؟

درضمن Magnitude در صدا چیه؟چون در انواع آنالیز ها این وجود داره.
من مبحث های Fast Fourier Transform رو خوندم که یکی از دوستان پیشنهاد داد،برای آنالیز صدا عالیه ولی نتونستم مقایسه بین دو صدا انجام بدهم.

golbafan
چهارشنبه 31 شهریور 1395, 10:08 صبح
من تونستم برنامه هایی پیدا کنم که صدا ها رو انالیز کنه.
حالا بنظرتون صدا ها (مثلا انسان)در فرکانس ها شباهت زیادی پیدا میشه و یا در سیگنال ها؟
بطور مثال اگر بخواهم دو صدای انسان(با فرکانس یکسان 2000 هرتز) رو مقایسه کنم که ببینم صدا هاشون چقدر شبیه میشه از مقایسه سیگنال های صدا فهمید؟ یا سیگنال اصلا به درد این کار نمی خوره؟

درضمن Magnitude در صدا چیه؟چون در انواع آنالیز ها این وجود داره.
من مبحث های Fast Fourier Transform رو خوندم که یکی از دوستان پیشنهاد داد،برای آنالیز صدا عالیه ولی نتونستم مقایسه بین دو صدا انجام بدهم.

سلام
اول مشخص کنید میخواهید مثلا حسن را از محمود جدا کنید یا اینکه میخواهید ببینید حسن چی میگه؟؟؟

Magnitude مربوط به انرژی صدا هست شبیه volum صدا

fft خوبه اما برای شناسایی صداهایی مثل زنگ تلفن و نه برای انسانها (برای همین پرسیدم صدا از موجود زنده هست یا نه)