الأمازون بولي هي خدمة تحول النص إلى كلام طبيعي ، باستخدام عشرات الأصوات بأكثر من 30 لغة. يمكنك استخدامه لجميع أنواع التطبيقات ، بدءًا من الشخصيات المتحركة الناطقة ، ووصولاً إلى وكلاء افتراضية نابضين بالحياة يجيبون على طلبات دعم العملاء ، إلى مذيعي الأخبار الآليين الذين يقرؤون القصص بصوت عالٍ. يمكنك مطالبة Amazon Polly بإرجاع الكلام المركب كبث مباشر ، أو تنزيله كملف صوتي قياسي للتشغيل لاحقًا. مثل العديد من خدمات AWS ، فأنت تدفع فقط مقابل ما تستخدمه بالفعل: مع Amazon Polly ، أنت تدفع مقابل ذلك عدد الأحرف في العبارة المركبة. مجرد تشغيل ملف صوتي محفوظ مجاني ، سواء قمت بتشغيله مرة واحدة أو عدة مرات.
إذا كنت تعرف بالضبط العبارات التي تحتاجها مسبقًا ، يمكنك تحسين إنفاقك على AWS. ما عليك سوى أخذ كل عبارة تريد التعبير عنها وإرسالها إلى Amazon Polly في وقت الإنشاء ، وتخزين ملف الصوت الذي تم إنشاؤه حتى تصبح جاهزًا لإعادة تشغيله في وقت التشغيل. تشمل حالات الاستخدام الشائعة لهذا النهج أنظمة مخاطبة الجمهور في المطارات أو محطات الحافلات وألعاب الفيديو ومقدمي الطلبات الآليين في مطعم الخدمة السريعة. ما عليك سوى الدفع مرة واحدة لتركيب النص الخاص بك ، ثم إعادة تشغيل الملفات الصوتية الناتجة حسب الحاجة مجانًا.
في هذا المنشور ، نشارك حلاً مؤتمتًا بالكامل وبدون خادم والذي يمكنك استخدامه لتحويل عدد كبير من العبارات النصية إلى كلام نابض بالحياة بشكل غير متزامن. يمكنك تشغيل الوظائف عن طريق تحميل ملف عبارات يدويًا إلى ملف خاص خدمة تخزين أمازون البسيطة (Amazon S3) ، ثم يتم إعلامك عبر البريد الإلكتروني أو الرسائل الفورية عندما يكونون جاهزين. أو اجعل العملية جزءًا من AWS كود البناء نظام التكامل المستمر ، عن طريق تشغيل العمل التجميعي تلقائيًا كلما تغيرت عبارات المصدر.
نظرة عامة على الحل
الحل بدون خادم بالكامل ، ويتألف أساسًا من مجموعة من AWS لامدا المهام. هذه الوظائف تتبع العناصر المراد تصنيعها. أرسلها إلى Amazon Polly للتجميع ، وقم بمعالجة النتائج فور اكتمالها. تستخدم الوظائف المشتركة الأمازون DynamoDB جداول لإدارة حالة العمل بمرور الوقت. ان وظائف خطوة AWS يتتبع سير العمل كل مجموعة مرسلة ، ويخطر الأطراف المهتمة بإكمالها عبر خدمة إعلام أمازون البسيطة موضوع (Amazon SNS).
الحل يستخدم العمارة التي يحركها الحدث: بدلاً من عملية واحدة تعمل من البداية إلى النهاية ، يتم توزيع العملية عبر استدعاءات Lambda ، ولا يتم تشغيلها إلا عند تشغيلها للقيام بذلك من حدث ما.
يوضح الرسم البياني التالي بنية الحل.
انشر الحل وقم بتكوينه
تقوم بنشر الحل في حساب AWS الخاص بك باستخدام ملف نموذج تطبيق AWS Serverless (AWS SAM). يمكنك القيام بذلك من أي جهاز كمبيوتر مع وصول سطر الأوامر إلى حسابك ، ولكن من أجل البساطة ، نستخدم أوس كلاودشيل.
- قم بتسجيل الدخول إلى وحدة تحكم CloudShell.
- عندما تتم تهيئة صدفتك ، قم بعمل نسخة محلية من الكود المصدري للحل وقم بإعداد حزمة AWS SAM عن طريق إصدار الأوامر التالية:
- استخدم AWS SAM لنشر الحل مع توجيه النشر. أدخل اسم مكدس (مثل
amazon-polly-async-batch
) والمنطقة المفضلة لديك وعنوان بريد إلكتروني للإشعارات واسم حاوية S3 غير موجودة لملفات الصوت التي تم إنشاؤها. اقبل الافتراضات الأخرى.
يجب أن يستغرق نشر جميع المكونات بضع دقائق فقط. في حالة نجاح التثبيت ، سترى رسالة مثل ما يلي:
- تحقق من بريدك الإلكتروني بحثًا عن رسالة من Amazon SNS وقم بتأكيد الاشتراك.
كيف يعمل الحل
في هذا القسم ، نصف بالتفصيل كيفية استخدام الحل لتجميع النص الخاص بك ، وكيف يعمل كل مكون رئيسي.
ملف المجموعة: تحديد النص لتوليفه
أنت تحدد مجموعة العبارات النصية التي تريد من Amazon Polly التعبير عنها في ملف يسمى a ضبط الملف. هذا هو ملف YAML تتكون من تفاصيل المجموعة ، ومجموعة من الافتراضيات ، وقائمة بالعناصر المراد تركيبها:
- اضبط التفاصيل - في مقطع المجموعة ، يمكنك إعطاء المجموعة اسمًا لتمييزها عن الآخرين ، وبادئة إخراج اختيارية لإخبار الحل بالمكان الذي تريد تخزين الملفات الصوتية فيه في حاوية S3.
- الافتراضات - في قسم الإعدادات الافتراضية الاختيارية ، يمكنك إعطاء قيم معينة للمعلمات تنطبق ما لم يتم تجاوزها بواسطة عناصر معينة. يتم دعم السمات التالية ، مثل موثقة في Amazon Polly API:
- محرك - أيضاً
standard
orneural
؛ التخلف عن السدادneural
- رمز اللغة - أي من أكثر من 20 لغة مدعومة ؛ التخلف عن السداد
en-US
- تنسيق الإخراج -
mp3
,ogg_vorbis
الطرق أوpcm
؛ التخلف عن السدادmp3
- إدخال النص - أيضاً
text
orSSML
؛ التخلف عن السدادtext
- معرف الصوت - أي من الأصوات المدعومة ؛ التخلف عن السداد
Matthew
- محرك - أيضاً
- المنتجات - مجموعة العناصر هي ببساطة قائمة من السلاسل النصية لتوليفها. يحول Amazon Polly نص كل عنصر إلى كلام ، باستخدام الإعدادات الافتراضية المحددة بالإضافة إلى أي تجاوزات موجودة في العنصر ، ويضع الملفات الناتجة في حاوية S3 في مجلد بادئة الإخراج الخاص بالمجموعة. إذا حددت ملف الإخراج ، فسيتم تسمية الملف على النحو المحدد ؛ خلاف ذلك ، يقوم الحل بتعيين اسم للملف بناءً على محتوياته وترتيبها في المجموعة.
على سبيل المثال ، إذا كنت تريد تجميع ستة أسطر من Act 1 Scene 1 of روميو وجولييت، يمكنك استخدام ملف YAML يشبه الكود التالي:
تحدد هذه المجموعة أن Amazon Polly يجب أن تجمع ستة أسطر من المسرحية. لتمثيل الشخصيات أبراهام وسمبسون وغريغوري ، نستخدم أصوات جوي وماثيو وبريان. مع Amazon Polly ، يمكنك تحديد الحجم والنغمة ، كما هو الحال عندما أكد أبراهام على كلمة "نحن" ولجانب سامبسون وجريجوري ، وهما هامسون ؛ ل تأثيرات SSML مثل هذه، نحدد ببساطة أن text-type
is ssml
، وزين النطق بشكل مناسب.
نظرًا لعدم تحديد أي من العناصر لملف الإخراج ، يتم إنشاء أسماء الملفات تلقائيًا نيابة عنك. في هذا المثال ، ملفات MP3 التي تم إنشاؤها هي ملفات act-1-scene-1/item-000000-do-you-bite-your-thumb-at-us-sir.mp3
من خلال act-1-scene-1/item-000005-no-sir-i-do-not-bite-my-thumb-at-you-sir.mp3
.
ملف المجموعة هذا (وغيره) موجود في ملف docs/samples
دليل الكود. في CloudShell ، يمكنك إرسال هذا الملف إلى Amazon Polly ببساطة عن طريق تحميله إلى حاوية S3 التي حددتها سابقًا:
يقوم Amazon Polly بتجميع الأسطر الستة من الملف. عندما يتم تركيب جميع الأسطر ، ستتلقى إشعارًا بالبريد الإلكتروني:
يمكن إنشاء YAML في أي محرر ، ويسهل على البشر قراءته ، وهو سهل التسجيل في أنظمة التحكم بالمصادر مثل كود AWS. ومع ذلك ، يجب أن يكون ملف المجموعة عبارة عن ملف نصي خالص ، ويجب أن يكون بامتداد ملف .yml ، ويجب أن يكون YAML صالحًا.
وظيفة معالج المجموعة
عندما يكون الملف بامتداد .yml
تم تحميل الامتداد إلى حاوية S3 ، تبدأ وظيفة Set Processor Lambda العملية. يقوم بتوزيع ملف المجموعة وإنشاء سجل مطابق له في DynamoDB. يتم استخدام هذا السجل لتتبع عدد العناصر الموجودة في المجموعة ، وعدد العناصر التي لم تكتمل بعد ، ومتى بدأت المعالجة المحددة.
بعد ذلك ، لكل عنصر في المجموعة ، تقوم وظيفة Set Processor بنشر رسالة — أمر عمل ، من نوع ما — إلى الحل خدمة Amazon Simple Queue Service قائمة انتظار (Amazon SQS). أمر العمل هذا عبارة عن مستند JSON يشتمل على كل ما يحتاجه Amazon Polly لتجميع النص وفقًا للإرشادات الموجودة في ملف المجموعة الذي تم تحميله.
كل رسالة مستقلة تمامًا عن الرسائل الأخرى ، لذا يمكن عمل توليفها بواسطة Amazon Polly بشكل متزامن ، ولا يهم ترتيب اكتمالها. يعد اسم المجموعة أيضًا جزءًا من أمر العمل ، لذلك يمكن معالجة مجموعات متعددة (أو حتى مثيلات متعددة لنفس المجموعة) بواسطة الحل في نفس الوقت.
وظيفة معالج العنصر
تستهلك وظيفة معالج العناصر Lambda الرسائل من قائمة انتظار SQS وتعمل المنشورات في Amazon Polly.
تمثل كل رسالة ملفًا صوتيًا واحدًا ليقوم Amazon Polly بإنشائه. تستدعي الدالة طريقة API StartSpeechSynthesisTask، باستخدام القيم الموجودة في أمر العمل كوسيطات لمعلمات الطريقة. هذا استدعاء غير متزامن لواجهة برمجة التطبيقات ، لذلك ليس لدينا أي ضمانات بخصوص الوقت الذي يُنشئ فيه Amazon Polly بالفعل ملفًا صوتيًا لنا ؛ ولكن عند اكتمالها ، تنشر Amazon Polly رسالة SNS لوظيفة Lambda التالية ، وهي معالج الاستجابة ، للتعامل معها.
تضيف وظيفة معالج العناصر أيضًا سجلاً إلى جدول العناصر في DynamoDB ، بحيث يمكن للحل تتبع العناصر التي تم إكمالها بنجاح والتي لم يتم إكمالها بعد.
مثل العديد من واجهات AWS API ، هناك يحد من عدد استدعاءات API التي يمكنك إجراؤها على Amazon Polly في الثانية. يتم اختناق وظيفة معالج العنصر للبقاء ضمن الحدود المعقولة ، وهي يتراجع أضعافا مضاعفة ويعيد المحاولة حسب الحاجة لنشر العمل ولكن لا تزال ضمن حدود خدمة حسابك.
وظيفة معالج الاستجابة
عندما تنتهي Amazon Polly من العمل بناءً على طلب معين ، فإنها تنشر إشعارًا بموضوع استجابة SNS. يتم التقاط هذا فورًا بواسطة وظيفة Lambda النهائية في التسلسل ، معالج الاستجابة. هذه الوظيفة مسؤولة عن تحديث العنصر وتعيين السجلات في DynamoDB ، وعن إعادة تسمية ملف الصوت في Amazon S3 إلى اسم الملف المطلوب.
إذا أبلغت Amazon Polly عن نجاحها في تركيب ملف الصوت ، فإن وظيفة Response Processor تقوم ببساطة بنقل الملف إلى موقعه النهائي. يقوم بتحديث سجل المادة taskStatus
إلى success
ويزيد ال success
العداد في السجل المحدد. إذا أبلغت Amazon Polly عن فشل ، تقوم الوظيفة بتحديث سجل العنصر مع سبب الفشل وزيادة failed
العداد في السجل المحدد.
سير عمل Set Waiter
للمراجعة ، تعمل كل وظيفة من وظائف Lambda هذه فقط عند تشغيلها بواسطة حدث:
- يتم تشغيل Set Processor عندما يتم تحميل ملف معين إلى حاوية S3
- يتم تشغيل معالج العناصر عندما تظهر أوامر العمل في قائمة انتظار SQS
- يتم تشغيل Response Processor عندما تنشر Amazon Polly رسالة إلى موضوع SNS
يمكن تشغيل هذه الوظائف بشكل متزامن ، ومعالجة عناصر متعددة من مجموعات متعددة في نفس الوقت. بدون عملية تنسيق ، كيف نعرف متى تكتمل مجموعة معينة؟ كيف نعرف إذا حدث خطأ ما؟
The Set Waiter هو سير عمل Step Functions المسؤول عن مشاهدة مجموعة معينة لتقرير وقت الانتهاء ، أو إخطار ما إذا كانت هناك مشكلة فنية في الحل قد تركت المجموعة مهجورة.
في مفتش الرسم البياني لوظائف الخطوة ، يبدو سير عمل Set Waiter قيد التشغيل كما يلي.
يتم بدء مثيل Set Waiter بواسطة وظيفة Set Processor لكل مجموعة مرسلة ، والتي تمرر اسمًا فريدًا يحدد تلك المجموعة. يقوم النادل بتحميل السجل المحدد من جدول DynamoDB في مرحلة التحميل ويتحقق لمعرفة ما إذا كان قد اكتمل في مرحلة الفحص. إذا كان لا يزال لدى Amazon Polly مهام يجب معالجتها ، فستنتظر الوظيفة بضع ثوانٍ في مرحلة الانتظار قبل البدء مرة أخرى.
إذا تمت معالجة كل مهمة في المجموعة بواسطة Amazon Polly ، ينتقل Set Waiter إلى مرحلة الإخطار ، والتي تنشر رسالة إلى موضوع SNS المكتمل. إذا لم يتم إجراء أي تغييرات مؤخرًا على مجموعة قيد المعالجة ، فإن Set Waiter يفترض أن هناك شيئًا خاطئًا وينشر رسالة مهجورة إلى الموضوع.
تنظيف
يمكنك ترك الحل في حسابك للمدة التي تريدها. عندما لا يكون قيد الاستخدام ، فأنت تدفع فقط مقابل تخزين ملفات الصوت في Amazon S3 والبيانات الموجودة في جداول DynamoDB. عندما يكون لديك نص لتوليفه ، ما عليك سوى تحميل ملف معين إلى حاوية S3 ، وسيأخذها الحل من هناك. أنت تدفع مقابل استدعاءات دالة Lambda و الأحرف التي تمت معالجتها بالفعل بواسطة Amazon Polly. تجميع كل 1.1 مليون حرف بتنسيق موبي ديك، على سبيل المثال ، تكلف أقل من 5 دولارات للأصوات القياسية ، وأقل بكثير من 20 دولارًا للأصوات العصبية عالية الجودة.
إذا قررت عدم استخدام الحل مرة أخرى ، فيمكنك حذف جميع موارده باستخدام تكوين سحابة AWS:
وفي الختام
في هذا المنشور ، وصفنا حلاً بدون خادم يعتمد على الأحداث لإرسال كميات كبيرة من العبارات النصية إلى Amazon Polly للمعالجة بشكل غير متزامن. باستخدام هذا النهج ، يمكنك الحفاظ على انخفاض تكاليفك عن طريق الدفع مرة واحدة فقط للتوليف ، بغض النظر عن عدد مرات تشغيل الملفات الصوتية التي تم إنشاؤها.
يمكنك نشر الحل على حسابك في دقائق كتطبيق AWS SAM. أنت تحدد النص المراد تحويله في ملفات YAML تسمى ملفات المجموعة. عند تحميل ملف مجموعة إلى حاوية S3 الخاصة بالحل (إما يدويًا بواسطة شخص أو تلقائيًا عن طريق خط أنابيب رمز) ، تعمل سلسلة من وظائف Lambda - معالج المجموعة ومعالج العنصر ومعالج النتائج - معًا لإرسال المهام إلى أمازون بولي وجمع الملفات الصوتية لك. عند الانتهاء من جميع الأعمال ، يتم نشر إشعار لموضوع SNS.
تم تطوير الحل كمشروع مفتوح المصدر على GitHub. نرحب بطلبات الميزات أو تقارير الأخطاء أو المساهمات. جرب هذا بنفسك وأخبرنا برأيك في التعليقات. لمعرفة المزيد حول كيف يمكن أن تساعدك Amazon Polly ، قم بزيارة صفحة الويب الخاصة بنا!
حول المؤلف
جون بيترسون هو مهندس حلول أقدم مع AWS. يعيش خارج شيكاغو مع زوجته وطفليه.
براتيك جاين هو مهندس حلول مع AWS ، ومقره في أتلانتا جورجيا. إنه متحمس بشأن السحابة ويساعد العملاء على بناء حلول مذهلة على AWS.
- '
- 100
- 7
- الوصول
- حسابي
- عملاء
- المطارات
- الكل
- أمازون
- الأمازون بولي
- API
- واجهات برمجة التطبيقات
- تطبيق
- التطبيقات
- هندسة معمارية
- الحجج
- أتلانتا
- سمعي
- الآلي
- AWS
- علة
- نساعدك في بناء
- حافلة
- دعوة
- الحالات
- تغيير
- تدقيق
- الشيكات
- شيكاغو
- أطفال
- سحابة
- الكود
- تعليقات
- مشترك
- عنصر
- محتويات
- التكاليف
- دعم العملاء
- العملاء
- البيانات
- التفاصيل
- رئيس التحرير
- البريد الإلكتروني
- البيئة
- الحدث/الفعالية
- فشل
- الميزات
- مجانًا
- وظيفة
- ألعاب
- جورجيا
- بوابة
- GitHub جيثب:
- كيفية
- كيفية
- HTTPS
- البشر
- IAM
- بما فيه
- التكامل
- IT
- المشــاريــع
- اللغات
- كبير
- القانون
- تعلم
- خط
- قائمة
- تحميل
- محلي
- موقع
- طويل
- رائد
- مليون
- التحركات
- أسماء
- عصبي
- إعلام
- أرقام
- جاكيت
- المصدر المفتوح
- طلب
- الطلبات
- أخرى
- أخرى
- عبارات
- المنشورات
- خاص
- تنفيذ المشاريع
- جمهور
- نادي القراءة
- تسجيل
- التقارير
- الموارد
- استجابة
- مطعم
- النتائج
- مراجعة
- يجري
- تشغيل
- مسلسلات
- Serverless
- خدمات
- طقم
- ضبط
- مشاركة
- شاركت
- قذيفة
- الاشارات
- SIX
- So
- الحلول
- أنفق
- بدأت
- الولايه او المحافظه
- إقامة
- تخزين
- قصص
- المقدمة
- اشتراك
- تحقيق النجاح
- ناجح
- الدعم
- مدعومة
- نظام
- أنظمة
- الحديث
- تقني
- الأصوات
- الوقت
- مسار
- آخر التحديثات
- us
- فيديو
- ألعاب الفيديو
- افتراضي
- صوت
- * أصوات
- حجم
- انتظر
- في غضون
- للعمل
- سير العمل
- أعمال