ضبط صدا/تشخیص صدا/مقایسه صدا

elahe_64

New Member
سلام به دوستان.:)
یک سوال داشتم . ممنون می شم اگر راهنمایی کنید.

چه جوری می شه در flash و با actionScript2 برنامه ای نوشت که مثلا با کلیک بر روی یک button صدای کاربر را از طریق میکروفن ضبط کند. سپس این صدا را مقایسه کند ،در واقع تشخیص دهد که مثلا کاربر آیا آن کلمه ای که مدنظر بوده است را گفته یا اشتباه کرده است و در آخر با توجه به این تشخیص صدا و مقایسه به او نمره یا امتیاز دهد.

اصلا همچنین امکانی در فلش وجود دارد یا خیر؟
 

sizanjavad

کاربر فعال
هر دوتا كار ميشه. من يه همچين چيزي ديدم كه با صداي دريافتي از ميكروفن sound processing كرده بودند. اگه لينكش رو پيدا كنم براتون مي ذارم.
براي كار با ميكروفن خود فلش كلاس داره. ولي اون قضيه تجزيه تحليلش رو نمي دونم چجوري انجام ميده.
 

arman_p

Member
لینکش پیدا نشد؟
منم منتظرما.
اگر پیدا کردی
با با تو دیگه کی هستی
 

apolon_021

Member
سلام به دوستان.:)
یک سوال داشتم . ممنون می شم اگر راهنمایی کنید.

چه جوری می شه در flash و با actionScript2 برنامه ای نوشت که مثلا با کلیک بر روی یک button صدای کاربر را از طریق میکروفن ضبط کند. سپس این صدا را مقایسه کند ،در واقع تشخیص دهد که مثلا کاربر آیا آن کلمه ای که مدنظر بوده است را گفته یا اشتباه کرده است و در آخر با توجه به این تشخیص صدا و مقایسه به او نمره یا امتیاز دهد.

اصلا همچنین امکانی در فلش وجود دارد یا خیر؟

ایشالا تو actionscript6 یا 7 امکان فرستادن انسان به ماه رو میزارن . :lol:
 

sizanjavad

کاربر فعال
لینکش پیدا نشد؟
منم منتظرما.
اگر پیدا کردی
با با تو دیگه کی هستی

نه متاسفانه ! اون مثال تطبیق صدا رو پیدا نکردم. ولی کار با میکروفن تو as3 به راحتی و بوسیله کلاس Microphone انجام میشه.
برای ضبطش و یا به اصطلاح ذخیره ، ظاهرا فلش باید از media server کمک بگیره.
 

arjmand200

Member
دوست عزیز من یه مدتی روی سوال شما فکر کردم تا اینکه به این نتیجه رسیدم که میشه به این سوال شما اینجوری جواب داده که (تا یه جاهایی میشه ) البته من این حرف رو که میزنم نظر شخصی من هستش .
خوب بریم سراغ سوالتون T نمیدونم شما با کلاس soundMixer کار کردین یا نه این کلاس یه متد به نام computSpectrum داره که شبیه یک sound visualization در مدیا پلیر خودمون رو میشه با این کلاس ایجاد کرد اما من چرا دارم در باره این موضوع حرف میزنم شما این مثال رو ببینید :

PHP:
var snd:Sound = new Sound();
snd.load(new URLRequest("sam.mp3"));
snd.play();
var my_BtA:ByteArray = new ByteArray();
function __sndSpect(event:Event) {
	SoundMixer.computeSpectrum(my_BtA, false, 0);
	graphics.clear();
	for (var i = 0; i < 256; i += 8) {
		var num:Number = my_BtA.readFloat() * 500;
		trace(my_BtA.readFloat());
		graphics.beginFill((0xffffff)*Math.random());
		graphics.drawRect((16 * (i / 8)) +19, 250, 16, -(num / -2));
	}
}

stage.addEventListener(Event.ENTER_FRAME, __sndSpect);

اگه به این مثال توجه کنی و مقادیر output رو ببینی ، میبینی که اعدادی در حین پخش صدا دارند نشون داده میشند که این اعداد توسط ()ByteArray.readFloat کد ایجاد میشند (توجه کن که اگه readFloat() رو نذاری همین عضوها byteArray که عد نیستن بلکه کاراکتر هستن نشون داده میشن )
حالا با این مثال فکر کنم که متوجه شدی که با این اعداد میشه تشخیص صدا رو انجام داد یعنی این اعدادی که توسط ()ByteArray.readFloat تولید میشه که صرفا برای این صدا هست ، میشه با یه صدای دیگه مقایسه کرد )
البته این رو بگم که استفاده از این اعداد به این سادگیها نیست  چون من اونجوری که فهمیدم نرم افزارهای کار با صدا
نیز اینطوری تولید میشن ( مثل Adobe Soundboth یا Sony SoundForge )

اینم مثال :
 
بالا