اس پوسٹ میں، ہم استعمال کرنے کا طریقہ بتاتے ہیں۔ ایمیزون پولی—ایک سرکردہ کلاؤڈ سروس جو متن کو زندگی بھر کی تقریر میں تبدیل کرتی ہے — ویب صفحہ کے مواد کو پڑھنے اور مواد کو اس طرح نمایاں کرنے کے لیے جیسے اسے پڑھا جا رہا ہے۔ ویب صفحہ پر آڈیو پلے بیک شامل کرنے سے صفحہ کی رسائی اور وزیٹر کے تجربے میں بہتری آتی ہے۔ آڈیو سے بڑھا ہوا مواد زیادہ اثر انگیز اور یادگار ہے، صفحہ پر زیادہ ٹریفک لاتا ہے، اور دیکھنے والوں کی خرچ کرنے کی طاقت میں اضافہ کرتا ہے۔ یہ صفحہ شائع کرنے والی کمپنی یا تنظیم کے برانڈ کو بھی بہتر بناتا ہے۔ ٹیکسٹ ٹو اسپیچ ٹیکنالوجی ان کاروباری فوائد کو قابل حصول بناتی ہے۔ ہم Amazon Polly کا استعمال کرتے ہوئے اس مقصد کو حاصل کرنے کا طریقہ دکھا کر اس سفر کو تیز کرتے ہیں۔
یہ اہلیت معذوری والے زائرین کے لیے رسائی کو بہتر بناتی ہے، اور اسے آپ کی تنظیم کی رسائی کی حکمت عملی کے حصے کے طور پر اپنایا جا سکتا ہے۔ بالکل اسی طرح اہم بات یہ ہے کہ یہ معذور افراد کے لیے صفحہ کے تجربے کو بڑھاتا ہے۔ دونوں گروپوں میں قابل قدر اخراجات کی طاقت ہے اور ان صفحات سے زیادہ آزادانہ طور پر خرچ کرتے ہیں جو اپنی توجہ حاصل کرنے کے لیے آڈیو بڑھانے کا استعمال کرتے ہیں۔
حل کا جائزہ
PollyReadsThePage
(PRTP)—جیسا کہ ہم حل کا حوالہ دیتے ہیں—ایک ویب صفحہ پبلشر کو اپنے ویب صفحہ پر آڈیو کنٹرول چھوڑنے کی اجازت دیتا ہے۔ جب آنے والا انتخاب کرتا ہے۔ کھیلیں کنٹرول پر، کنٹرول صفحہ کو پڑھتا ہے اور مواد کو نمایاں کرتا ہے۔ PRTP متن سے تقریر کی ترکیب کے لیے Amazon Polly کی عمومی صلاحیت کا استعمال کرتا ہے۔ یہ ایمیزون پولی کو ہر صفحے کے لیے دو نمونے تیار کرنے کی دعوت دیتا ہے:
- براؤزر کے ذریعے چلنے کے قابل فارمیٹ میں آڈیو مواد: MP3
- تقریر کے نشانات والی فائل جو متن کے ہر جملے کے لیے اشارہ کرتی ہے:
- پلے بیک کے دوران وہ وقت جب جملہ پڑھا جاتا ہے۔
- صفحہ پر جملے کا مقام ظاہر ہوتا ہے۔
جب آنے والا انتخاب کرتا ہے۔ کھیلیں، براؤزر MP3 فائل چلاتا ہے۔ جیسے ہی آڈیو پڑھا جاتا ہے، براؤزر وقت کی جانچ کرتا ہے، مارکس فائل میں تلاش کرتا ہے کہ اس وقت کون سا جملہ پڑھنا ہے، اسے صفحہ پر تلاش کرتا ہے، اور اسے نمایاں کرتا ہے۔
PRTP وزیٹر کو مختلف آوازوں اور زبانوں میں پڑھنے کی اجازت دیتا ہے۔ ہر آواز کو اپنی فائلوں کے جوڑے کی ضرورت ہوتی ہے۔ PRTP اعصابی آوازوں کا استعمال کرتا ہے۔ معاون عصبی آوازوں اور زبانوں کی فہرست کے لیے، دیکھیں اعصابی آوازیں. ایمیزون پولی میں معیاری اور اعصابی آوازوں کی مکمل فہرست کے لیے، دیکھیں ایمیزون پولی میں آوازیں.
ہم دو قسم کے ویب صفحات پر غور کرتے ہیں: جامد اور متحرک صفحات۔ ایک ___ میں مستحکم صفحہ، مواد صفحہ کے اندر موجود ہوتا ہے اور صرف اس وقت تبدیل ہوتا ہے جب صفحہ کا نیا ورژن شائع ہوتا ہے۔ کمپنی ویب بنانے کے عمل کے حصے کے طور پر صفحہ کو روزانہ یا ہفتہ وار اپ ڈیٹ کر سکتی ہے۔ اس قسم کے صفحہ کے لیے، آڈیو فائلوں کو تعمیراتی وقت پر پہلے سے تیار کرنا اور پلے بیک کے لیے ویب سرور پر رکھنا ممکن ہے۔ جیسا کہ درج ذیل اعداد و شمار سے ظاہر ہوتا ہے، اسکرپٹ PRTP Pre-Gen
آڈیو بنانے کے لیے ایمیزون پولی کو طلب کرتا ہے۔ یہ ایچ ٹی ایم ایل صفحہ کو ان پٹ کے طور پر لیتا ہے اور اختیاری طور پر، ایک کنفیگریشن فائل جو یہ بتاتی ہے کہ صفحہ سے کون سا متن نکالنا ہے (Text Extract Config
)۔ اگر ایکسٹریکٹ کنفیگریشن کو چھوڑ دیا جاتا ہے، تو پری جین اسکرپٹ صفحہ کے باڈی سے نکالنے کے لیے متن کا ایک معقول انتخاب کرتی ہے۔ ایمیزون پولی فائلوں کو ایک میں آؤٹ پٹ کرتا ہے۔ ایمیزون سادہ اسٹوریج سروس (ایمیزون S3) بالٹی؛ اسکرپٹ انہیں آپ کے ویب سرور پر کاپی کرتا ہے۔ جب وزیٹر آڈیو چلاتا ہے، براؤزر MP3 کو براہ راست ویب سرور سے ڈاؤن لوڈ کرتا ہے۔ جھلکیوں کے لیے، ایک ڈراپ ان لائبریری، PRTP.js
، پڑھے جانے والے متن کو نمایاں کرنے کے لیے مارکس فائل کا استعمال کرتا ہے۔
کا مواد a متحرک وزیٹر کے تعامل کے جواب میں صفحہ تبدیل ہوتا ہے، اس لیے آڈیو پہلے سے تیار نہیں کیا جا سکتا لیکن اسے متحرک طور پر ترکیب کیا جانا چاہیے۔ جیسا کہ مندرجہ ذیل اعداد و شمار سے ظاہر ہوتا ہے، جب وزیٹر آڈیو چلاتا ہے، تو صفحہ استعمال کرتا ہے۔ PRTP.js
ایمیزون پولی میں آڈیو تیار کرنے کے لیے، اور یہ جامد صفحات کی طرح اسی نقطہ نظر کا استعمال کرتے ہوئے ترکیب شدہ آڈیو کو نمایاں کرتا ہے۔ براؤزر سے AWS خدمات تک رسائی کے لیے، وزیٹر کو AWS شناخت کی ضرورت ہوتی ہے۔ ہم ایک کو استعمال کرنے کا طریقہ دکھاتے ہیں۔ ایمیزون کاگنیٹو وزیٹر کو آڈیو رینڈر کرنے کے لیے ایمیزون پولی اور S3 بالٹی تک کافی رسائی کی اجازت دینے کے لیے شناختی پول۔
Mp3 آڈیو اور اسپیچ مارکس دونوں بنانے کے لیے پولی سروس کو ایک ہی ان پٹ کو دو بار سنتھیسائز کرنے کی ضرورت ہوتی ہے۔ سے رجوع کریں۔ ایمیزون پولی پرائسنگ پیج لاگت کے اثرات کو سمجھنے کے لیے۔ پری جنریشن لاگت کو بچاتی ہے کیونکہ ہر آنے والے کے تعامل کی مانگ کے بجائے تعمیراتی وقت پر ترکیب کی جاتی ہے۔
اس پوسٹ کے ساتھ موجود کوڈ اوپن سورس ریپوزٹری کے طور پر دستیاب ہے۔ GitHub کے.
حل تلاش کرنے کے لیے، ہم ان مراحل پر عمل کرتے ہیں:
- وسائل مرتب کریں، بشمول پری جین بلڈ سرور، S3 بالٹی، ویب سرور، اور Amazon Cognito identity۔
- جامد پری جین بلڈ کو چلائیں اور جامد صفحات کی جانچ کریں۔
- متحرک صفحات کی جانچ کریں۔
شرائط
اس مثال کو چلانے کے لیے، آپ کو ایک کی ضرورت ہے۔ AWS اکاؤنٹ Amazon Polly، Amazon S3، Amazon Cognito، اور (demo مقاصد کے لیے) استعمال کرنے کی اجازت کے ساتھ AWS کلاؤڈ 9.
وسائل کی فراہمی
ہم ایک کا اشتراک کرتے ہیں۔ AWS کلاؤڈ فارمیشن آپ کے اکاؤنٹ میں ایک خود ساختہ ڈیمو ماحول بنانے کے لیے ٹیمپلیٹ پوسٹ کے ساتھ ساتھ پیروی کرنے میں آپ کی مدد کریں۔ اگر آپ اپنے ماحول میں PRTP ترتیب دینے کو ترجیح دیتے ہیں، تو اس میں دی گئی ہدایات کو دیکھیں README.md.
CloudFormation کا استعمال کرتے ہوئے ڈیمو ماحول فراہم کرنے کے لیے، پہلے اس کی ایک کاپی ڈاؤن لوڈ کریں۔ CloudFormation ٹیمپلیٹ. پھر درج ذیل مراحل کو مکمل کریں:
- AWS CloudFormation کنسول پر، منتخب کریں۔ اسٹیک بنائیں۔
- میں سے انتخاب کریں نئے وسائل کے ساتھ (معیاری).
- منتخب کریں ٹیمپلیٹ فائل اپ لوڈ کریں۔
- میں سے انتخاب کریں فائل منتخب کریں اس ٹیمپلیٹ کی مقامی کاپی اپ لوڈ کرنے کے لیے جسے آپ نے ڈاؤن لوڈ کیا ہے۔ فائل کا نام ہے۔
prtp.yml
. - میں سے انتخاب کریں اگلے.
- اپنی پسند کا اسٹیک نام درج کریں۔ بعد میں آپ اس کے متبادل کے طور پر دوبارہ درج کریں۔ <StackName>.
- آپ ڈیفالٹ اقدار کو میں رکھ سکتے ہیں۔ پیرامیٹر سیکشن پر ایک اقتصادی کینڈر سکین کر لیں۔
- میں سے انتخاب کریں اگلے.
- باقی حصوں کے ذریعے جاری رکھیں.
- میں چیک باکسز کو پڑھیں اور منتخب کریں۔ صلاحیتوں سیکشن پر ایک اقتصادی کینڈر سکین کر لیں۔
- میں سے انتخاب کریں اسٹیک بنائیں.
- جب اسٹیک مکمل ہو جائے تو اس کی قدر تلاش کریں۔
BucketName
اسٹیک آؤٹ پٹس میں۔
ہم آپ کو پروڈکشن ماحول استعمال کرنے سے پہلے اپنی سیکیورٹی ٹیم کے ساتھ اسٹیک کا جائزہ لینے کی ترغیب دیتے ہیں۔
ویب سرور اور پری جین سرور کو AWS Cloud9 IDE میں سیٹ کریں۔
اگلا، AWS Cloud9 کنسول پر، ماحول کا پتہ لگائیں۔ PRTPDemoCloud9
CloudFormation اسٹیک کے ذریعہ تخلیق کیا گیا ہے۔ منتخب کریں۔ IDE کھولیں۔ AWS Cloud9 ماحول کو کھولنے کے لیے۔ ایک ٹرمینل ونڈو کھولیں اور درج ذیل کمانڈز چلائیں، جو PRTP کوڈ کو کلون کرتی ہیں، پری جنن انحصار سیٹ کرتی ہیں، اور جانچنے کے لیے ایک ویب سرور شروع کرتی ہیں:
کے لئے <StackName>، وہ نام استعمال کریں جو آپ نے CloudFormation اسٹیک دیا ہے۔ کے لیے <IngressCIDR>, ویب سرور تک رسائی کی اجازت والے IP پتوں کی ایک حد کی وضاحت کریں۔ اپنی مقامی مشین پر براؤزر تک رسائی کو محدود کرنے کے لیے، استعمال کرتے ہوئے اپنا IP پتہ تلاش کریں۔ https://whatismyipaddress.com/ اور شامل کریں /32
رینج کی وضاحت کرنے کے لئے. مثال کے طور پر، اگر آپ کا IP ہے۔ 10.2.3.4, use 10.2.3.4/32
. سرور پورٹ 8080 پر سنتا ہے۔ عوامی IP ایڈریس جس پر سرور سنتا ہے آؤٹ پٹ میں دیا جاتا ہے۔ مثال کے طور پر:
جامد صفحات کی جانچ کریں۔
اپنے براؤزر میں، نیویگیٹ کریں۔ PRTPStaticDefault.html
. (اگر آپ ڈیمو استعمال کر رہے ہیں تو، URL ہے http://<cloud9host>:8080/web/PRTPStaticDefault.html
، کہاں <cloud9host> عوامی IP ایڈریس ہے جو آپ نے IDE کو ترتیب دینے میں دریافت کیا ہے۔) منتخب کریں۔ کھیلیں سب سے اوپر آڈیو کنٹرول پر۔ آڈیو سنیں اور جھلکیاں دیکھیں۔ رفتار بدل کر، آوازیں بدل کر، روک کر، تیزی سے آگے بڑھا کر، اور ریوائنڈ کر کے کنٹرول کو دریافت کریں۔ مندرجہ ذیل اسکرین شاٹ صفحہ دکھاتا ہے؛ متن "چھپا ہوا پیراگراف چھوڑتا ہے" کو نمایاں کیا گیا ہے کیونکہ یہ فی الحال پڑھا جا رہا ہے۔
کے لیے بھی کوشش کریں۔ PRTPStaticConfig.html
اور PRTPStaticCustom.html
. نتائج ایک جیسے ہیں۔ مثال کے طور پر، تینوں نے بلی کی تصویر کے لیے Alt متن پڑھا ("بلی کی بے ترتیب تصویر")۔ تینوں نے NE، NW، SE، اور SW کو مکمل الفاظ کے طور پر پڑھا ("شمال مشرق،" "شمال مغرب،" "جنوب مشرق،" "جنوب مغرب")، ایمیزون پولی لغت سے فائدہ اٹھاتے ہوئے۔
آڈیو میں بنیادی فرق دیکھیں:
PRTPStaticDefault.html
صفحہ کے باڈی میں موجود تمام متن کو پڑھتا ہے، جس میں نچلے حصے میں "ایک لفظ میں آپ کے خیالات"، "استفسار جمع کروائیں،" "آخری بار اپریل 1، 2020 کو اپ ڈیٹ کیا گیا،" اور "دیو ٹیم کے لیے سوالات" شامل ہیں۔PRTPStaticConfig.html
اورPRTPStaticCustom.html
ان کو مت پڑھیں کیونکہ یہ واضح طور پر تقریر کی ترکیب سے لپیٹ کو خارج کر دیتے ہیں۔PRTPStaticCustom.html
پڑھتا ہے کیو بی بیسٹ سیلرز میز دوسروں سے مختلف ہے. یہ صرف پہلی تین قطاروں کو پڑھتا ہے، اور ہر قطار کے لیے قطار کا نمبر پڑھتا ہے۔ یہ ہر قطار کے کالموں کو دہراتا ہے۔PRTPStaticCustom.html
ٹیبل کے ریڈ آؤٹ کو تیار کرنے کے لیے حسب ضرورت تبدیلی کا استعمال کرتا ہے۔ دوسرے صفحات ڈیفالٹ ٹیبل رینڈرنگ کا استعمال کرتے ہیں۔PRTPStaticCustom.html
"ٹام بریڈی" کو باقی متن سے زیادہ بلند آواز میں پڑھتا ہے۔ یہ اسپیچ سنتھیسس مارک اپ لینگویج (SSML) استعمال کرتا ہے۔prosody
ٹام بریڈی کے پڑھنے کو تیار کرنے کے لیے ٹیگ کریں۔ دوسرے صفحات اس طرح تیار نہیں ہوتے ہیں۔PRTPStaticCustom.html
, ایک حسب ضرورت تبدیلی کی بدولت، NW, SW, NE, SE آرڈر میں مین ٹائلز پڑھتا ہے۔ یعنی، یہ پڑھتا ہے "آج کے مضامین،" "دن کا اقتباس،" "دن کی تصویر،" "دن کے لطیفے۔" دوسرے صفحات اس ترتیب سے پڑھتے ہیں جس ترتیب سے ٹائلیں قدرتی NW, NE, SW, SE میں ظاہر ہوتی ہیں وہ HTML میں ظاہر ہوتی ہیں: "آج کے مضامین،" "دن کی تصویر،" "دن کا اقتباس،" "جوکس آف دی دن۔"
آئیے مزید گہرائی میں دیکھیں کہ آڈیو کیسے تیار ہوتا ہے، اور صفحہ متن کو کیسے نمایاں کرتا ہے۔
جامد پری جنریٹر
ہمارے GitHub ریپو میں پہلے سے تیار کردہ آڈیو فائلیں شامل ہیں۔ PRPTStatic
صفحات، لیکن اگر آپ انہیں خود بنانا چاہتے ہیں، AWS Cloud9 IDE میں bash شیل سے، درج ذیل کمانڈز کو چلائیں:
اب دیکھتے ہیں کہ وہ اسکرپٹ کیسے کام کرتی ہیں۔
پہلے سے طے شدہ کیس
ہم شروع کرتے ہیں gen_default.sh
:
اسکرپٹ کا آغاز ازگر پروگرام کو چلانے سے ہوتا ہے۔ FixHTML.py
ماخذ HTML فائل بنانے کے لیے PRTPStaticDefault.html
اچھی طرح سے قائم. یہ فائل کے اچھی طرح سے تشکیل شدہ ورژن کو لکھتا ہے۔ example/tmp_wff.html
. یہ قدم دو وجوہات کی بنا پر اہم ہے:
- زیادہ تر سورس ایچ ٹی ایم ایل اچھی طرح سے نہیں بنتا۔ یہ مرحلہ سورس HTML کو اچھی طرح سے تشکیل دینے کے لیے مرمت کرتا ہے۔ مثال کے طور پر، بہت سے HTML صفحات بند نہیں ہوتے ہیں۔
P
عناصر. یہ قدم انہیں بند کر دیتا ہے۔ - ہم اس بات پر نظر رکھتے ہیں کہ HTML صفحہ میں ہمیں متن کہاں ملتا ہے۔ ہمیں اسی دستاویز آبجیکٹ ماڈل (DOM) ڈھانچے کا استعمال کرتے ہوئے مقامات کو ٹریک کرنے کی ضرورت ہے جو براؤزر استعمال کرتا ہے۔ مثال کے طور پر، براؤزر خود بخود a کا اضافہ کرتا ہے۔
TBODY
ایکTABLE
. Python پروگرام براؤزر کی طرح ہی اچھی طرح سے مرمت کرتا ہے۔
gen_ssml.sh
اچھی طرح سے بنائے گئے HTML کو ان پٹ کے طور پر لیتا ہے، اس پر ایک XML اسٹائل شیٹ ٹرانسفارمیشن (XSLT) ٹرانسفارمیشن کا اطلاق کرتا ہے، اور SSML فائل کو آؤٹ پٹ کرتا ہے۔ (ایس ایس ایم ایل ایمیزون پولی میں یہ کنٹرول کرنے کے لیے زبان ہے کہ متن سے آڈیو کیسے پیش کیا جاتا ہے۔) موجودہ مثال میں، ان پٹ ہے example/tmp_wff.html
. آؤٹ پٹ ہے۔ example/tmp.ssml
. ٹرانسفارم کا کام یہ طے کرنا ہے کہ HTML سے کون سا متن نکالا جائے اور Amazon Polly کو فیڈ کیا جائے۔ generic.xslt
زیادہ تر ویب صفحات کے لیے ایک سمجھدار ڈیفالٹ XSLT ٹرانسفارم ہے۔ مندرجہ ذیل مثال کے کوڈ کے ٹکڑوں میں، یہ آڈیو کنٹرول، HTML ہیڈر کے ساتھ ساتھ HTML عناصر جیسے script
اور form
. یہ پوشیدہ وصف والے عناصر کو بھی خارج کرتا ہے۔ اس میں ایسے عناصر شامل ہیں جو عام طور پر متن پر مشتمل ہوتے ہیں، جیسے P
, H1
، اور SPAN
. ان کے لیے، یہ عنصر کا مکمل XPath اظہار، اور عنصر کی قدر سمیت ایک نشان دونوں پیش کرتا ہے۔
درج ذیل SSML کا ایک ٹکڑا ہے جو پیش کیا گیا ہے۔ یہ ایمیزون پولی کو ان پٹ کے طور پر کھلایا جاتا ہے۔ دھیان دیں، مثال کے طور پر، کہ آڈیو میں متن "چھپا ہوا پیراگراف چھوڑتا ہے" پڑھنا ہے، اور ہم اسے ایک نشان کے ساتھ جوڑتے ہیں، جو ہمیں بتاتا ہے کہ یہ متن XPath اظہار کے ذریعے دیے گئے صفحہ پر موجود مقام پر ہوتا ہے۔ /html/body[1]/div[2]/ul[1]/li[1]
.
ایمیزون پولی میں آڈیو بنانے کے لیے، ہم اسکرپٹ کو کال کرتے ہیں۔ run_polly.sh
. یہ چلاتا ہے۔ AWS کمانڈ لائن انٹرفیس (AWS CLI) کمانڈ aws polly start-speech-synthesis-task
دو بار: ایک بار MP3 آڈیو بنانے کے لیے، اور دوبارہ مارکس فائل بنانے کے لیے۔ چونکہ جنریشن غیر مطابقت پذیر ہے، اس لیے اسکرپٹ اس وقت تک پول کرتا ہے جب تک کہ اسے مخصوص S3 بالٹی میں آؤٹ پٹ نہ مل جائے۔ جب اسے آؤٹ پٹ مل جاتا ہے، تو یہ بلڈ سرور پر ڈاؤن لوڈ ہوتا ہے اور فائلوں کو کاپی کرتا ہے۔ web/polly
فولڈر مندرجہ ذیل ویب فولڈرز کی فہرست ہے:
- PRTPStaticDefault.html
- PRTPStaticConfig.html
- PRTPSstaticCustom.html
- PRTP.js
- polly/PRTPStaticDefault/Joanna.mp3, Joanna.marks, Matthew.mp3, Matthew.marks
- polly/PRTPStaticConfig/Joanna.mp3, Joanna.marks, Matthew.mp3, Matthew.marks
- polly/PRTPStaticCustom/Joanna.mp3, Joanna.marks, Matthew.mp3, Matthew.marks
ہر صفحہ میں آواز کے لیے مخصوص MP3 کا اپنا سیٹ ہوتا ہے اور فائلوں کو نشان زد کرتا ہے۔ یہ فائلیں پہلے سے تیار کردہ فائلیں ہیں۔ صفحہ کو رن ٹائم پر ایمیزون پولی کو طلب کرنے کی ضرورت نہیں ہے۔ فائلیں ویب کی تعمیر کا حصہ ہیں۔
ترتیب سے چلنے والا کیس
اگلا، غور کریں gen_config.sh
:
اسکرپٹ پہلے سے طے شدہ کیس میں اسکرپٹ سے ملتا جلتا ہے، لیکن بولڈ لائنیں بنیادی فرق کی نشاندہی کرتی ہیں۔ ہمارا نقطہ نظر تشکیل پر مبنی ہے۔ ہم صفحہ سے نکالے جانے والے مواد کو یہ بتا کر تیار کرتے ہیں کہ کنفیگریشن کے ذریعے کیا نکالنا ہے، کوڈ کے ذریعے نہیں۔ خاص طور پر، ہم JSON فائل استعمال کرتے ہیں۔ transform_config.json
، جو یہ بتاتا ہے کہ شامل کیا جانے والا مواد IDs والے عناصر ہیں۔ title
, main
, maintable
، اور qbtable
. ID کے ساتھ عنصر wrapup
خارج کر دیا جانا چاہئے. درج ذیل کوڈ دیکھیں:
ہم Python پروگرام چلاتے ہیں۔ ModGenericXSLT.py
ترمیم کرنے کے لئے generic.xslt
, پہلے سے طے شدہ صورت میں استعمال کیا جاتا ہے، ان شمولیتوں اور اخراجوں کو استعمال کرنے کے لیے جن کی ہم نے وضاحت کی ہے transform_config.json
. پروگرام نتائج کو ایک عارضی فائل میں لکھتا ہے (example/tmp.xslt
)، جسے یہ گزرتا ہے۔ gen_ssml.sh
جیسا کہ اس کا XSLT تبدیل ہوتا ہے۔
یہ کم کوڈ والا آپشن ہے۔ ویب پبلشر کو یہ جاننے کی ضرورت نہیں ہے کہ XSLT کیسے لکھنا ہے۔ لیکن انہیں HTML صفحہ کی ساخت اور اس کے مرکزی تنظیمی عناصر میں استعمال ہونے والی IDs کو سمجھنے کی ضرورت ہے۔
حسب ضرورت کیس
آخر میں، غور کریں gen_custom.sh
:
یہ اسکرپٹ ڈیفالٹ اسکرپٹ سے تقریباً مماثل ہے، سوائے اس کے کہ یہ اپنا XSLT استعمال کرتا ہے۔example/custom.xslt
- عام XSLT کے بجائے۔ ذیل میں XSLT کا ایک ٹکڑا ہے:
اگر آپ کوڈ کا تفصیل سے مطالعہ کرنا چاہتے ہیں تو GitHub ریپو میں موجود اسکرپٹس اور پروگراموں کو دیکھیں۔
براؤزر سیٹ اپ اور ہائی لائٹس
جامد صفحات میں ایک HTML5 آڈیو کنٹرول شامل ہے، جو ایمیزون پولی کی طرف سے تیار کردہ اور ویب سرور پر موجود MP3 فائل کو اپنے آڈیو سورس کے طور پر لیتا ہے:
لوڈ کے وقت، صفحہ ایمیزون پولی سے تیار کردہ مارکس فائل کو بھی لوڈ کرتا ہے۔ یہ میں ہوتا ہے PRTP.js
فائل، جس میں HTML صفحہ شامل ہے۔ مندرجہ ذیل کے لیے مارکس فائل کا ایک ٹکڑا ہے۔ PRTPStaticDefault
:
آڈیو پلے بیک کے دوران، ایک آڈیو ٹائمر ایونٹ ہینڈلر ہوتا ہے۔ PRTP.js
جو آڈیو کا موجودہ وقت چیک کرتا ہے، نمایاں کرنے کے لیے متن تلاش کرتا ہے، صفحہ پر اس کا مقام تلاش کرتا ہے، اور اسے نمایاں کرتا ہے۔ جس متن پر روشنی ڈالی جائے وہ قسم کا اندراج ہے۔ sentence
مارکس فائل میں۔ مقام SSML قسم کے اندراج کے نام وصف میں XPath اظہار ہے جو جملے سے پہلے ہے۔ مثال کے طور پر، اگر وقت 18400 ہے، مارکس فائل کے مطابق، جس جملے کو ہائی لائٹ کیا جائے وہ ہے "Skips hidden paragraph" جو کہ 18334 سے شروع ہوتا ہے۔ مقام 17667 کے وقت SSML اندراج ہے: /html/body[1]/div[2]/ul[1]/li[1]
.
متحرک صفحات کی جانچ کریں۔
صفحہ PRTPDynamic.html
ڈیفالٹ، ترتیب سے چلنے والے، اور حسب ضرورت آڈیو نکالنے کے طریقوں کا استعمال کرتے ہوئے متحرک آڈیو ریڈ بیک کو ظاہر کرتا ہے۔
پہلے سے طے شدہ کیس
اپنے براؤزر میں، نیویگیٹ کریں۔ PRTPDynamic.html
. صفحہ میں ایک سوال کا پیرامیٹر ہے، dynOption
، جو اقدار کو قبول کرتا ہے۔ default
, config
، اور custom
. یہ پہلے سے طے شدہ ہے۔ default
، لہذا آپ اس معاملے میں اسے چھوڑ سکتے ہیں۔ صفحہ میں متحرک مواد کے ساتھ دو حصے ہیں:
- تازہ ترین مضامین - دن بھر میں اکثر تبدیلیاں
- یونانی فلسفی تاریخ کے لحاظ سے تلاش کرتے ہیں۔ - وزیٹر کو تاریخ کے مطابق یونانی فلسفیوں کو تلاش کرنے کی اجازت دیتا ہے اور نتائج کو ٹیبل میں دکھاتا ہے
میں کچھ مواد بنائیں یونانی فلاسفر سیکشن -800 سے 0 کی تاریخ کی حد درج کرکے، جیسا کہ مثال میں دکھایا گیا ہے۔ پھر منتخب کریں۔ مل.
اب منتخب کرکے آڈیو چلائیں۔ کھیلیں آڈیو کنٹرول میں۔
پردے کے پیچھے، صفحہ آڈیو کو رینڈر کرنے اور چلانے کے لیے درج ذیل کوڈ کو چلاتا ہے۔
پہلے یہ فنکشن کو کال کرتا ہے۔ buildSSMLFromDefault
in PRTP.js
HTML صفحہ کے جسم سے زیادہ تر متن نکالنے کے لیے۔ وہ فنکشن DOM کے درخت پر چلتا ہے، عام عناصر جیسے متن کی تلاش میں p
, h1
, pre
, span
، اور td
. یہ ایسے عناصر میں متن کو نظر انداز کرتا ہے جو عام طور پر بلند آواز سے پڑھنے کے لیے متن پر مشتمل نہیں ہوتے، جیسے audio
, option
، اور script
. یہ ایمیزون پولی کو ان پٹ کرنے کے لیے SSML مارک اپ بناتا ہے۔ مندرجہ ذیل ایک ٹکڑا ہے جس میں سے پہلی قطار کو نکالنا دکھایا گیا ہے۔ philosopher
ٹیبل:
۔ chooseRenderAudio
میں کام PRTP.js
Amazon Cognito، Amazon S3، اور Amazon Polly کے لیے AWS SDK شروع کرنے سے شروع ہوتا ہے۔ یہ ابتداء صرف ایک بار ہوتی ہے۔ اگر chooseRenderAudio
دوبارہ درخواست کی جاتی ہے کیونکہ صفحہ کا مواد بدل گیا ہے، ابتدا کو چھوڑ دیا گیا ہے۔ درج ذیل کوڈ دیکھیں:
یہ ایمیزون پولی سے MP3 آڈیو تیار کرتا ہے۔ جنریشن چھوٹے SSML ان پٹس کے لیے ہم وقت ساز ہے اور بڑے SSML ان پٹس (3 حروف سے زیادہ) کے لیے غیر مطابقت پذیر (S6,000 بالٹی کو بھیجے جانے والے آؤٹ پٹ کے ساتھ)۔ ہم وقت سازی کے معاملے میں، ہم Amazon Polly سے تجویز کردہ URL کا استعمال کرتے ہوئے MP3 فائل فراہم کرنے کو کہتے ہیں۔ جب ترکیب شدہ آؤٹ پٹ تیار ہو جائے تو ہم سیٹ کریں۔ src
اس یو آر ایل میں آڈیو کنٹرول کی خصوصیت اور کنٹرول لوڈ کریں۔ اس کے بعد ہم مارکس فائل کی درخواست کرتے ہیں اور اسے اسی طرح لوڈ کرتے ہیں جیسا کہ سٹیٹک کیس میں ہوتا ہے۔ درج ذیل کوڈ دیکھیں:
ترتیب سے چلنے والا کیس
اپنے براؤزر میں، نیویگیٹ کریں۔ PRTPDynamic.html?dynOption=config
. آڈیو چلائیں۔ آڈیو پلے بیک ڈیفالٹ کیس سے ملتا جلتا ہے، لیکن اس میں معمولی فرق ہیں۔ خاص طور پر، کچھ مواد چھوڑ دیا گیا ہے۔
پردے کے پیچھے، استعمال کرتے وقت config
آپشن، صفحہ ڈیفالٹ کیس سے مختلف طریقے سے مواد نکالتا ہے۔ پہلے سے طے شدہ صورت میں، صفحہ استعمال کرتا ہے۔ buildSSMLFromDefault
. config-driven کیس میں، صفحہ ان حصوں کی وضاحت کرتا ہے جن کو وہ شامل اور خارج کرنا چاہتا ہے:
۔ buildSSMLFromConfig
فنکشن، میں بیان کیا گیا ہے۔ PRTP.js
، ہر ایک سیکشن میں DOM ٹری چلتا ہے جس کے تحت ID فراہم کی گئی ہے۔ inclusions
. یہ ہر ایک سے مواد نکالتا ہے اور SSML دستاویز بنانے کے لیے مخصوص ترتیب میں ان کو ایک ساتھ جوڑتا ہے۔ اس میں ان سیکشنز کو شامل نہیں کیا گیا ہے جن کی وضاحت کی گئی ہے۔ exclusions
. یہ ہر سیکشن سے اسی طرح مواد نکالتا ہے۔ buildSSMLFromDefault
صفحہ کے جسم سے مواد نکالتا ہے۔
حسب ضرورت کیس
اپنے براؤزر میں، نیویگیٹ کریں۔ PRTPDynamic.html?dynOption=custom
. آڈیو چلائیں۔ تین نمایاں فرق ہیں۔ آئیے ان کو نوٹ کریں اور پردے کے پیچھے چلنے والے کسٹم کوڈ پر غور کریں:
- یہ NW، SW، NE، SE آرڈر میں مین ٹائلوں کو پڑھتا ہے۔ کسٹم کوڈ ان سیل بلاکس میں سے ہر ایک کو حاصل کرتا ہے۔
maintable
اور انہیں NW, SW, NE, SE آرڈر میں SSML میں شامل کرتا ہے:
- "ٹام بریڈی" اونچی آواز میں بولا جاتا ہے۔ کسٹم کوڈ "ٹام بریڈی" ٹیکسٹ کو SSML کے اندر رکھتا ہے۔
prosody
ٹیگ:
- یہ کوارٹر بیک ٹیبل کی صرف پہلی تین قطاریں پڑھتا ہے۔ یہ ہر قطار کے لیے کالم ہیڈر پڑھتا ہے۔ GitHub ریپو میں کوڈ کو چیک کریں کہ یہ کیسے لاگو ہوتا ہے.
صاف کرو
مستقبل کے چارجز سے بچنے کے لیے، CloudFormation اسٹیک کو حذف کریں۔
نتیجہ
اس پوسٹ میں، ہم نے ایک اعلیٰ قیمت والے کاروباری مسئلے کا ایک تکنیکی حل دکھایا ہے: ویب پیج کے مواد کو پڑھنے کے لیے Amazon Polly کا استعمال کیسے کیا جائے اور اس کے پڑھے جانے والے مواد کو نمایاں کریں۔ ہم نے اسے جامد اور متحرک دونوں صفحات کا استعمال کرتے ہوئے دکھایا۔ صفحہ سے مواد نکالنے کے لیے، ہم نے DOM traversal اور XSLT کا استعمال کیا۔ نمایاں کرنے کی سہولت کے لیے، ہم نے Amazon Polly میں اسپیچ مارکس کی صلاحیت کا استعمال کیا۔
ایمیزون پولی کے بارے میں مزید جانیں۔ سروس صفحہ.
تبصرے میں سوالات پوچھنے کے لئے آزاد محسوس کریں۔
مصنفین کے بارے میں
مائیک ہیوی AWS کے لیے 25 سال سے زیادہ کے تجربے کے ساتھ انٹرپرائز ایپلی کیشنز بنانے کا ایک حل آرکیٹیکٹ ہے۔ مائیک دو کتابوں اور متعدد مضامین کے مصنف ہیں۔ اس کے ایمیزون پر جائیں۔ مصنف کا صفحہ مزید پڑھنے کے لئے.
ونیت کچاواہا مشین لرننگ میں مہارت کے ساتھ AWS میں ایک حل آرکیٹیکٹ ہے۔ وہ صارفین کو AWS پر قابل توسیع، محفوظ، اور لاگت سے موثر کام کے بوجھ میں مدد کرنے کے لیے ذمہ دار ہے۔
- رسائی پذیری
- AI
- ai آرٹ
- AI آرٹ جنریٹر
- عی روبوٹ
- ایمیزون پولی
- مصنوعی ذہانت
- مصنوعی ذہانت کا سرٹیفیکیشن
- بینکنگ میں مصنوعی ذہانت
- مصنوعی ذہانت والا روبوٹ
- مصنوعی ذہانت والے روبوٹ
- مصنوعی ذہانت سافٹ ویئر
- آڈیو
- AWS
- AWS مشین لرننگ
- blockchain
- بلاکچین کانفرنس
- coingenius
- بات چیت مصنوعی ذہانت
- crypto کانفرنس ai
- dall-e
- گہری سیکھنے
- ڈوم
- گوگل عی
- نمایاں کریں
- اجاگر کرنا۔
- HTML
- جاوا سکرپٹ
- مشین لرننگ
- پلاٹا
- افلاطون اے
- افلاطون ڈیٹا انٹیلی جنس
- افلاطون گیم
- پلیٹو ڈیٹا
- پلیٹو گیمنگ
- پیمانہ ai
- نحو
- متن سے تقریر۔
- XSLT
- زیفیرنیٹ