IranIT.info Articles
عنوان VoiceXML
نويسندهامينه اميني تاريخ ارسال 21/05/1381 نام قسمت فرنت اند
مقدمه
بيشتر مردم با سرويس‌هاي تلفني اتوماتيك آشنا هستند.اين سرويس‌ها اجازه مي دهد به كاربر كه اطلاعاتي مثل زمانبندي پروازها، زمان نمايش فيلم يا هر اطلاعات ديگري را به وسيله تلفن معمولي بدست آورند.در حقيقت تلفن مرسوم تر از كامپيوترهاي شخصي و مرورگر وب است و تلفن مي‌تواند بوسيله هر فردي مورد استفاده قرار گيرد.
رشد تكنولوژي w3 موجب شد كه تامين كنندگان سرويسهاي تلفن معمولي سرويسهاي جديدي را براي مشتريان ارائه دهند تا مشتريان بوسيله تلفن معمولي اطلاعات خود را از اينترنت بدست آورند.

تاريخچه VoiceXML
ريشه VoiceXML در پروژه تحقيقاتي بنام Phoneweb در آزمايشگاه AT&T Bell بود.در اكتبر سال 1998 كنسرسيوم (World Wide Web Consortium) ،w3c ا ز يك پروژه كه روي Voice Browser كار مي كرد پشتيباني كرد كه تعدادي از كمپانيها شامل AT&T, IBM, Lucent, Microsoft, Motorola, sun در آن شركت كردند كه اين پروژه باعث شكل گيري VoiceXML Forum شد .VoiceXML Forum سازماني است كه موسسان آن AT&T , IBM , Lucent, Motorola هستند و با هدف ايجاد استاندارد جديدي بنام Voice eXtensible Markup Language (VoiceXML) كه اطلاعات اينترنت را از طريق تلفن قابل دسترسي كند بوجود آمد.براي اطلاعات بيشتر در مورد VoiceXML Forum مي توانيد به سايت http://www.voicexml.org مراجعه كنيد.

معرفي VoiceXML
VoiceXML يك زبان نشانه گذاري مانند HTML است .مثال ساده زير را در نظر بگيريد:


HTML

VoiceXML

تنها تفاوت HTML و VoiceXML اين است كه اولي بوسيله Web Browser و دومي بوسيله Voice Browser اجرا مي شود.
برنامه كاربردي مي‌تواند با كاربر از طريق يك صداي تركيبي يا فايل صوتي از پيش ضبط شده صحبت كند.در زمانهاي گذشته شما مي توانستيد با اجاره يك خط تلفن و اجراي نرم افزار TTS(Text-To-Speech) اين كار را انجام دهيد، در حقيقت مفهوم جالب در مورد VoiceXML اين است كه لازم نيست كه ما كاري انجام دهيم gateway هايي وجود دارد كه صفحات VoiceXML را از Webserver دريافت كرده و براي كاربر مي خوانند اگر نياز به ورودي از طرف كاربر باشد آن را دريافت كرده وپس از ترجمه آن را به سرور انتقال مي دهد.(شكل 1)


شكل 1


معماري VoiceXML
شكل 2 مدل معماري از VoiceXML را در يك Bevocal Platform نشان مي دهد كه شامل اجزاي زير مي باشد :
  • وب سرور (Web server)
  • متن ترجمه شده (VIC) ( VoiceXML Inetrpreter Context ) VoiceXML
  • دستگاه پياده سازي كننده Implementation Platform


شكل 2

وب سرور مي تواند هر سروري روي اينترنت باشد و VIC كه شامل مترجم VoiceXML است مسؤول ترجمه كد VoiceXML است.Interpreter Context تمام توابع مورد نياز مترجم را پشتيباني مي كند . مترجم VoiceXML مقادير پارامتر را بعنوان بخشي از درخواست به وب سرور مي فرستد و در جواب VoiceXML document دريافت مي كند.وب سرور درخواستها را دريافت كرده و پاسخ را به مترجم برمي گرداند .هر كدام از زبانها از قبيل Perl,ASP,JSP,PHP مي تواند براي ايجاد مستندات VoiceXML بصورت ديناميك استفاده شود.VI و VIC با دستگاه پياده سازي كننده در ارتباط هستند.دستگاه پياده سازي كننده داراي زير ساختاري شامل سوييچ تلفن ، نرم افزار تشخيص صدا (ASR) Automated Speech Recognization و موتور تركيب صدا (TTS) Text-To-Speech است.دستگاه پياده سازي مسؤوليت اتصال به PSTN و تشخيص صدا واجراي فايلهاي صوتي و ديگر توابع پشتيباني شده را دارد.هنگاميكه دستگاه پياده سازي مسئوليت تشخيص صدا را دارد جزئيات مربوط به تشخيص صدا از VoiceXML مخفي مي ماند.
VoiceXML مستقل از دستگاه پياده سازي است كه روي آن اجرا مي شو دكه اين باعث انعطاف پذيري بالايي شده و موجب مي شود به يك دستگاه پياده سازي خاص محدود نشود.

