۞۩۞ اعتراض ، حق هر آزاده ایست. ۞۩۞

آموزش ساخت یك شبیه ساز گفتار با Flash MX

نویسنده :سامورایی
تاریخ:پنجشنبه 7 خرداد 1388-06:23 ق.ظ

كاربردهای نرم افزاری فلش بسیار وسیع تر از تولید قطعات انیمیشن یا قطعات تعاملی برای استفاده از وب سایت ها می تواند باشد . نسخه های اخیر این نرم افزار قابلیت های بسیار پیشرفته ای را در اختیار كاربران حرفه ای فلش قرار داده است . این نوشته چگونگی ساخت یك شبیه ساز گفتار، در گوشه و كنار به وفور دیده می شوند . سیستم های سخن گوی بانك ها كه موجودی مشتریان را به كمك صدای شبیه سازی شده انسان به اطلاع كابران می رسانند و یا كاربرد بسیار عمومی تر نظیر اپراتور تلفن همراه و ساعت گویا و غیره همگی نمونه هایی از سیستم های سینتی سایزر محسوب می شوند. شما می توانید با تعقیب روش های ارائه شده در این نوشته و گسترش این پروژه ، مهارت و خلاقیت خود را برای یافتن كاربردهای دیگر چنین سیستمی بیازمایید . در نسل قبل از فلش MX،(یعنی نسخه 5) برنامه نویسان Actionscript برای كنترل قطعات صوتی ناگزیر به استفاده از روش های مبتنی بر Keyframe/onEnterFrame بودند . در نسل جدید این نرم افزار،اضافه شدن متد (Sound.onSoundComplete) امكان كنترل بسیار دقیقتر صداها را میسر ساخته است . دقت رویداد OnSoundComplete در حدود یك دهم سرعت فریم است. بدین ترتیب در صورتی كه پروژه فلش شما برای سرعت متداول 12فریم در ثانیه تنظیم شده باشد ، آنگاه دقت رویداد فوق در حدود یك صدوبیستم ثانیه خواهد بود كه كاربرد مورد نظر ما در این نوشته بسیار مناسب است . در این جا بد نیست كه از ابتدا نكته ای یاد آوری كنیم تا ذهنیت دقیق تری حاصل كار داشته باشید. رویداد OnSoundComplete هم ،مانند دیگر رویدادهای فلش ، در صورتی كه عملیات پیچیده و سنگینی همزمان با آن در جریان باشد (مانند انیمیشن های سنگین ) ممكن است دچار تاخیرهای كوتاهی بشود . در نتیجه در زمان بخش صدا، ممكن است Flash player نتواند تمام عملیات بار گذاری شده را با همان دقت مورد نظر شما انجام دهد و نهایتا احتمال ایجاد تاخیرهای ناخواسته به صورت « سكته» وجود دارد. این مساله كاملا به قدرت و سرعت پردازنده سیستم مقصد بستگی دارد و در سیستم های قدیمی تر تبدیل به مساله ای كاملا جدی خواهد شد.(حالا نظری به كد شماره یك بیندازید) برای آنكه بتوانید كد فوق را آزمایش كنید، باید یك فایل صوتی در كتابخانه وارد كرده باشید و نام groovy را برای آن انتخاب كنید. برای این كار بعد از آن كه یك فایل صوتی نمونه ساختید، از طریق منوی فایل و گزینه Import to library ، این فایل را به درون محیط فلش وارد كنید. در مرحله بعدی بر روی فایل صوتی خود كه در پنجره كتابخانه باید دیده شود، كلیك راست كنید و از منویی كه ظاهر می شود ، گزینه Linkage، پنجره دیگری ظاهر می شود كه می توانید پارامترهای مورد نظر خود را در آن تنظیم كنید . در این پروژه ما باید نام groovy را در این پنجره تایپ كنیم .(برای آن كه جعبه متنی مورد نظر فعال شود باید گزینه Export for ActionScript را تیك بزنید . با این كار گزینه دیگر Fram Export in the first هم فعال خواهد شد كه در كاربرد ما باید چنین باشد .) این وضعیت در شكل 2 نمایش داده شده است . توجه داشته باشید كه با این عمل ، از این به بعد می توانید در كدهای خود با قرار دادن نام این قطعه صوتی در درون عملیات های " " به آن ارجاع كنید . در زمان كامپایل شدن پروژه و تولید فایل های swf، نرم افزار فلش مراقب تمام سمبل های مورد استفاده خواهد بود و متصل بودن (Attach) آنها به Timeline را زیر نظر دارد و برهمین اساس محتوای پروژه در فایل swf در شبكه ای نظیر اینترنت جریان می یابد، محتوای پروژه و در واقع همان سمبل ها یكی یكی بر اساس همان ترتیب چیده شده توسط نرم افزار Flash player بار گذاری می شوند. سمبل هایی كه فقط با اسكریپ به Timeline متصل شده باشند، به طور پیش فرض توسط فلش در زمان كامپایل شدن دیده نمی شود و در فایل swf قرار نمی گیرند. در واقع فلش به صورت پیش فرض تصور می كند كه چنین سمبل هایی بی استفاده بوده اند. گزینه های Frame Export in first و Export for Actionscript برای جبران این موضوع تنظیم می شوند . به این ترتیب به فلش یادآوری می شود كه سمبل ها از طریق اسكریپ مورد استفاده قرار گرفته اند و باید در فایل كامپایل شده swf گنجانده شوند . در قطعه كد یك، قطعه صدایی با نام groovy توسط اسكریپ به Instance صدایی به نام myloop متصل شده است . در زمان اجرا شدن پروژه ، وقتی كه پخش صدای myloop پایان می پذیرد، رویداد OnSoundComplete تلبع ( ) nexSound را فرا می خواند كه این عمل باعث پخش مجدد صدا خواهد شد . در اینجا ممكن است با خود فكر كنید، كه انجام این كارها برای چیست؟ زیرا این كار را می توانستیم به صورت سر راست تری یعنی همان طور كه در كد 2آمده، هم انجام دهیم . در این روش، ترتیبی داده شده است كه صدای groovy به تعداد هزار مرتبه پشت سر هم پخش شود. ویژگی ای كه رویداد OnSoundComplete را متمایز می سازد، ذات دینامیك آن است . به این معنی كه كاربر می تواند در هر زمان دلخواهی، صدا را تغییر دهد و با این روش پروژه هایی مانند میكسرهای صوتی طراحی كند.(بدین صورت كه تابع بازگشتی، (در اینجا ( ) nextSound) می تواند در پایان هر قطعه صدایی، صدای دیگری را راه اندازی كند.) سینتی سایزر نرم افزار با فلش نمی دانم آیا تاكنون به نرم افزارهای ویژه ای كه برای كاربران كم بینا طراحی شده اند، نگاهی انداخته اید یا نه؟ (در ویندوز این قابلیت تحت عنوان تنظیمات Accessability وجود دارد. بعضی از سایت های ویژه وب هم به همین منظور قابل استفاده بودند برای كاربران خاص، به چنین مكانیسم هایی مجهز هستند. همچنین ابزارهایی وجود دارند كه در صورت عدم پشتیبانی سایت از قابلیت های فوق، باز هم با ارائه خدماتی آن را برای كاربران خاص قابل استفاده می كند.) این نرم افزارها وظیفه دارند تا بخش هایی از صفحه نمایش را كه در نزدیكی اشاره گرماوس قرار می كیرند بزرگتر نمایش داده و ضمنا در صورت وجود متن در آن بخش ها، آن را به صورت صوتی ادا كند. به طور معمول حجم این چنین سینیتی سایزرهای نرم افزاری از چند مگا بایت كمتر نیست. اما ما می خواهیم به كمك فلش ابزار بسیار جمع و جوری بسازیم كه كارایی نسبتا خوبی در مقایسه با نمونه های تجاری داشته باشد. سیستم های قدیمی commodore64 و حتی Atary آتاری با آنكه پردازنده های بسیار ضعیفی (در قیاس با نمونه های امروزی) داشتند و كل حافظه آنها 64 كیلو بایت بود (آتاری 32 كیلو بایت حافظه داشت)، قابلیت سینتی سا سلیزر را به خوبی نمایش می گذاشتند. رمز موفقیت چنین سیستم هایی در آن بود كه از تركییب قطعات كوچك صدای انسان كه از پیش در حافظه سیستم وجو داشت و allphone نام داشت، استفاده می شد. Allophone ها اصواتی نظیر صدای «ou» یا «th» بودند . بدین ترتیب نرم افزارهای ساده و ابتدایی كه برروی سیستم هایی مانند كمودر64اجرا می شد، قادر بودندتركیبات متنی را تجزیه كرده و با چیندن آلوفن ها در كنار یكدیگر، گفتار صوتی را به خوبی شبیه سازی كنند. چرا ما این كار با در اختیار داشتن رویدادOnSoundComplete درفلش انجام ندهیم ؟ تنها مشكل شما تهیه آلوفن خواهد بود. برای این كار چندین راه حل پیش روی شما قراردارد. یكی از ساده ترین راه حل ها، جستجو در اینترنت است . برای اینكار می توانید از عبارت نظیر «speech emulation» یا«allophone» در موتورهای جستجو استفاده كنید.(سایت http://vivismo.com تعدادزیادی ازنشانی های شبیه سازی ها یا emulator رامی تواندبرایتان بیابید). البته در اینترنت تعداد پروژه های سینتی سایزر سخت افزاری كه به كمك پردازنده های بسیار كوچك ( مثلاPIC كه در بازار ایران نیز به وفور یافت می شود ) قابل ساخت هستند، فراوان هستند. به طور معمول در این نوع پروژه های سخت افزاری، آلوفن ها به صورت فایل تهیه می شوند و درون حافظه های ویژه ای (مثلا EEPROM) ذخیره می شوند . شما در صورتی كه كمی حوصله داشته باشید خواهید توانست از فایل های آماده چنین پروژه هایی نیز استفاده كنید. نشانی یكی از این سایت ها چنین است : http://alphanik.com.au/derekw/pictalker/mainhtm روش دوم و شاید هم روش بهتر تهیه آلوفن ها ، آن است كه خودتان دست به كار شوید و آلوفن های مورد نیاز خود را ظبط كنید، در این صورت اگر چه ممكن است ب هعلت كم تجربگی ، نتیجه اولیه چندان رضایت بخش نباشد ،امدر عوض آلوفن های فارسی در دست خواهید داشت.( این مطلب كه آیا تا كنون آلوفن های فارسی تهیه شده باشند، موضوعی است كه در حال حاضر بر نویسنده مشخص نیست.) بازگشت به فلش منشا فایل های آلوفن هر چه باشد باید آن ها را به درون فلش وارد (import)وارد كنید. یادآوری می كنیم كه برای به دست آوردن نتیجه هر چه بهتر لازم است كه فایل های آلوفن، دارای هیچ گونه سكوت اضافی در ابتدا و انتهای خود نباشند. برای اطمینان از این مساله می توانید از نرم افزارهای ویرایشگر صوت مانند Audition Adobe یا Cool edite كمك بگیرید. نكته فنی و ظریف دیگر آن است كه برای از بین بردن افكت صوتی مزاحم كه به صورت صداهای «كلیك» ممكن است شنیده شوند. باید ابتداو انتهای نمونه های آلوفن ها را شیبدار یا به اصطلاح فنی تر fade in و fade out كنید. بعد ازاین كار لازم است كه تمام نمونه ها را نرمالیزه كنید تا صدای یكنواخت و طبیعی تر به دست آورید.(نرمال كردن صدا به این معنی است كه دامنه یا شدت صدا از حد مشخصی كه آستانه اشباع نامیده می شود، بیشتر نشود. بدین ترتیب بلندترین بخش هریك از نمونه ها با یكدیگر برابر خواهند شد.) بالاخره در صوترتی كه قصد استفاده از این پروژه را در اینترنت داشته باشید، مناسب تر خواهد بود كه نمونه های آلوفن ها را بهینه یا Optimize كنید تا از حجم آن ها كاسته شود. پس از مراحل فوق، كتابخانه ای در فلش خواهید داشت كه در آن تمام نمونه ها با نزدیكترین شكل نوشتاری خود نام گذاری شده اند. سینتی سایزرها ی قدیمی قابلیت تبدیل متون معمولی به گفتار را نداشتند. در نتیجه برای اینكه واژه خاصی را تلفظ كنند، كاربر ناگزیر به نوشت متن دیگری بود كه شباهت كمی به نوشته واقعی داشت. به عنوان مثال، برای تلفظ واژه Knowledge از عبارتی شبیه nnoleg استفاده می شد.(برای تلفظ واژه های فارسی این مشكل حادتر هم می شود) به این ترتیب یك سینتی سایزر، به انواع مختلفی تقسیم بندی می شود. سینتی سایزرهایی كه قابلیت تبدیل متن به گفتار داشته باشند، سینتی سایزرهای متنی نامیده می شوند و سینتی سایزر از نوعی كه تشریح شدو قرار است ما در اینجا آنرا با فلش بسازیم، سینتی سایزر فونتیك نام دارد.( اگر جویای نام هستیدو یا به ماجراجویی علاقه دارید، می توانید در این زمینه ها، خصوصا در مورد زبان فارسی كاركنید. مسلما جامعه ما به شدت به چنین فعالیت هایی نیاز دارد.) در قطعه كد شماره 3 سورس كدی را ملاحظه می كنید كه حجم زیادی از آن را برای پردازش رشته های متنی اختصاص یافته است تا بتواند نوشتار فونتیك(كه از همان نامگذاری آلوفن ها بدست آمده است) را تشخیص داده و بر اساس آن قادر باشد آلوفن ها را یكی پس از دیگری بخش كند. در این قطعه كد ازعلامت| برای تفكیك آوفن ها استفاده شده است. البته شما می توانید از روش دیگری هم برای نام گذاری و نتیجه پردازش رشته های متنی استفاده كنید. به این ترتیب كه به جای نام گذاری آلوفن ها در كتابخانه فلش به صورت مثلاaa یا uu یا oo و غیره از اسامی ساده مانند 01-02 كمك بگیرید در روش به كار گرفته شده در اینجا برای اینكه واژه Hello را بشنوید، باید تابع say را به صورت زیر فراخوانی كنید: ;Say("h|e|ll|oo|") این تابع در سورس شماره 3 به صورت زیر عمل می كند: ابتدا آرایه جدید ساخته كی شود،مثلا: Aphone[0]="h" Aphone[0]="e" Aphone[0]="ll" Aphone[0]="oo" در مرحله بعد، نخستین صدا یعنی h به Instance صدا متصل شده توسط رویداد OnSoundComplete پس از تشخیص پایان آن، صداهای بعدی به همین ترتیب پخش می شوند. این عمل توسط تابع () makePhrase انجام می شود كه صدای بعدی را در صف آلوفن در یافت كرده و آن را به Intance صدا متصل می سازد. یك نكته فنی برای كار حرفه ای تر در سورس كد فوق، تنها از یك Instance صدا استفاده شده است. نرم افزار فلش از چهار كانال صوتی كانال استریو پشتیبانی می كند. شما می توانید برای كاربردهای حرفه ای تر به جای استفاده از یك Instance صدا از تعداد بیشتری از آنها استفاده كنیدو هر یك از آن ها را به یك ()ViaSound.attachSound نسبت دهید. به این ترتیب شما خواهید توانست ازتمام قدرت هشت كانال صوتی (Mono) فلش بهره گیرید. اگر چه در ابتدای این نوشته به كاربردهایی اشاره شد كه به طور معمول به كار یك كاربر معمولی نمی آیند، اما كاربر دهای جالب دیگری نیز می توانید برای این پروژه بیابید . به عنوان مثال شاید بتوانید نرم افزاری طراحی كنید كه قرار های ملاقات یا برنامه روزانه شما ر ابه صورت صوتی به شما یادآوری می كند.


داغ کن - کلوب دات کام
نظرات() 
strongest viagra uk
سه شنبه 21 خرداد 1398 06:23 ب.ظ

My spouse and I absolutely love your blog and find most of your post's to be just what I'm looking for. Would you offer guest writers to write content in your case? I wouldn't mind producing a post or elaborating on a few of the subjects you write about here. Again, awesome blog!
What is a heel lift?
شنبه 18 شهریور 1396 08:34 ق.ظ
We stumbled over here from a different web address and thought I might
check things out. I like what I see so i am just following
you. Look forward to exploring your web page repeatedly.
How do you get taller in a day?
چهارشنبه 15 شهریور 1396 01:48 ق.ظ
I think the admin of this web site is actually working hard for his site, because here every data is quality based data.
emileeberg.hatenablog.com
سه شنبه 20 تیر 1396 10:01 ب.ظ
Thanks for finally writing about >از عالم فنآوری - آموزش ساخت یك شبیه ساز گفتار با Flash MX <Loved it!
emileeberg.hatenablog.com
سه شنبه 20 تیر 1396 09:58 ب.ظ
Thanks for finally writing about >از عالم فنآوری - آموزش ساخت یك شبیه ساز گفتار با Flash MX <Loved it!
 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر




Admin Logo
themebox Logo



ساخت وبلاگ در میهن بلاگ

شبکه اجتماعی فارسی کلوب | اخبار کامپیوتر، فناوری اطلاعات و سلامتی مجله علم و فن | ساخت وبلاگ صوتی صدالاگ | سوال و جواب و پاسخ | رسانه فروردین، تبلیغات اینترنتی، رپرتاژ، بنر، سئو