محبوبترینها
نمایش جنگ دینامیت شو در تهران [از بیوگرافی میلاد صالح پور تا خرید بلیط]
9 روش جرم گیری ماشین لباسشویی سامسونگ برای از بین بردن بوی بد
ساندویچ پانل: بهترین گزینه برای ساخت و ساز سریع
خرید بیمه، استعلام و مقایسه انواع بیمه درمان ✅?
پروازهای مشهد به دبی چه زمانی ارزان میشوند؟
تجربه غذاهای فرانسوی در قلب پاریس بهترین رستورانها و کافهها
دلایل زنگ زدن فلزات و روش های جلوگیری از آن
خرید بلیط چارتر هواپیمایی ماهان _ ماهان گشت
سیگنال در ترید چیست؟ بررسی انواع سیگنال در ترید
بهترین هدیه تولد برای متولدین زمستان: هدیههای کاربردی برای روزهای سرد
در خرید پارچه برزنتی به چه نکاتی باید توجه کنیم؟
صفحه اول
آرشیو مطالب
ورود/عضویت
هواشناسی
قیمت طلا سکه و ارز
قیمت خودرو
مطالب در سایت شما
تبادل لینک
ارتباط با ما
مطالب سایت سرگرمی سبک زندگی سینما و تلویزیون فرهنگ و هنر پزشکی و سلامت اجتماع و خانواده تصویری دین و اندیشه ورزش اقتصادی سیاسی حوادث علم و فناوری سایتهای دانلود گوناگون
مطالب سایت سرگرمی سبک زندگی سینما و تلویزیون فرهنگ و هنر پزشکی و سلامت اجتماع و خانواده تصویری دین و اندیشه ورزش اقتصادی سیاسی حوادث علم و فناوری سایتهای دانلود گوناگون
آمار وبسایت
تعداد کل بازدیدها :
1828703417
ساخت يك شبيهساز گفتار با Flash Mx
واضح آرشیو وب فارسی:سایت ریسک: Babak_King22-12-2005, 11:08 AMاشاره : كاربردهاي نرمافزار محبوب فلش بسيار وسيعتر از توليد انيميشن يا قطعات تعاملي براي استفاده در وبسايتها ميتواند باشد. نسخههاي اخير اين نرمافزار قابليتهاي بسيار پيشرفتهاي را در اختيار كاربران حرفهاي فلش قرار داده است. در اين نوشته چگونگي ساخت يك شبيهساز گفتار يا سينتيسايزر بهكمك امكانات جديد و پيشرفته فلش MX تشريح شده است. امروزه ماشينهاي شبيهساز گفتار، در گوشه وكنار به وفور ديده ميشوند. سيستمهاي سخنگوي بانكها كه موجودي مشتريان را بهكمك صداي شبيهسازي شده انسان به اطلاع كاربران ميرسانند و يا كاربرد بسيار عموميتر نظير اپراتور تلفنهمراه و ساعت گويا و غيره همگي نمونههايي از سيستمهاي سينتيسايزر محسوب ميشوند. شما ميتوانيد با تعقيب روشهاي ارائه شده در اين نوشته و گسترش اين پروژه، مهارت و خلاقيت خود را براي يافتن كاربردهاي ديگر چنين سيستمي بيازماييد. در نسل قبل از فلش MX، (يعني نسخه 5) برنامهنويسان ActionScript براي كنترل قطعات صوتي ناگزير به استفاده از روشهاي مبتنيبر Keyframe/onEnterFrame بودند. در نسل جديد اين نرمافزار، اضافه شدن متد Sound.onSoundComplete امكان كنترل بسيار دقيقتر صداها را ميسر ساخته است. دقت رويدادonSoundComplete در حدود يك دهم سرعت فريم است. بدين ترتيب در صورتيكه پروژه فلش شما براي سرعت متداول 12 فريم در ثانيه تنظيم شده باشد، آنگاه دقت رويداد فوق در حدود يك صد و بيستم ثانيه خواهد بود كه براي كاربرد مورد نظر ما در اين نوشته بسيار مناسب است. كد 1 http://www.shabakeh-mag.com/Data/Gallery/s48_Flash_code2.jpg در اينجا بد نيست كه از ابتدا نكتهاي را يادآوري كنيم تا ذهنيت دقيقتري از حاصل كار داشته باشيد. رويداد onSoundComplete هم، مانند ديگر رويدادهاي فلش، در صورتيكه عمليات پيچيده و سنگيني همزمان با آن در جريان باشد (مانند انيميشنهاي سنگين) ممكن دچار تاخيرهاي كوتاهي بشود. در نتيجه در زمان بخش صدا، ممكن است Flash player نتواند تمام عمليات بارگذاري شده را با همان دقت مورد نظر شما انجام دهد و نهايتاً احتمال ايجاد تأخيرهاي ناخواسته بهصورت "سكته" وجود دارد. اين مسأله كاملاً به قدرت و سرعت پردازنده سيستم مقصد بستگي دارد و در سيستمهاي قديميتر تبديل به مسألهاي كاملاً جدي خواهد شد. (حالا نظري به كد شماره يك بيندازيد). براي آنكه بتوانيد كد فوق را آزمايش كنيد، بايد يك فايل صوتي در كتابخانه وارد كرده باشيد و نام groovy را براي آن انتخاب كنيد. براي اينكار بعد از آن كه يك فايل صوتي نمونه ساختيد، از طريق منوي فايل و گزينهImport to library ، اين فايل را بهدرون محيط فلش وارد كنيد. در مرحله بعدي بر روي فايل صوتي خود كه در پنجره كتابخانه بايد ديده شود، كليك راست كنيد و از منويي كه ظاهر ميشود، گزينه Linkage را انتخاب نماييد(شكل 1). شكل 1 http://www.shabakeh-mag.com/Data/Gallery/s48_Flash01_s.jpg با انتخاب گزينه Linkage، پنجره ديگري ظاهر ميشود كه ميتوانيد پارامترهاي مورد نظر خود را در آن تنظيم كنيد. در اين پروژه ما بايد نام groovy را در اين پنجره تايپ كنيم. (براي آنكه جعبه متني مورد نظر فعال شود بايد گزينه Export for ActionScript را تيك بزنيد. با اينكار گزينه ديگر Export in the first frame هم فعال خواهد شد كه در كاربرد ما بايد چنين باشد.) اين وضعيت در شكل 2 نمايش داده شده است. توجه داشته باشيد كه با اين عمل، از اين به بعد ميتوانيد در كدهاي خود با قرار دادن نام اين قطعه صوتي در درون علامتهاي "" به آن ارجاع كنيد. در زمان كامپايل شدن پروژه و توليد فايلهاي swf، نرمافزار فلش مراقب تمام سمبلهاي مورد استفاده خواهد بود و متصل بودن (Attach) آنها به timeline را زير نظر دارد و بر همين اساس محتواي پروژه در فايل swf چيده ميشوند. در نتيجه زماني كه فايل swf در شبكهاي نظير اينترنت جريان مييابد، محتواي پروژه و در واقع همان سمبلها يكي يكي بر اساس همان ترتيب چيده شده توسط نرمافزار Flash player بارگذاري ميشوند. سمبلهايي كه فقط با اسكريپت بهtimeline متصل شده باشند، بهطور پيشفرض توسط فلش در زمان كامپايل شدن ديده نميشوند و در فايل swf قرار نميگيرند. در واقع فلش بهصورت پيشفرض تصور ميكند كه چنين سمبلهايي بياستفاده بودهاند. گزينههاي Export in first frame و Export for Actionscript براي جبران اين موضوع تنظيم ميشوند. به اين ترتيب به فلش يادآوري ميشود كه سمبلها از طريق اسكريپت مورد استفاده قرار گرفتهاند و بايد در فايل كامپايل شده swf گنجانده شوند. شكل 2 http://www.shabakeh-mag.com/Data/Gallery/s48_Flash02_s.jpg در قطعه كد يك، قطعه صدايي با نام groovy توسط اسكريپت بهInstance صدايي بهنام myLoop متصل شده است. در زمان اجرا شدن پروژه، وقتي كه پخش صداي myLoop پايان ميپذيرد، رويداد onSoundComplete تابع nextSound را فراميخواند كه اين عمل باعث پخش مجدد صدا خواهد شد. در اينجا ممكن است با خود فكر كنيد، كهانجام اينكارها براي چيست؟ زيرا اينكار را ميتوانستيم بهصورت سر راستتري يعني همانطو كه در كد 2 آمده، هم انجام دهيم. كد 2 http://www.shabakeh-mag.com/Data/Gallery/s48_Flash_code1.jpg در اين روش، ترتيبي داده شده است كه صدايgroovy به تعداد هزار مرتبه پشت سر هم پخش شود. ويژگياي كه رويداد OnSoundComplete را متمايز ميسازد، ذات ديناميك آن است. به اين معني كه كاربر ميتواند در هر زمان دلخواهي، صدا را تغيير دهد و با اين روش پروژههايي مانند ميكسرهاي صوتي طراحي كند. (بدين صورت كه تابع بازگشتي، (در اينجا ()nextSound ) ميتواند در پايان هر قطعه صدايي، صداي ديگري را راهاندازي كند.) سينتيسايزر نرمافزاري با فلش نميدانم آيا تاكنون به نرمافزارهاي ويژهاي كه براي كاربران كمبينا طراحي شدهاند، نگاهي انداختهايد يا نه؟ (در ويندوز اين قابليت تحت عنوان تنظيمات Accessability وجود دارد.بعضي از سايتهاي ويژه وب هم به منظور قابل استفاده بودن براي كاربران خاص، به چنين مكانيسمهايي مجهز هستند. همچنين ابزارهايي وجود دارند كه در صورت عدم پشتيباني سايت از قابليتهاي فوق، باز هم با ارائه خدماتي آنرا براي كاربران خاص قابل استفاده ميكند.) اين نرمافزارها وظيفه دارند تا بخشهايي از صفحه نمايش را كه در نزديكي اشارهگر ماوس قرار ميگيرند را بزرگتر نمايش داده و ضمناً در صورت وجود متن در آن بخشها، آنرا بهصورت صوتي ادا كند. بهطور معمول حجم چنين سينتيسايزرهاي نرمافزاري از چند مگابايت كمتر نيست. اما ما ميخواهيم بهكمك فلش ابزار بسيار جمع و جوري بسازيم كه كارايي نسبتاً خوبي در مقايسه با نمونههاي تجاري داشته باشد. سيستمهاي قديمي commodore 64 و حتي Atary آتاري با آنكه پردازندههاي بسيار ضعيفي (در قياس با نمونههاي امروزي) داشتند و كل حافظه آنها 64 كيلو بايت بود (آتاري 32 كيلو بايت حافظه داشت)، قابليتهاي سينتيسايزر را بهخوبي بهنمايش ميگذاشتند. رمز موفقيت چنين سيستمهايي در آن بود كه از تركيب قطعات بسيار كوچك صداي انسان كه از پيش در حافظه سيستم وجود داشت و allophone نام داشت، استفاده ميشدallophone ها اصواتي نظير صداي "ou" يا "th" بودند. بدين ترتيب نرمافزارهاي ساده و ابتدايي كه بر روي سيستمهايي مانند كمودر 64 اجرا ميشد، قادر بودند تركيبات متني را تجزيه كرده و با چيدن آلوفنها در كنار يكديگر، گفتار صوتي را بهخوبي شبيهسازي كنند. چرا ما اينكار را با در اختيار داشتن رويداد onSoundComplete در فلش انجام ندهيم؟ تنها مشكل شما تهيه آلوفن خواهد بود. براي اينكار چندين راهحل پيشروي شما قرار دارد. يكي از سادهترين راهحلها، جستجو در اينترنت است. براي اينكار ميتوانيد از عباراتي نظير "speech emulation" يا "allophone" در موتورهاي جستجو استفاده كنيد. (سايت http://vivismo.com تعدادي زيادي از نشانيهاي شبيهسازها ياemulator را ميتواند برايتان بيابد). البته در اينترنت تعداد پروژههاي سينتيسايزر سختافزاري كه بهكمك پردازندههاي بسيار كوچك (مثلاًPIC كه در بازار ايران نيز بهوفور يافت ميشود) قابل ساخت هستند، فراوان هستند. بهطور معمول در اين نوع پروژههاي سختافزاري، آلوفنها بهصورت فايل تهيه ميشوند و در درون حافظههاي ويژهاي (مثلاً EEPROM) ذخيره ميشوند. شما درصورتيكه كمي حوصله داشته باشيد خواهيد توانست از فايلهاي آماده چنين پروژههايي نيز استفاده كنيد. نشاني يكي از اين سايتها چنين است: http://alphalink.com.au/derekw/pictalker/main.htm روش دوم و شايد هم روش بهتر تهيه آلوفنها، آن است كه خودتان دست بهكار شويد و آلوفنهاي مورد نياز خود را ضبط كنيد. در اين صورت اگرچه ممكن است بهعلت كم تجربگي، نتيجه اوليه چندان رضايتبخش نباشد، اما در عوض آلوفنهاي فارسي در دست خواهيد داشت. (اين مطلب كه آيا تاكنون آلوفنهاي فارسي تهيه شده باشند، موضوعي است كه در حال حاضر بر نويسنده مشخص نيست.) بازگشت به فلش منشا فايلهاي آلوفن هرچه باشد، بايد آنها را بهدرون فلش وارد (Import) كنيد. يادآوري ميكنيم كه براي بهدست آوردن نتيجه بهتر لازم است كه فايلهاي آلوفن، داراي هيچ گونه سكوت اضافي در ابتدا و انتهاي خود نباشند. براي اطمينان از اين مسأله ميتوانيد از نرمافزارهاي ويرايشگر صوت مانند Adobe Audition يا Cool edit كمك بگيريد. نكته فني و ظريف ديگر آن است كه براي از بين بردن افكت صوتي مزاحم كه بهصورت صداهاي "كليك" ممكن است شنيده شوند، بايد ابتدا و انتهاي نمونههاي آلوفنها را شيبدار يا به اصطلاح فنيتر fade in و fade out كنيد. بعد از اينكار لازم است كه تمام نمونهها را نرماليزه كنيد تا صداي يكنواخت و طبيعيتري بهدست آوريد. (نرمال كردن صدا به اين معني است كه دامنه يا شدت صدا از حد مشخصي كه آستانه اشباع ناميده ميشود، بيشتر نشود. بدين ترتيب بلندترين بخش هر يك از نمونهها با يكديگر برابر خواهند شد.) كد 3 makePhrase = function () { if (soundCount < soundMax){ soundCount++; speech.attachSound(aPhones[soundCount]); speech.start(); } else { delete speech.onSoundComplete; } }; function say (phrase) { var i = j= 0; aPhones = new Array(); for (i = 0; i < phrase.length; i++) { if (phrase.charAt(i) != "|") { aPhones[j] += phrase.charAt(i); if (phrase.charAt(i) == " ") { aphones[j] = "space"; } }else { j++; } } speech.attachSound(aPhones[0]); speech.start(); speech.onSoundComplete = makePhrase; soundCount = 0; soundMax = j-1; } function SoundInit () { speech = new Sound(this); } soundInit(); say("h|e|ll|oo| | | | | |h|ow| |ar| |y|ouu| | | | |tt|u|d|ay|"); stop(); بالاخره در صورتيكه قصد استفاده از اين پروژه را در اينترنت داشته باشيد، مناسبتر خواهد بود كه نمونههاي آلوفنها را بهينه يا Optimize كنيد تا از حجم آنها كاسته شود. پس از مراحل فوق، كتابخانهاي در فلش خواهيد داشت كه در آن تمام نمونهها با نزديكترين شكل نوشتاري خود نامگذاري شدهاند. سينتيسايزرهاي قديمي قابليت تبديل متون معمولي به گفتار را نداشتند. در نتيجه براي آنكه واژه خاصي را تلفظ كنند، كاربر ناگزير به نوشتن متن ديگري بود كه شباهت كمي به نوشته واقعي داشت. به عنوان مثال، براي تلفظ واژه Knowledge از عبارتي شبيه nnolej استفاده ميشد. (براي تلفظ واژههاي فارسي اين مشكل حادتر هم ميشود.) به اين ترتيب يك سينتيسايزر، به انواع مختلفي تقسيمبندي ميشود. سينتيسايزرهايي كه قابليت تبديل متن به گفتار را داشته باشند، سينتيسايزر متني ناميده ميشوند و سينتيسايزر از نوعي كه تشريح شد و قرار است ما در اينجا آنرا با فلش بسازيم، يك سينتيسايزر فونتيك نام دارد. (اگر جوياي نام هستيد و يا به ماجراجويي علاقمنديد، ميتوانيد در اين زمينهها، خصوصاً در مورد زبان فارسي كار كنيد. مسلماً جامعه ما بهشدت به چنين فعاليتهايي نياز دارد.) در قطعه كد شماره 3، سورس كدي را ملاحظه ميكنيد كه حجم زيادي از آن براي پردازش رشتههاي متني اختصاص يافته است تا فلش بتواند نوشتار فونتيك (كه از همان نامگذاريهاي آلوفنها بهدست آمده است) را تشخيص داده و بر اساس آن قادر باشد آلوفنها را يكي پس از ديگري پخش كند. در اين قطعه كد از علامت براي تفكيك آلوفنها استفاده شده است. البته شما ميتوانيد از روش ديگري هم براي نامگذاري و در نتيجه پردازش رشتههاي متني استفاده كنيد. به اين ترتيب كه بهجاي نامگذاري آلوفنها در كتابخانه فلش بهصورت مثلا ًaa و uu يا oo و غيره از اسامي ساده مانند o1 - 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) فلش بهره گيريد. اگرچه در ابتداي اين نوشته به كاربردهايي اشاره شد كه بهطور معمول به كار يك كاربر معمولي نميآيند، اما كاربردهاي جالب ديگري نيز ميتوانيد براي اين پروژه بيابيد. به عنوان مثال شايد بتوانيد نرمافزاري طراحي كنيد كه قرارهاي ملاقات يا برنامه روزانه شما را بهصورت صوتي به شما يادآوريكند. منبع:ماهنامه شبكه Elfin-D22-12-2005, 03:12 PMسلام بابك جان تبريك 2 تا ميگم بهت ميگم.اولي به خاطر اموزش خوبت و دومي به خاطر كاربر فعال شدن.اميدوارم كه هميشه موفق باشي! Babak_King22-12-2005, 03:29 PMسلام الفين جان مممنون از تبريكت خيلي چاكريم ها موفق باشي STAYWITHME23-12-2005, 03:11 PMبابک جان این چیزی که نوشتی بیشتر شبیه به یه معرفی و آشنایی کلی داره کامل نخوندم ولی اولاش که چرت و پرت بود در ضمن این آموزش برای فلش 6 هست در صورتی که ما در حال حاضر از فلش 8 استفاده می کنیم در مورد کد هات هم باید بگم که به دلیل ریز بودن خوندنشون دشوار بور و معمولا کد رو به صورت تایپ شده میدن نه عکس . Babak_King23-12-2005, 05:44 PMبابک جان این چیزی که نوشتی بیشتر شبیه به یه معرفی و آشنایی کلی داره کامل نخوندم ولی اولاش که چرت و پرت بود در ضمن این آموزش برای فلش 6 هست در صورتی که ما در حال حاضر از فلش 8 استفاده می کنیم در مورد کد هات هم باید بگم که به دلیل ریز بودن خوندنشون دشوار بور و معمولا کد رو به صورت تایپ شده میدن نه عکس . سلام staywithme جان خوبي عزيز اولا اين قابليت تو همه ورژنايه فلاش كارايي داره دوما منظورتون از چرت و پرت چيه سوما داداش دو تا كد داخل عكسه بقيش كه خواناست :blush: ;) :) ;) Babak_King23-12-2005, 05:45 PMتازه همون دو تاشم خواناست STAYWITHME23-12-2005, 06:35 PMبابک جان می بخشید ها ولی اون د ها خیلی ریز هستند . البته اینو با توجه به این می گم که کلا فونت های سایت ریز هست و این عکس هم که از اون ریز تر . دوم اینکه کد ها رو نباید به صورت عکس می زاشتی چون روالش اینه که به صورت متن باشه ، تا بشه کپی شون کرد . و سوم اینکه عنوان تاپی طوری هست که آدم فکر می کنه این مطلب آموزش هست ولی در واقع امر این مطلا برسی این قابلیت از فلش هست . Babak_King23-12-2005, 07:24 PMstaywithme جان فونتاشو بزرگ كردم از بابت عكسا به بزرگي خودت ببخش اگه وقت كنم به صورت كامل يه مقاله آموزشي بران ميزارم موفق باشي Elfin-D28-12-2005, 10:00 PMسلام اقا منظور ايشون عكسها بود.چرا فونت مقاله رو بزرگ كردي؟ STAYWITHME29-12-2005, 12:59 PMمرسی . فکر کنم منظورت از بران همون برات هست ؟؟ اگه دوست داشتی درستش کن Babak_King29-12-2005, 01:29 PMمرسی . فکر کنم منظورت از بران همون برات هست ؟؟ اگه دوست داشتی درستش کن ببينم عزيز جز ايراد گرفتن جنابعالي كار ديگه ايم بلدي Elfin-D29-12-2005, 01:33 PMسلام دوستان دعوا بدهست.همينجا تمومش كنيد!! STAYWITHME31-12-2005, 12:18 PMبله من کار های دیگه ای هم بلدم ....... :biggrin: :) سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 667]
-
گوناگون
پربازدیدترینها