مفاهيم VoiceXML
يك VoiceXML document را مي توان يك finite state machine در نظر گرفت كه كاربر هميشه در يك حالت محاوره يا ديالوگ است .هر ديالوگ transition بعدي را معين مي‌كند.transition هابه وسيله URL ها مشخص مي شوند كه URL ها document يا ديالوگ بعدي كه بايد استفاده شو د را معين مي كنند.اگر هيچ URL تعيين نشود document جاري در نظر گرفته مي شود و اگر ديالوگي تعيين نشود ديالوگ اوليه اجرا مي شود . مكالمه هنگامي كه ديالوگ، مورد بعدي را تعيين نكند يا بطور ضمني برچسب داشته باشد كه از مكالمه خارج شود پايان مي گيرد.
VoiceXML يك XML Data Type Definition (DTD) است كه براي كاربردهاي صوتي تعريف شده است.VoiceXML DTD شامل تعدادي برچسب مي باشدكه هر كدام فرزندان و والدين مربوط به خود را دارد همچنين اين برچسب ها صفاتي دارند كه رفتارشان از طريق آن كنترل مي شود .براي درك بهتر به تشريح چند مثال مي پردازيم .در اين مثالها سعي شده است كه برچسب هاي مهم VoiceXML معرفي شود.

مثال 1 : اين مثال يك فرم ساده است كه ورودي كاربر را گرفته و فرم ديگري را فعال مي كند.


<?xml version="1.0" ?>

<!DOCTYPE vxml PUBLIC "-//BeVocal Inc//VoiceXML 1.0//EN" 
  "http://café.bevocal.com/libraries/dtd/vxml1-0-bevocal.dtd">

<vxml version="1.0">
	<form id="welcome">
	 <block> Welcome to VoiceXML Example <break/>

	  <prompt>
	  <audio src="say.wav"/>
	  Say next or start to start over again.</prompt>
	 </block>
	 <field name="whattodo">
	  <grammar>[next start]</grammar>

	   <filled>
	    <if cond="whattodo=='next'">
	      <prompt>You said <value expr="whattodo"/></prompt>
	      <goto next="#welcome"/>
	    <else/>

	      <prompt>You said <value expr="whattodo"/></prompt>
	      <goto next="#welcome"/>
	    </if>
	   </filled>
	 </field>

	</form>
</vxml>

خط اول مربوط است به XML كه نسخه آن را مشخص مي كند و خط دوم يك URL براي DTD است كه در اين مثال از Bevocal Café DTD استفاده شده است. كد VoiceXML در داخل برچسب <vxml> و </vxml> قرار مي‌گيرد. برچسب <form> براي دريافت ورودي از كاربر و اجراي ديگر توابع همراه آن است.در مثال بالا شناسه فرم welcome است ، صفت شناسه بسيار مهم است زيرا باعث بازگشت كنترل برنامه به همان فرم مي شود. براي ايجاد يك عكس العمل در كاربر از برچسب <block> در فرم استفاده شده است.برچسب <block> اين اجازه را به ما مي دهد كه يك كد قابل اجرا را مشخص كنيم. ما با استفاده از برچسب <prompt> كاربر را آماده مي كنيم كه مي تواند يك فايل wave باشد. تعيين فايل wave با استفاده از برچسب <audio> انجام مي شود.نام فايل wave رابوسيله صفت "src" تعيين مي‌كنيم.اگر فايل صوتي پيدا نشد مترجم Voicexml متن مشخص شده اي رابه وسيله موتور TTS اجرا مي كند.از برچسب <break> براي ايجاد يك مكث بعد از اجراي <prompt> استفاده مي شود.
مراحل بدست آوردن ورودي ، تطبيق ورودي و انجام عمل مربوط به آن عبارتند از :

