در این پست نحوه استفاده را نشان می دهیم آمازون پولی—یک سرویس ابری پیشرو که متن را به گفتار واقعی تبدیل می کند—برای خواندن محتوای یک صفحه وب و برجسته کردن محتوا در حین خواندن. افزودن پخش صدا به صفحه وب، دسترسی و تجربه بازدیدکنندگان از صفحه را بهبود می بخشد. محتوای تقویتشده صوتی تأثیرگذارتر و خاطرهانگیزتر است، ترافیک بیشتری را به صفحه جذب میکند و از قدرت هزینهکردن بازدیدکنندگان بهره میبرد. همچنین برند شرکت یا سازمانی را که صفحه را منتشر می کند بهبود می بخشد. فناوری تبدیل متن به گفتار این مزایای تجاری را قابل دستیابی می کند. ما با نشان دادن چگونگی دستیابی به این هدف با استفاده از آمازون پولی، این سفر را تسریع می کنیم.
این قابلیت دسترسی بازدیدکنندگان دارای معلولیت را بهبود می بخشد و می تواند به عنوان بخشی از استراتژی دسترسی سازمان شما به کار گرفته شود. به همان اندازه مهم، تجربه صفحه را برای بازدیدکنندگان بدون معلولیت افزایش می دهد. هر دو گروه قدرت خرج قابل توجهی دارند و از صفحاتی که از بهبود صدا برای جلب توجه آنها استفاده می کنند، آزادانه خرج می کنند.
بررسی اجمالی راه حل
PollyReadsThePage
(PRTP) - همانطور که به راه حل اشاره می کنیم - به ناشر صفحه وب اجازه می دهد تا کنترل صوتی را روی صفحه وب خود قرار دهد. زمانی که بازدید کننده انتخاب می کند بازی در کنترل، کنترل صفحه را می خواند و محتوا را برجسته می کند. PRTP از قابلیت عمومی Amazon Polly برای ترکیب گفتار از متن استفاده می کند. آمازون پولی را فراخوانی می کند تا برای هر صفحه دو مصنوع تولید کند:
- محتوای صوتی در قالب قابل پخش توسط مرورگر: MP3
- یک فایل علامتگذاری گفتار که برای هر جمله از متن نشان میدهد:
- زمان در حین پخش که جمله خوانده می شود
- مکان روی صفحه جمله ظاهر می شود
زمانی که بازدید کننده انتخاب می کند بازی، مرورگر فایل MP3 را پخش می کند. همانطور که صدا خوانده می شود، مرورگر زمان را بررسی می کند، در فایل علامت گذاری می یابد که کدام جمله را در آن زمان بخواند، آن را در صفحه قرار می دهد و آن را برجسته می کند.
PRTP به بازدید کننده اجازه می دهد تا به صداها و زبان های مختلف بخواند. هر صدا به جفت فایل خاص خود نیاز دارد. PRTP از صداهای عصبی استفاده می کند. برای لیستی از صداها و زبان های عصبی پشتیبانی شده، رجوع کنید صداهای عصبی. برای لیست کامل صداهای استاندارد و عصبی در آمازون پولی، نگاه کنید صداها در آمازون پولی.
ما دو نوع صفحه وب را در نظر می گیریم: صفحات استاتیک و پویا. در یک ایستا در صفحه، محتوا در داخل صفحه قرار می گیرد و تنها زمانی تغییر می کند که نسخه جدیدی از صفحه منتشر شود. این شرکت ممکن است به عنوان بخشی از فرآیند ساخت وب خود، صفحه را روزانه یا هفتگی به روز کند. برای این نوع صفحات، می توان فایل های صوتی را از قبل در زمان ساخت تولید کرد و آنها را برای پخش در وب سرور قرار داد. همانطور که در شکل زیر نشان داده شده است، اسکریپت PRTP Pre-Gen
آمازون پولی را برای تولید صدا فراخوانی می کند. به عنوان ورودی خود صفحه HTML و به صورت اختیاری، یک فایل پیکربندی است که مشخص می کند کدام متن از صفحه استخراج شود (Text Extract Config
). اگر پیکربندی استخراج حذف شود، اسکریپت pre-gen انتخاب معقولی از متن را برای استخراج از بدنه صفحه انجام می دهد. آمازون پولی فایل ها را در یک خروجی می دهد سرویس ذخیره سازی ساده آمازون سطل (Amazon S3); اسکریپت آنها را در وب سرور شما کپی می کند. هنگامی که بازدید کننده صدا را پخش می کند، مرورگر MP3 را مستقیماً از سرور وب دانلود می کند. برای نکات برجسته، یک کتابخانه کشویی، PRTP.js
، از فایل علامت ها برای برجسته کردن متن خوانده شده استفاده می کند.
محتوای الف پویا صفحه در پاسخ به تعامل بازدیدکننده تغییر می کند، بنابراین صدا را نمی توان از قبل تولید کرد بلکه باید به صورت پویا ترکیب شود. همانطور که در شکل زیر نشان داده شده است، هنگامی که بازدید کننده صدا را پخش می کند، صفحه از آن استفاده می کند PRTP.js
برای تولید صدا در آمازون پولی، و صدای سنتز شده را با استفاده از همان رویکرد صفحات استاتیک برجسته می کند. برای دسترسی به خدمات AWS از مرورگر، بازدیدکننده به یک هویت AWS نیاز دارد. ما نحوه استفاده از an را نشان می دهیم Cognito آمازون مخزن هویت به بازدیدکننده اجازه می دهد تا به اندازه کافی به آمازون پولی و سطل S3 برای ارائه صدا دسترسی داشته باشد.
برای تولید هر دو علامت صوتی Mp3 و گفتار، باید سرویس Polly یک ورودی را دو بار ترکیب کند. رجوع به صفحه قیمت گذاری آمازون پولی برای درک پیامدهای هزینه پیش تولید باعث صرفه جویی در هزینه ها می شود زیرا سنتز در زمان ساخت به جای درخواست برای هر تعامل بازدید کننده انجام می شود.
کد همراه این پست به عنوان یک مخزن منبع باز در دسترس است GitHub.
برای بررسی راه حل، مراحل زیر را دنبال می کنیم:
- منابع را تنظیم کنید، از جمله سرور ساخت پیش از نسل، سطل S3، وب سرور و هویت آمازون Cognito.
- استاتیک پیش نسل را اجرا کنید و صفحات استاتیک را آزمایش کنید.
- تست صفحات پویا
پیش نیازها
برای اجرای این مثال به یک حساب AWS با اجازه استفاده از Amazon Polly، Amazon S3، Amazon Cognito و (برای اهداف نمایشی) AWS Cloud9.
تامین منابع
ما یک را به اشتراک می گذاریم AWS CloudFormation قالبی برای ایجاد یک محیط نمایشی مستقل در حساب خود تا به شما کمک کند تا پست را دنبال کنید. اگر ترجیح می دهید PRTP را در محیط خود راه اندازی کنید، به دستورالعمل های موجود در آن مراجعه کنید README.md.
برای تهیه محیط آزمایشی با استفاده از CloudFormation، ابتدا یک کپی از آن را دانلود کنید قالب CloudFormation. سپس مراحل زیر را انجام دهید:
- در کنسول AWS CloudFormation، را انتخاب کنید پشته ایجاد کنید.
- را انتخاب کنید با منابع جدید (استاندارد).
- انتخاب کنید یک فایل قالب بارگذاری کنید.
- را انتخاب کنید انتخاب فایل برای آپلود نسخه محلی قالبی که دانلود کرده اید. نام فایل است
prtp.yml
. - را انتخاب کنید بعدی.
- نام پشته دلخواه خود را وارد کنید. بعداً دوباره این را به عنوان جایگزینی وارد می کنید .
- می توانید مقادیر پیش فرض را در قسمت نگه دارید پارامترهای بخش.
- را انتخاب کنید بعدی.
- قسمت های باقی مانده را ادامه دهید.
- چک باکس های موجود در را بخوانید و انتخاب کنید توانمندی ها بخش.
- را انتخاب کنید پشته ایجاد کنید.
- وقتی پشته کامل شد، مقدار آن را پیدا کنید
BucketName
در خروجی های پشته
ما شما را تشویق می کنیم که پشته را با تیم امنیتی خود قبل از استفاده از آن در محیط تولید بررسی کنید.
سرور وب و سرور پیش نسل را در یک AWS Cloud9 IDE راه اندازی کنید
در مرحله بعد، در کنسول AWS Cloud9، محیط را پیدا کنید PRTPDemoCloud9
ایجاد شده توسط پشته CloudFormation. انتخاب کنید IDE را باز کنید برای باز کردن محیط AWS Cloud9. یک پنجره ترمینال را باز کنید و دستورات زیر را اجرا کنید، که کد PRTP را شبیه سازی می کند، وابستگی های پیش از نسل را تنظیم می کند و یک وب سرور را برای آزمایش با آن راه اندازی می کند:
برای ، از نامی که به پشته CloudFormation دادید استفاده کنید. برای ، محدوده ای از آدرس های 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
، که در آن آدرس IP عمومی است که در راه اندازی IDE کشف کردید.) انتخاب کنید بازی روی کنترل صوتی در بالا. به صوت گوش دهید و نکات برجسته را تماشا کنید. با تغییر سرعت، تغییر صدا، مکث، جلو بردن سریع و عقب بردن، کنترل را کاوش کنید. تصویر زیر صفحه را نشان می دهد. متن "پرش از پاراگراف پنهان" برجسته شده است زیرا در حال حاضر در حال خواندن است.
برای همین هم امتحان کنید PRTPStaticConfig.html
و PRTPStaticCustom.html
. نتایج مشابه است. به عنوان مثال، هر سه متن جایگزین برای عکس گربه ("تصویر تصادفی یک گربه") را بخوانید. هر سه NE، NW، SE و SW را به عنوان کلمات کامل ("شمال شرقی"، "شمال غربی"، "جنوب شرقی"، "جنوب غربی") میخوانند و از واژگان آمازون پولی بهره میبرند.
به تفاوت های اصلی در صدا توجه کنید:
PRTPStaticDefault.html
تمام متن را در بدنه صفحه میخواند، از جمله بخش جمعبندی در پایین با «افکار شما در یک کلمه»، «ارسال پرسش»، «آخرین بهروزرسانی ۱ آوریل ۲۰۲۰» و «سوالاتی برای تیم توسعهدهنده».PRTPStaticConfig.html
وPRTPStaticCustom.html
اینها را نخوانید زیرا آنها به صراحت کل مطالب را از ترکیب گفتار حذف می کنند.PRTPStaticCustom.html
می خواند پرفروش ترین QB جدول متفاوت از بقیه فقط سه ردیف اول را می خواند و شماره ردیف را برای هر ردیف می خواند. ستون ها را برای هر سطر تکرار می کند.PRTPStaticCustom.html
از یک تبدیل سفارشی برای تنظیم بازخوانی جدول استفاده می کند. سایر صفحات از رندر جدول پیش فرض استفاده می کنند.PRTPStaticCustom.html
"تام برادی" را با صدای بلندتر از بقیه متن می خواند. از زبان نشانه گذاری سنتز گفتار (SSML) استفاده می کند.prosody
برای خیاط خواندن تام بردی تگ کنید. صفحات دیگر به این شکل طراحی نمی شوند.PRTPStaticCustom.html
به لطف تبدیل سفارشی، کاشی های اصلی را به ترتیب NW، SW، NE، SE می خواند. یعنی «مقالات امروز»، «نقل قول روز»، «عکس روز»، «جوکهای روز» را میخواند. صفحات دیگر به ترتیبی که کاشیها به ترتیب طبیعی NW، NE، SW، SE در HTML ظاهر میشوند خوانده میشوند: «مقالات امروز»، «عکس روز»، «نقل قول روز»، «جوکهای روز» روز.»
بیایید عمیق تر به چگونگی تولید صدا و نحوه برجسته کردن متن در صفحه بپردازیم.
پیش ژنراتور استاتیک
مخزن GitHub ما شامل فایلهای صوتی از پیش تولید شده است PRPTStatic
صفحات، اما اگر می خواهید خودتان آنها را از پوسته bash در AWS Cloud9 IDE تولید کنید، دستورات زیر را اجرا کنید:
حالا بیایید ببینیم آن اسکریپت ها چگونه کار می کنند.
مورد پیش فرض
ما شروع میکنیم gen_default.sh
:
اسکریپت با اجرای برنامه پایتون شروع می شود FixHTML.py
برای ساخت فایل HTML منبع PRTPStaticDefault.html
خوب شکل گرفته نسخه خوش فرم فایل را می نویسد example/tmp_wff.html
. این مرحله به دو دلیل حیاتی است:
- بیشتر HTML منبع به خوبی شکل نگرفته است. این مرحله HTML منبع را تعمیر می کند تا به خوبی شکل بگیرد. به عنوان مثال، بسیاری از صفحات HTML بسته نمی شوند
P
عناصر. این مرحله آنها را می بندد. - ما جایی را در صفحه HTML که متن را پیدا می کنیم، پیگیری می کنیم. ما باید مکانها را با استفاده از همان ساختار مدل شی سند (DOM) که مرورگر استفاده میکند، ردیابی کنیم. به عنوان مثال، مرورگر به طور خودکار یک را اضافه می کند
TBODY
بهTABLE
. برنامه پایتون از همان تعمیرات خوش فرم مرورگر پیروی می کند.
gen_ssml.sh
HTML خوش فرم را به عنوان ورودی می گیرد، تبدیل XML stylesheet (XSLT) را روی آن اعمال می کند و یک فایل SSML را خروجی می دهد. (SSML زبانی در آمازون پولی برای کنترل نحوه نمایش صدا از متن است.) در مثال فعلی، ورودی example/tmp_wff.html
. خروجی است example/tmp.ssml
. وظیفه تبدیل این است که تصمیم بگیرد چه متنی را از HTML استخراج کرده و به Amazon Polly تغذیه کند. generic.xslt
یک تبدیل XSLT پیش فرض معقول برای اکثر صفحات وب است. در نمونه کد زیر، کنترل صوتی، هدر HTML و همچنین عناصر HTML مانند script
و form
. همچنین عناصر با ویژگی پنهان را حذف می کند. این شامل عناصری است که معمولاً حاوی متن هستند، مانند P
, H1
و SPAN
. برای این موارد، هم یک علامت، از جمله عبارت XPath کامل عنصر و هم مقدار عنصر را ارائه میکند.
در زیر یک قطعه از SSML است که ارائه شده است. این به عنوان ورودی به آمازون پولی داده می شود. به عنوان مثال، توجه داشته باشید که متن "Skips hidden paragraph" باید در صدا خوانده شود، و ما آن را با یک علامت مرتبط می کنیم، که به ما می گوید که این متن در مکان صفحه ای که توسط عبارت 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
- PRTPStaticCustom.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
، که مشخص می کند محتوایی که قرار است درج شود عناصر دارای شناسه هستند title
, main
, maintable
و qbtable
. عنصر با شناسه wrapup
باید مستثنی شوند. کد زیر را ببینید:
ما برنامه پایتون را اجرا می کنیم ModGenericXSLT.py
برای اصلاح generic.xslt
، در حالت پیش فرض استفاده می شود، برای استفاده از شامل و استثناهایی که در آنها مشخص می کنیم transform_config.json
. برنامه نتایج را در یک فایل موقت می نویسد (example/tmp.xslt
) که به آن منتقل می شود gen_ssml.sh
به عنوان تبدیل XSLT آن.
این یک گزینه کم کد است. ناشر وب نیازی به دانستن نحوه نوشتن XSLT ندارد. اما آنها باید ساختار صفحه HTML و شناسه های مورد استفاده در عناصر سازماندهی اصلی آن را درک کنند.
مورد سفارشی سازی
در آخر ، در نظر بگیرید gen_custom.sh
:
این اسکریپت تقریباً مشابه اسکریپت پیش فرض است، با این تفاوت که از XSLT خود استفاده می کند—example/custom.xslt
- به جای XSLT عمومی. قسمت زیر یک قطعه از XSLT است:
اگر می خواهید کد را با جزئیات مطالعه کنید، به اسکریپت ها و برنامه های موجود در مخزن گیت هاب مراجعه کنید.
راه اندازی مرورگر و نکات برجسته
صفحات استاتیک شامل یک کنترل صوتی HTML5 است که فایل MP3 تولید شده توسط آمازون پولی و ساکن در سرور وب را به عنوان منبع صوتی خود می گیرد:
در زمان بارگذاری، صفحه فایل علامت های تولید شده توسط Amazon Polly را نیز بارگیری می کند. این اتفاق در PRTP.js
فایلی که صفحه HTML شامل آن است. در زیر قطعه ای از فایل علامت گذاری برای PRTPStaticDefault
:
در حین پخش صدا، یک کنترل کننده رویداد تایمر صوتی در آن وجود دارد PRTP.js
که زمان فعلی صدا را بررسی می کند، متن مورد نظر را پیدا می کند، مکان آن را در صفحه پیدا می کند و آن را برجسته می کند. متنی که باید برجسته شود یک ورودی از نوع است sentence
در فایل علائم مکان عبارت XPath در ویژگی نام ورودی از نوع SSML است که قبل از جمله قرار دارد. برای مثال، اگر زمان 18400 باشد، طبق فایل علامتها، جملهای که باید برجسته شود «Skips hidden Paragraph» است که از 18334 شروع میشود. مکان ورودی SSML در زمان 17667 است: /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
جدول:
La chooseRenderAudio
عملکرد در PRTP.js
با مقداردهی اولیه AWS SDK برای Amazon Cognito، Amazon S3 و Amazon Polly آغاز می شود. این مقداردهی اولیه فقط یک بار اتفاق می افتد. اگر chooseRenderAudio
دوباره فراخوانی می شود زیرا محتوای صفحه تغییر کرده است، مقداردهی اولیه حذف می شود. کد زیر را ببینید:
صدای MP3 را از Amazon Polly تولید می کند. این نسل برای ورودیهای SSML کوچک همزمان و ناهمزمان (با خروجی ارسال به سطل S3) برای ورودیهای بزرگ SSML (بیشتر از 6,000 کاراکتر) است. در حالت همزمان، از آمازون پولی میخواهیم که فایل MP3 را با استفاده از یک URL تعیینشده ارائه کند. وقتی خروجی سنتز شده آماده شد، مقدار را تنظیم می کنیم src
ویژگی کنترل صوتی به آن URL و بارگذاری کنترل. سپس فایل علامتها را درخواست میکنیم و آن را به همان روشی که در حالت استاتیک است بارگذاری میکنیم. کد زیر را ببینید:
کیس پیکربندی محور
در مرورگر خود، به PRTPDynamic.html?dynOption=config
. صدا را پخش کنید. پخش صدا شبیه به حالت پیش فرض است، اما تفاوت های جزئی وجود دارد. به طور خاص، برخی از مطالب حذف شده است.
پشت صحنه، هنگام استفاده از config
گزینه، صفحه محتوا را متفاوت از حالت پیش فرض استخراج می کند. در حالت پیش فرض، صفحه استفاده می کند buildSSMLFromDefault
. در مورد پیکربندی محور، صفحه بخش هایی را که می خواهد شامل شود و حذف کند، مشخص می کند:
La buildSSMLFromConfig
تابع، تعریف شده در PRTP.js
، درخت DOM را در هر یک از بخش هایی که شناسه آن در زیر ارائه شده است، راه می رود 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 استفاده کردیم. برای تسهیل برجستهسازی، از قابلیت علامتهای گفتاری در آمازون پولی استفاده کردیم.
با مراجعه به آمازون پولی بیشتر درباره آمازون پولی بیاموزید صفحه خدمات.
در نظرات بپرسید.
درباره نویسندگان
مایک هیوی یک معمار راه حل برای AWS با بیش از 25 سال تجربه در ساخت برنامه های کاربردی سازمانی است. مایک نویسنده دو کتاب و مقالات متعدد است. از آمازون او دیدن کنید صفحه نویسنده برای خواندن بیشتر
وینیت کچاواها یک معمار راه حل در AWS با تخصص در یادگیری ماشین است. او مسئول کمک به مشتریان در معماری حجم کاری مقیاس پذیر، ایمن و مقرون به صرفه در AWS است.
- دسترسی
- AI
- آی هنر
- مولد هنر ai
- ربات ai
- آمازون پولی
- هوش مصنوعی
- گواهی هوش مصنوعی
- هوش مصنوعی در بانکداری
- ربات هوش مصنوعی
- ربات های هوش مصنوعی
- نرم افزار هوش مصنوعی
- سمعی
- AWS
- آموزش ماشین AWS
- بلاکچین
- کنفرانس بلاک چین ai
- coingenius
- هوش مصنوعی محاوره ای
- کنفرانس کریپتو ai
- دل-ه
- یادگیری عمیق
- DOM
- گوگل ai
- نماد
- مشخص کردن
- HTML
- جاوا اسکریپت
- فراگیری ماشین
- افلاطون
- افلاطون آی
- هوش داده افلاطون
- بازی افلاطون
- PlatoData
- بازی پلاتو
- مقیاس Ai
- نحو
- تبدیل متن به گفتار
- XSLT
- زفیرنت