في هذا المنشور ، نوضح كيفية الاستخدام الأمازون بولي—خدمة سحابية رائدة تقوم بتحويل النص إلى كلام نابض بالحياة — لقراءة محتوى صفحة ويب وتمييز المحتوى أثناء قراءته. تعمل إضافة تشغيل الصوت إلى صفحة ويب على تحسين إمكانية الوصول وتجربة الزائر للصفحة. المحتوى المحسّن بالصوت أكثر تأثيرًا ولا يُنسى ، ويجذب المزيد من حركة المرور إلى الصفحة ، ويستفيد من القدرة الشرائية للزوار. كما أنه يحسن العلامة التجارية للشركة أو المنظمة التي تنشر الصفحة. تجعل تقنية تحويل النص إلى كلام هذه الفوائد التجارية قابلة للتحقيق. نقوم بتسريع هذه الرحلة من خلال توضيح كيفية تحقيق هذا الهدف باستخدام Amazon Polly.
تعمل هذه الإمكانية على تحسين إمكانية الوصول للزوار ذوي الاحتياجات الخاصة ، ويمكن اعتمادها كجزء من استراتيجية إمكانية الوصول الخاصة بمؤسستك. وبنفس القدر من الأهمية ، فهو يعزز تجربة الصفحة للزوار غير المعوقين. تتمتع كلتا المجموعتين بقدرة شرائية كبيرة وتنفقان بحرية أكبر من الصفحات التي تستخدم تحسين الصوت لجذب انتباههم.
نظرة عامة على الحل
PollyReadsThePage
(PRTP) - كما نشير إلى الحل - يسمح لناشر صفحات الويب بإسقاط عنصر تحكم صوتي على صفحة الويب الخاصة بهم. عندما يختار الزائر بلايستشن في عنصر التحكم ، يقرأ عنصر التحكم الصفحة ويميز المحتوى. يستخدم PRTP القدرة العامة لـ Amazon Polly لتجميع الكلام من النص. يستدعي Amazon Polly لإنشاء قطعتين من القطع الأثرية لكل صفحة:
- محتوى الصوت بتنسيق يمكن تشغيله بواسطة المتصفح: MP3
- ملف علامات الكلام يشير إلى كل جملة من النص:
- الوقت الذي يتم فيه قراءة الجملة
- الموقع على الصفحة تظهر الجملة
عندما يختار الزائر بلايستشن، يقوم المتصفح بتشغيل ملف MP3. أثناء قراءة الصوت ، يتحقق المتصفح من الوقت ، ويجد في ملف العلامات الجملة التي يجب قراءتها في ذلك الوقت ، ويحددها على الصفحة ، ويميزها.
يتيح PRTP للزائر القراءة بأصوات ولغات مختلفة. يتطلب كل صوت زوجًا من الملفات الخاصة به. يستخدم PRTP الأصوات العصبية. للحصول على قائمة الأصوات واللغات العصبية المدعومة ، راجع أصوات عصبية. للحصول على قائمة كاملة بالأصوات القياسية والعصبية في Amazon Polly ، راجع أصوات في أمازون بولي.
نحن نعتبر نوعين من صفحات الويب: الصفحات الثابتة والمتحركة. في ساكن الصفحة ، المحتوى مضمن داخل الصفحة ولا يتغير إلا عند نشر نسخة جديدة من الصفحة. قد تقوم الشركة بتحديث الصفحة يوميًا أو أسبوعيًا كجزء من عملية بناء الويب الخاصة بها. بالنسبة لهذا النوع من الصفحات ، من الممكن إنشاء ملفات الصوت مسبقًا في وقت الإنشاء ووضعها على خادم الويب للتشغيل. كما يوضح الشكل التالي ، البرنامج النصي PRTP Pre-Gen
استدعاء Amazon Polly لإنشاء الصوت. يأخذ كمدخل صفحة HTML نفسها ، واختيارياً ، ملف تكوين يحدد النص من الصفحة المراد استخراجه (Text Extract Config
). إذا تم حذف تكوين الاستخراج ، فإن البرنامج النصي للإنشاءات يقوم باختيار معقول للنص لاستخراجه من نص الصفحة. يقوم Amazon Polly بإخراج الملفات بتنسيق خدمة تخزين أمازون البسيطة (Amazon S3) دلو ؛ يقوم البرنامج النصي بنسخها إلى خادم الويب الخاص بك. عندما يقوم الزائر بتشغيل الصوت ، يقوم المتصفح بتنزيل ملف MP3 مباشرة من خادم الويب. للأشياء البارزة ، مكتبة منسدلة ، PRTP.js
، يستخدم ملف العلامات لتمييز النص الذي تتم قراءته.
محتوى أ ديناميكي تتغير الصفحة استجابة لتفاعل الزائر ، لذلك لا يمكن إنشاء الصوت مسبقًا ولكن يجب توليفه ديناميكيًا. كما يوضح الشكل التالي ، عندما يقوم الزائر بتشغيل الصوت ، تستخدم الصفحة PRTP.js
لتوليد الصوت في Amazon Polly ، ويسلط الضوء على الصوت المركب باستخدام نفس النهج كما هو الحال مع الصفحات الثابتة. للوصول إلى خدمات AWS من المتصفح ، يحتاج الزائر إلى هوية AWS. نعرض كيفية استخدام ملف أمازون كوجنيتو تجمع الهوية للسماح للزائر بالوصول الكافي فقط إلى Amazon Polly ودلو S3 لعرض الصوت.
يتطلب إنشاء كل من علامتي الصوت والكلام بتنسيق Mp3 أن تقوم خدمة Polly بتجميع نفس الإدخال مرتين. الرجوع إلى صفحة تسعير Amazon Polly لفهم الآثار المترتبة على التكلفة. يوفر التوليد المسبق التكاليف لأنه يتم تنفيذ التوليف في وقت الإنشاء بدلاً من عند الطلب لكل تفاعل للزائر.
الكود المصاحب لهذا المنشور متاح كمستودع مفتوح المصدر في GitHub جيثب:.
لاستكشاف الحل ، نتبع الخطوات التالية:
- قم بإعداد الموارد ، بما في ذلك خادم إنشاء ما قبل الجيل ، ودلو S3 ، وخادم الويب ، وهوية Amazon Cognito.
- قم بتشغيل إنشاء ما قبل الجيل الثابت واختبار الصفحات الثابتة.
- اختبار الصفحات الديناميكية.
المتطلبات الأساسية المسبقة
لتشغيل هذا المثال ، تحتاج إلى ملف حساب AWS بإذن لاستخدام Amazon Polly و Amazon S3 و Amazon Cognito و (للأغراض التجريبية) سحابة AWS 9.
توفير الموارد
نحن نشارك تكوين سحابة AWS نموذج لإنشاء بيئة تجريبية قائمة بذاتها في حسابك لمساعدتك على متابعة المنشور. إذا كنت تفضل إعداد 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 ككلمات كاملة ("شمال شرق" ، "شمال غرب" ، "جنوب شرق" ، "جنوب غرب") ، مستفيدين من معاجم Amazon Polly.
لاحظ الاختلافات الرئيسية في الصوت:
PRTPStaticDefault.html
يقرأ كل النص الموجود في نص الصفحة ، بما في ذلك جزء الملخص في الجزء السفلي مع "أفكارك في كلمة واحدة" و "إرسال الاستعلام" و "آخر تحديث في 1 أبريل 2020" و "أسئلة لفريق التطوير".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 repo الخاص بنا ملفات صوتية مُنشأة مسبقًا لـ PRPTStatic
الصفحات ، ولكن إذا كنت ترغب في إنشائها بنفسك ، من bash shell في AWS Cloud9 IDE ، فقم بتشغيل الأوامر التالية:
الآن دعونا نلقي نظرة على كيفية عمل هذه البرامج النصية.
الحالة الافتراضية
نبدأ مع gen_default.sh
:
يبدأ النص بتشغيل برنامج بايثون FixHTML.py
لإنشاء ملف HTML المصدر PRTPStaticDefault.html
حسن التشكيل. يقوم بكتابة النسخة المنسقة جيدًا من الملف إلى example/tmp_wff.html
. هذه الخطوة حاسمة لسببين:
- لم يتم صياغة معظم HTML المصدر بشكل جيد. تعمل هذه الخطوة على إصلاح مصدر HTML ليتم تشكيله بشكل جيد. على سبيل المثال ، لا يتم إغلاق العديد من صفحات HTML
P
عناصر. هذه الخطوة تغلقهم. - نحن نتتبع المكان الذي نجد فيه النص في صفحة HTML. نحتاج إلى تتبع المواقع باستخدام نفس بنية نموذج كائن المستند (DOM) التي يستخدمها المتصفح. على سبيل المثال ، يضيف المتصفح تلقائيًا ملف
TBODY
لTABLE
. يتبع برنامج Python نفس الإصلاحات المنسقة جيدًا مثل المتصفح.
gen_ssml.sh
يأخذ HTML المنسق جيدًا كمدخلات ، ويطبق تحويل تحويل ورقة أنماط XML (XSLT) إليه ، ويخرج ملف SSML. (SSML هي اللغة المستخدمة في Amazon Polly للتحكم في كيفية عرض الصوت من النص.) في المثال الحالي ، يكون الإدخال example/tmp_wff.html
. الإخراج example/tmp.ssml
. تتمثل مهمة التحويل في تحديد النص المراد استخراجه من HTML وإطعامه إلى Amazon Polly. generic.xslt
هو تحويل XSLT افتراضي معقول لمعظم صفحات الويب. في المثال التالي مقتطف الشفرة ، فإنه يستبعد التحكم في الصوت ، ورأس HTML ، وكذلك عناصر HTML مثل script
و form
. كما أنه يستبعد العناصر ذات السمة المخفية. يتضمن العناصر التي تحتوي عادةً على نص ، مثل P
, H1
و SPAN
. بالنسبة إلى هؤلاء ، فإنه يعرض كلاً من علامة ، بما في ذلك تعبير XPath الكامل للعنصر ، وقيمة العنصر.
فيما يلي مقتطف من SSML تم تقديمه. يتم تغذية هذا كمدخل إلى Amazon Polly. لاحظ ، على سبيل المثال ، أن النص "يتخطى الفقرة المخفية" يجب قراءته في الصوت ، ونربطه بعلامة تخبرنا أن هذا النص يظهر في الموقع على الصفحة الذي يقدمه تعبير XPath /html/body[1]/div[2]/ul[1]/li[1]
.
لإنشاء صوت في Amazon Polly ، نسمي البرنامج النصي 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 ، ماثيو. mp3 ، Matthew.marks
- polly / PRTPStaticCustom / Joanna.mp3 ، Joanna.marks ، Matthew.mp3 ، Matthew.marks
تحتوي كل صفحة على مجموعتها الخاصة من ملفات MP3 الخاصة بالصوت والعلامات. هذه الملفات هي الملفات التي تم إنشاؤها مسبقًا. لا تحتاج الصفحة إلى استدعاء Amazon Polly في وقت التشغيل ؛ الملفات هي جزء من بناء الويب.
حالة يحركها التكوين
التالي ، النظر 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:
إذا كنت ترغب في دراسة الكود بالتفصيل ، فارجع إلى النصوص والبرامج في GitHub repo.
إعداد المتصفح والميزات
تتضمن الصفحات الثابتة عنصر تحكم صوتي بتنسيق HTML5 ، والذي يأخذ كمصدر صوتي ملف MP3 الذي تم إنشاؤه بواسطة Amazon Polly والموجود على خادم الويب:
في وقت التحميل ، تُحمِّل الصفحة أيضًا ملف العلامات التي تم إنشاؤها بواسطة Amazon Polly. يحدث هذا في PRTP.js
الذي تتضمنه صفحة HTML. فيما يلي مقتطف من ملف العلامات لـ PRTPStaticDefault
:
أثناء تشغيل الصوت ، يوجد معالج حدث مؤقت الصوت PRTP.js
التي تتحقق من الوقت الحالي للصوت ، وتجد النص المطلوب تمييزه ، وتجد موقعه على الصفحة ، وتميزه. النص المراد تمييزه هو إدخال من النوع sentence
في ملف العلامات. الموقع هو تعبير XPath في سمة الاسم لإدخال نوع SSML الذي يسبق الجملة. على سبيل المثال ، إذا كان الوقت هو 18400 ، وفقًا لملف العلامات ، فإن الجملة المراد إبرازها هي "تخطي الفقرة المخفية" ، والتي تبدأ في 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 ليتم إدخاله إلى Amazon Polly. فيما يلي مقتطف يعرض استخراج الصف الأول من ملف philosopher
الجدول:
• chooseRenderAudio
وظيفة في PRTP.js
يبدأ بتهيئة AWS SDK لكل من Amazon Cognito و Amazon S3 و Amazon Polly. تحدث هذه التهيئة مرة واحدة فقط. إذا chooseRenderAudio
يتم استدعاء مرة أخرى لأن محتوى الصفحة قد تغير ، تم تخطي التهيئة. انظر الكود التالي:
يولد صوت MP3 من Amazon Polly. يكون التوليد متزامنًا لمدخلات SSML الصغيرة وغير متزامن (مع إرسال الإخراج إلى حاوية S3) لمدخلات SSML الكبيرة (أكبر من 6,000 حرف). في الحالة المتزامنة ، نطلب من Amazon Polly توفير ملف MP3 باستخدام عنوان URL محدد مسبقًا. عندما يكون الإخراج المركب جاهزًا ، نقوم بتعيين ملف src
سمة التحكم في الصوت إلى عنوان URL هذا وتحميل عنصر التحكم. ثم نطلب ملف العلامات ونحمّله بنفس الطريقة كما في الحالة الثابتة. انظر الكود التالي:
حالة يحركها التكوين
في المتصفح الخاص بك ، انتقل إلى PRTPDynamic.html?dynOption=config
. قم بتشغيل الصوت. تشغيل الصوت مشابه للحالة الافتراضية ، ولكن هناك اختلافات طفيفة. على وجه الخصوص ، تم تخطي بعض المحتوى.
خلف الكواليس ، عند استخدام config
الخيار ، تستخرج الصفحة المحتوى بشكل مختلف عن الحالة الافتراضية. في الحالة الافتراضية ، تستخدم الصفحة buildSSMLFromDefault
. في الحالة التي تعتمد على التكوين ، تحدد الصفحة الأقسام التي تريد تضمينها واستبعادها:
• buildSSMLFromConfig
وظيفة محددة في PRTP.js
، يمشي في شجرة DOM في كل قسم من الأقسام التي يتم توفير المعرف ضمنها inclusions
. يستخرج المحتوى من كل منها ويجمعها معًا ، بالترتيب المحدد ، لتشكيل مستند SSML. يستثني الأقسام المحددة تحت exclusions
. يستخرج المحتوى من كل قسم بنفس الطريقة buildSSMLFromDefault
يستخرج المحتوى من نص الصفحة.
حالة التخصيص
في المتصفح الخاص بك ، انتقل إلى PRTPDynamic.html?dynOption=custom
. قم بتشغيل الصوت. هناك ثلاثة اختلافات ملحوظة. دعنا نلاحظ ذلك ونفكر في الكود المخصص الذي يعمل خلف الكواليس:
- يقرأ المربعات الرئيسية بترتيب NW و SW و NE و SE. يحصل الكود المخصص على كل كتلة من هذه الخلايا من
maintable
ويضيفها إلى SSML بترتيب NW و SW و NE و SE:
- يتم التحدث بصوت عالٍ "توم برادي". يضع الكود المخصص نص "Tom Brady" داخل SSML
prosody
العلامة:
- يقرأ فقط الصفوف الثلاثة الأولى من جدول قورتربك. يقرأ رؤوس الأعمدة لكل صف. تحقق من الكود في GitHub repo لاكتشاف كيفية تنفيذ ذلك.
تنظيف
لتجنب تكبد الرسوم المستقبلية ، احذف مكدس CloudFormation.
وفي الختام
في هذا المنشور ، أظهرنا حلاً تقنيًا لمشكلة تجارية عالية القيمة: كيفية استخدام Amazon Polly لقراءة محتوى صفحة ويب وتمييز المحتوى أثناء قراءته. لقد أظهرنا هذا باستخدام كل من الصفحات الثابتة والديناميكية. لاستخراج المحتوى من الصفحة ، استخدمنا DOM traversal و XSLT. لتسهيل التمييز ، استخدمنا إمكانية علامات الكلام في Amazon Polly.
تعرف على المزيد حول Amazon Polly من خلال زيارة موقع صفحة الخدمة.
لا تتردد في طرح الأسئلة في التعليقات.
عن المؤلفين
مايك هدي هو مهندس حلول لـ AWS يتمتع بخبرة تزيد عن 25 عامًا في بناء تطبيقات المؤسسة. مايك مؤلف كتابين والعديد من المقالات. قم بزيارة موقع أمازون الخاص به صفحة المؤلف لقراءة المزيد.
فينيت كاشواها هو مهندس حلول في AWS ولديه خبرة في التعلم الآلي. وهو مسؤول عن مساعدة العملاء في تصميم أعباء عمل قابلة للتطوير وآمنة وفعالة من حيث التكلفة على AWS.
- إمكانية الوصول
- AI
- ai الفن
- مولد الفن ai
- الروبوت ai
- الأمازون بولي
- الذكاء الاصطناعي
- شهادة الذكاء الاصطناعي
- الذكاء الاصطناعي في البنوك
- روبوت ذكاء اصطناعي
- روبوتات الذكاء الاصطناعي
- برنامج ذكاء اصطناعي
- سمعي
- AWS
- التعلم الآلي من AWS
- سلسلة كتلة
- مؤتمر blockchain ai
- عملة عبقرية
- الذكاء الاصطناعي للمحادثة
- مؤتمر التشفير ai
- دال
- التعلم العميق
- DOM
- google ai
- تسليط الضوء
- تسليط الضوء
- HTML
- جافا سكريبت
- آلة التعلم
- أفلاطون
- أفلاطون ع
- الذكاء افلاطون البيانات
- لعبة أفلاطون
- أفلاطون داتا
- بلاتوغمينغ
- مقياس ai
- بناء الجملة
- النص إلى كلام
- XSLT
- زفيرنت