1) مشخص كردن گرامر : برچسب <grammer> براي تعيين كلمات ادا شده قابل قبول يا جايز استفاده مي شود.در مثال بالا ما دو انتخاب داريم : next و start. فرمت گرامر كه در اين مثال استفاده شده Grammer Specification Language (GSL) است كه يك زبان تعريف شده است كه بوسيله Nuance Communications استفاده مي شود. فرمت هاي گرامري ديگري از قبيل Java Speech Grammer Format(JSGF) قابل استفاده است.
2) دريافت ورودي از كاربر : برچسب <field> براي بدست آوردن ورودي كاربر استفاده مي شود . يك <field> مي‌تواند انواع مختلفي از جمله :
digits, currency, number, phone, time, boolean, date
باشد ،بنابراين پاسخ كاربر هم مي‌تواند يكي از اين انواع باشد. بعضي از دستگاههاي پياده سازي كننده انواع پيچيده تري را پشتيباني مي كنند. هنگاميكه كاربر كلمه را ادا مي كند كلمه ادا شده تطبيق داده شده ودر يك متغير ذخيره مي شو دكه بوسيله صفت "name" از برچسب <field> مشخص شده است .در اين مثال نام برچسب "whattodo"، <field> است .بنابراين مقدار ورودي كاربر بوسيله متغير whattodo قابل دسترسي است.هنگاميكه ورودي وجود داشته باشد و ورودي از كلمات جايز باشد برچسب <filled> ترجمه مي شود .اگر هيچ ورودي وجود نداشته باشد يا هيچ مورد تطابقي پيدا نشود رويدادها <noinput> و <nomatch>، (event) بوسيله مترجم اجرا مي شود. رويدادها مي توانند با مشخص كردن كد مديريت مناسب بين برچسب رويدادها مديريت شوند .بعنوان مثال مي توانيم رويداد <nomatch> رابصورت كد زير مديريت كنيم:
<nomatch> I'm sorry , I didn't get that <break/> </nomatch>

3) تطبيق كلمات ادا شده با انتخابهاي ممكن: برچسب <if> براي تطابق مقدار <field> با مقدار مشخص شده است.در اين مثال تطبيق براي كلمات "next", "start" است.
4) مراحل بعد از تطبيق : هنگاميكه يك تطبيق بوسيله برچسب <if> پيدا شد ، برچسب <goto> فعال مي شود .
صفت "next" از برچسب <goto> براي شناسه فرم كه whattodo است بكار رفته است بنابراين ما مي توانيم يا به همين فرم برگرديم يا به VoiceXML document ديگر برويم و يا به يك URL ديگر submit كنيم.

مثال 2 : از كاربر نوع نوشيدني را مي پرسد و آن را به يك سرور submit مي كند.


مكالمه به صورت زير است :


خلاصه :
صحبت كردن طبيعي ترين رابطي است كه تا كنون براي بشر شناخته شده است و انتقال اطلاعا ت با روشهاي ديگر مطمئنا مشكلتر خواهد بود.فرمت VoiceXML document محيط قوي است كه شنونده كنترل كاملي روي دستكاري داده تنها از طريق رابط صدا دارد. VoiceXML مشكل انتشار يك فرمت استاندارد كه همه نوع افرادي به آن دسترسي داشته باشند را حل كرده است.با تركيب زبان VoiceXML با ديگر سرويسهاي صوتي ،اين زبان به روش قابل قبول و در دستر س تبديل خواهد شد كه اطلاعات را تنها از طريق دستورات ساده صوتي در اختيار ما قرار مي دهد.
كاربردهايي از VoiceXML كه تا كنون ساخته شده است :
  • AT&T : سرويسهاي تجارت الكترونيكي تلفني
  • Lucent : سرويسهاي بانكي تلفني
  • Motorola : توسعه سرويسهاي تجارت الكترونيكي در موبايل
مراجع :
  1. http://www.voicexmlforum.org
  2. http://www.voicexmlplanet.com
  3. http://cafe.bevocal.com
  4. http://www.w3.org/tr/voicexml120/
  5. http://www.sonify.org/tuturial/other/voicexml
  6. http://www.voiceGenie.com
  7. http://www.internet.com
  8. http://www.arsdigita.com/asj/vxml