Amazon Polly 30'dan fazla dilde düzinelerce ses kullanarak metni kulağa doğal gelen konuşmaya dönüştüren bir hizmettir. Konuşan animasyonlu avatarlardan, müşteri destek isteklerini yanıtlayan gerçekçi sanal temsilcilere ve hikayeleri yüksek sesle okuyan otomatik haber spikerlerine kadar her türlü uygulama için kullanabilirsiniz. Amazon Polly'nin sentezlenmiş konuşmayı canlı akış olarak döndürmesini veya daha sonra oynatmak üzere standart bir ses dosyası olarak indirmesini sağlayabilirsiniz. Birçok AWS hizmeti gibi, yalnızca gerçekten kullandığınız kadar ödersiniz: Amazon Polly ile, sentezlenmiş ifadedeki karakter sayısı. Kaydedilmiş bir ses dosyasını tek seferde veya birden çok kez çalsanız da oynatmak ücretsizdir.
Tam olarak hangi ifadelere ihtiyacınız olduğunu önceden biliyorsanız, AWS harcamalarınızı optimize edebilirsiniz. Seslendirmeye ihtiyacınız olan her cümleyi alın ve oluşturma zamanında Amazon Polly'ye gönderin, oluşturulan ses dosyasını çalışma zamanında çalmaya hazır olana kadar saklayın. Bu yaklaşımın yaygın kullanım durumları, havaalanları veya otobüs istasyonlarındaki genel seslendirme sistemlerini, video oyunlarını ve hızlı servis restoran otomatik sipariş alıcılarını içerir. Metninizi sentezlemek için sadece bir kez ödeme yapın ve ardından ortaya çıkan ses dosyalarını gerektiği gibi ücretsiz olarak yeniden oynatın.
Bu gönderide, çok sayıda metin tümcesini eşzamansız olarak gerçeğe yakın konuşmaya dönüştürmek için kullanabileceğiniz tam otomatik, olay odaklı, sunucusuz bir çözümü paylaşıyoruz. Bir özel ifade dosyasını manuel olarak yükleyerek işleri tetikleyebilirsiniz. Amazon Basit Depolama Hizmeti (Amazon S3) paketi ve ardından hazır olduklarında e-posta veya anlık mesajla bilgilendirileceksiniz. Veya süreci hayatınızın bir parçası yapın AWS Kod Oluşturma sürekli entegrasyon sistemi, kaynak ifadeleriniz değiştiğinde sentez çalışmasını otomatik olarak tetikleyerek.
Çözüme genel bakış
Çözüm tamamen sunucusuzdur ve çoğunlukla bir dizi sunucudan oluşur. AWS Lambda fonksiyonlar. Bu işlevler, sentezlenecek öğeleri izler. Bunları sentez için Amazon Polly'ye gönderin ve sonuçları tamamlandıkça işleyin. İşlevler paylaşılan kullanır Amazon DinamoDB işin zaman içindeki durumunu yönetmek için tablolar. Bir AWS Basamak İşlevleri iş akışı, gönderilen her seti izler ve ilgili taraflara tamamlandığına dair bir bildirim gönderir. Amazon Basit Bildirim Servisi (Amazon SNS) konusu.
Çözüm bir olay güdümlü mimari: baştan sona çalışan tek bir süreç yerine, süreç Lambda çağrılarına dağıtılır ve yalnızca bazı olaylardan bunu yapmak için tetiklendiğinde çalışır.
Aşağıdaki şemada çözüm mimarisi gösterilmektedir.
Çözümü dağıtın ve yapılandırın
kullanarak çözümü AWS hesabınıza dağıtırsınız. AWS Sunucusuz Uygulama Modeli (AWS SAM). Bunu, hesabınıza komut satırı erişimi olan herhangi bir bilgisayardan yapabilirsiniz, ancak basitlik adına, AWS BulutKabuğu.
- CloudShell konsolunda oturum açın.
- Kabuğunuz başlatıldığında, çözüm kaynak kodunun yerel bir kopyasını oluşturun ve aşağıdaki komutları vererek AWS SAM yığınını hazırlayın:
- Çözümü dağıtmak için dağıtım kılavuzluğunda AWS SAM kullanın. Bir yığın adı sağlayın (örneğin
amazon-polly-async-batch
), tercih ettiğiniz Bölge, bildirimler için bir e-posta adresi ve oluşturulan ses dosyaları için var olmayan bir S3 klasörünün adı. Diğer varsayılanları kabul edin.
Tüm bileşenlerin konuşlandırılması yalnızca birkaç dakika sürmelidir. Yükleme başarılı olursa, aşağıdakine benzer bir mesaj görmelisiniz:
- Amazon SNS'den gelen bir mesaj için e-postanızı kontrol edin ve aboneliği onaylayın.
Çözüm nasıl çalışır?
Bu bölümde, metninizi sentezlemek için çözümü nasıl kullanacağınızı ve her bir ana bileşenin nasıl çalıştığını ayrıntılı olarak açıklıyoruz.
Set dosyası: Sentezlenecek metni belirleme
Amazon Polly'nin seslendirmesini istediğiniz metin tümceleri kümesini a adlı bir dosyada tanımlarsınız. dosya ayarla. Bu bir YAML dosyası ayarlanan ayrıntılardan, bir varsayılanlar koleksiyonundan ve sentezlenecek öğelerin bir listesinden oluşur:
- Ayrıntıları ayarla – Set stanza'da, sete onu diğerlerinden ayırmak için bir isim ve çözüme ses dosyalarının S3 klasörünüzde nerede saklanmasını istediğinizi belirtmek için isteğe bağlı bir çıkış öneki verirsiniz.
- Varsayılanları – İsteğe bağlı varsayılanlar bölümünde, belirli öğeler tarafından geçersiz kılınmadığı sürece geçerli olan parametrelere belirli değerler verebilirsiniz. Aşağıdaki özellikler desteklenir: Amazon Polly API'sinde belgelenmiştir:
- motor - Herhangi biri
standard
orneural
; varsayılanneural
- dil kodu – Desteklenen 20'den fazla dilden herhangi biri; varsayılanlar
en-US
- çıkış formatı -
mp3
,ogg_vorbis
ya dapcm
; varsayılanmp3
- metin türü - Herhangi biri
text
orSSML
; varsayılantext
- ses kimliği – Desteklenen seslerden herhangi biri; varsayılanlar
Matthew
- motor - Herhangi biri
- ürün – Öğeler koleksiyonu, basitçe sentezlenecek metin dizilerinin bir listesidir. Amazon Polly, ayarlanan varsayılanları ve öğede verilen tüm geçersiz kılmaları kullanarak her bir öğenin metnini konuşmaya dönüştürür ve ortaya çıkan dosyaları, kümenin çıktı öneki klasöründeki S3 klasörüne yerleştirir. Bir çıktı dosyası belirtirseniz, dosya belirtildiği şekilde adlandırılır; aksi takdirde çözüm, dosyaya içeriğine ve koleksiyondaki sırasına göre bir ad atar.
Örneğin, Sahne 1 Sahne 1'den altı satırı sentezlemek istiyorsanız Romeo ve Juliet, aşağıdaki koda benzeyen bir YAML dosyası kullanabilirsiniz:
Bu set, Amazon Polly'nin oyundan altı satırı sentezlemesi gerektiğini belirtir. Abraham, Sampson ve Gregory karakterlerini temsil etmek için Joey, Matthew ve Brian seslerini kullanıyoruz. Amazon Polly ile, İbrahim'in “biz” kelimesini vurgulaması ve Sampson'ın ve Gregory'nin fısıldadığı taraflar için olduğu gibi ses ve ton belirtebilirsiniz; için Bunun gibi SSML efektleri, basitçe belirtiyoruz ki text-type
is ssml
ve ifadeyi uygun şekilde süsleyin.
Öğelerin hiçbiri bir çıktı dosyası belirtmediğinden, dosya adları sizin için otomatik olarak oluşturulur. Bu örnekte, oluşturulan MP3 dosyaları act-1-scene-1/item-000000-do-you-bite-your-thumb-at-us-sir.mp3
içinden act-1-scene-1/item-000005-no-sir-i-do-not-bite-my-thumb-at-you-sir.mp3
.
Bu set dosyası (ve diğerleri) docs/samples
kodun dizini. CloudShell'de, bu dosyayı daha önce belirttiğiniz S3 klasörüne yükleyerek Amazon Polly'ye gönderebilirsiniz:
Amazon Polly, dosyadaki altı satırı sentezler. Tüm satırlar sentezlendiğinde, bir e-posta bildirimi alırsınız:
YAML herhangi bir düzenleyicide oluşturulabilir, insanlar tarafından okunması kolaydır ve aşağıdakiler gibi kaynak kontrol sistemlerine giriş yapmak için uygundur: AWS CodeCommit. Ancak set dosyası saf metin dosyası olmalı, .yml dosya uzantısına sahip olmalı ve geçerli YAML olmalıdır.
İşlemciyi Ayarla işlevi
ile bir dosya olduğunda .yml
Uzantı S3 klasörüne yüklendiğinde İşlemci Lambdasını Ayarla işlevi süreci başlatır. Set dosyasını ayrıştırır ve DynamoDB'de buna karşılık gelen bir kayıt oluşturur. Bu set kaydı, sette kaç öğe olduğunu, kaç tanesinin henüz tamamlanmadığını ve set işlemenin ne zaman başladığını takip etmek için kullanılır.
Ardından, koleksiyondaki her öğe için İşlemciyi Ayarla işlevi, çözümün sunucularına bir mesaj (bir tür iş emri) gönderir. Amazon Basit Kuyruk Hizmeti (Amazon SQS) kuyruğu. Bu iş emri, karşıya yüklenen set dosyasındaki talimatlara göre metni sentezlemek için Amazon Polly'nin ihtiyaç duyduğu her şeyi içeren bir JSON belgesidir.
Her mesaj diğerlerinden tamamen bağımsızdır, bu nedenle bunların sentezlenmesi işi Amazon Polly tarafından aynı anda yapılabilir ve hangi sırayla tamamlandıkları önemli değildir. Kümenin adı da iş emrinin bir parçasıdır, bu nedenle çözüm tarafından aynı anda birden çok küme (hatta aynı kümenin birden çok örneği) işlenebilir.
Öğe İşlemci işlevi
Öğe İşlemcisi Lambda işlevi, SQS kuyruğundaki iletileri kullanır ve işleri Amazon Polly'ye gönderir.
Her mesaj, Amazon Polly'nin oluşturması için tek bir ses dosyasını temsil eder. İşlev, API yöntemini çağırır Konuşma Sentez Görevini Başlat, iş emrindeki değerleri yöntemin parametrelerine bağımsız değişken olarak kullanarak. Bu eşzamansız bir API çağrısıdır, dolayısıyla Amazon Polly'nin ses dosyasını bizim için gerçekten ne zaman oluşturduğuna dair hiçbir garantimiz yoktur; ancak tamamlandığında, Amazon Polly bir sonraki Lambda işlevi olan Yanıt İşlemcisi için işlenecek bir SNS mesajı yayınlar.
Öğe İşlemci işlevi ayrıca DynamoDB'deki öğeler tablosuna bir kayıt ekler, böylece çözüm hangi öğelerin başarıyla tamamlandığını ve hangilerinin henüz tamamlanmadığını takip edebilir.
Birçok AWS API'si gibi, Amazon Polly'e saniyede kaç API çağrısı yapabileceğinizi sınırlar. Öğe İşlemci işlevi, makul sınırlar içinde kalması için kısıtlanır ve katlanarak geri çekilir ve yeniden dener işi göndermek, ancak yine de hesap hizmet limitleriniz dahilinde kalmak için gerektiği gibi.
Yanıt İşlemcisi işlevi
Amazon Polly, belirli bir istek üzerinde çalışmayı tamamladığında, SNS yanıt konusuna bir bildirim gönderir. Bu, sıradaki son Lambda işlevi olan Yanıt İşlemcisi tarafından hemen alınır. Bu işlev, DynamoDB'deki öğe ve set kayıtlarının güncellenmesinden ve Amazon S3'teki ses dosyasının istenen dosya adıyla yeniden adlandırılmasından sorumludur.
Amazon Polly, ses dosyasını sentezlemede başarılı olduğunu bildirdiyse, Yanıt İşlemcisi işlevi dosyayı son konumuna taşır. Öğe kaydını günceller taskStatus
için success
ve artırır success
ayarlanan kayıttaki sayaç. Amazon Polly başarısızlık bildirirse işlev, öğe kaydını hata nedeni ile günceller ve failed
ayarlanan kayıttaki sayaç.
Set Garson iş akışı
İncelemek gerekirse, bu Lambda işlevlerinin her biri yalnızca bir olay tarafından tetiklendiğinde çalışır:
- Set İşlemcisi, S3 klasörüne bir set dosyası yüklendiğinde tetiklenir
- Öğe İşlemcisi, iş emirleri SQS kuyruğunda göründüğünde tetiklenir
- Yanıt İşlemcisi, Amazon Polly SNS konusuna bir mesaj yayınladığında tetiklenir
Bu işlevler, aynı anda birden çok kümeden birden çok öğeyi işleyerek eşzamanlı olarak çalışabilir. Bir orkestrasyon süreci olmadan, belirli bir setin ne zaman tamamlandığını nasıl bilebiliriz? Bir şeylerin ters gittiğini nasıl anlarız?
Garson Ayarla, belirli bir kümenin ne zaman biteceğine karar vermek için izlenmesinden veya çözümle ilgili teknik bir sorunun kümeyi terk etmesine neden olup olmadığını bildirmekten sorumlu olan bir Adım İşlevleri iş akışıdır.
Adım İşlevleri Grafiği denetçisinde, işlemdeki Garson Ayarla iş akışı aşağıdaki gibi görünür.
Set Garsonunun bir örneği, gönderilen her set için Set Processor işlevi tarafından başlatılır ve bu set, o seti tanımlayan benzersiz bir ad iletir. Garson, yükleme aşamasında ayarlanan kaydı DynamoDB tablosundan yükler ve kontrol aşamasında tamamlanıp tamamlanmadığını kontrol eder. Amazon Polly'nin hâlâ işleyecek görevleri varsa, işlev yeniden başlamadan önce bekleme aşamasında birkaç saniye bekler.
Kümedeki her görev Amazon Polly tarafından işlendiyse Set Garsonu, tamamlama SNS konusuna bir mesaj yayınlayan bildirim aşamasına geçer. Devam eden bir kümede yakın zamanda herhangi bir değişiklik yapılmadıysa, Set Garsonu bir şeylerin ters gittiğini varsayar ve konuya terk edilmiş bir mesaj gönderir.
Temizlemek
Çözümü hesabınızda istediğiniz kadar bırakabilirsiniz. Kullanılmadığında, yalnızca ses dosyalarının Amazon S3'te depolanması ve DynamoDB tablolarındaki veriler için ödeme yaparsınız. Sentezlenecek metniniz olduğunda, S3 grubuna bir set dosyası yüklemeniz yeterlidir ve çözüm onu oradan alır. Lambda işlevi çağrıları için ödeme yaparsınız ve aslında Amazon Polly tarafından işlenen karakterler. İçindeki 1.1 milyon karakterin tümü sentezleniyor Moby Dickörneğin, standart sesler için 5 doların altında ve daha yüksek kaliteli nöral sesler için 20 doların oldukça altındadır.
Çözümü tekrar kullanmamaya karar verirseniz, kullanarak tüm kaynaklarını silebilirsiniz. AWS CloudFormation:
Sonuç
Bu gönderide, Amazon Polly'nin eşzamansız olarak işlemesi için büyük miktarlarda metin tümcesi göndermeye yönelik sunucusuz, olay odaklı bir çözümü açıkladık. Bu yaklaşımla, oluşturulan ses dosyalarını kaç kez çalarsanız çalın, sentez için yalnızca bir kez ödeyerek maliyetlerinizi düşük tutabilirsiniz.
Çözümü, bir AWS SAM uygulaması olarak dakikalar içinde hesabınıza dağıtabilirsiniz. Set dosyaları adı verilen YAML dosyalarında dönüştürülecek metni siz belirlersiniz. Çözümün S3 klasörüne bir set dosyası yüklendiğinde (bir insan tarafından manuel olarak veya bir kod ardışık düzeni tarafından otomatik olarak), bir dizi Lambda işlevi (Set İşlemcisi, Öğe İşlemcisi ve Sonuç İşlemcisi) görevleri göndermek için birlikte çalışır. Amazon Polly ve sizin için ses dosyalarını toplayın. Tüm çalışmalar tamamlandığında, bir SNS konusuna bir bildirim yayınlanır.
Çözüm, GitHub'da açık kaynaklı bir proje olarak geliştirildi. Özellik isteklerinizi, hata raporlarınızı veya katkılarınızı memnuniyetle karşılıyoruz. Bunu kendi başınıza deneyin ve yorumlarda ne düşündüğünüzü bize bildirin. Amazon Polly'nin size nasıl yardımcı olabileceği hakkında daha fazla bilgi edinmek için, web sayfamızı ziyaret edin!
Yazarlar Hakkında
Jon Peterson AWS'de Kıdemli Çözüm Mimarıdır. Eşi ve iki çocuğuyla Chicago dışında yaşıyor.
Prateek Jain Atlanta Georgia merkezli, AWS'li bir Çözüm Mimarıdır. Bulut konusunda tutkulu ve müşterilerin AWS'de harika çözümler oluşturmasına yardımcı oluyor.
- '
- 100
- 7
- erişim
- Hesap
- ajanları
- Havaalanları
- Türkiye
- Amazon
- Amazon Polly
- api
- API'ler
- Uygulama
- uygulamaları
- mimari
- argümanlar
- Atlanta
- ses
- Otomatik
- AWS
- Böcek
- inşa etmek
- otobüs
- çağrı
- durumlarda
- değişiklik
- denetleme
- Çekler
- Chicago
- Çocuk
- bulut
- kod
- yorumlar
- ortak
- bileşen
- içindekiler
- maliyetler
- Kullanıcı Desteği
- Müşteriler
- veri
- ayrıntı
- editör
- E-posta
- çevre
- Etkinlikler
- Başarısızlık
- Özellikler(Hazırlık aşamasında)
- Ücretsiz
- işlev
- Games
- Git
- GitHub
- Ne kadar
- Nasıl Yapılır
- HTTPS
- İnsanlar
- IAM
- Dahil olmak üzere
- bütünleşme
- IT
- Mesleki Öğretiler
- Diller
- büyük
- Kanun
- ÖĞRENİN
- çizgi
- Liste
- yük
- yerel
- yer
- Uzun
- büyük
- milyon
- hamle
- isimleri
- sinirsel
- tebliğ
- sayılar
- açık
- açık kaynak
- sipariş
- emir
- Diğer
- Diğer
- ifadeler
- Mesajlar
- özel
- proje
- halka açık
- Okuma
- kayıtlar
- Raporlar
- Kaynaklar
- yanıt
- restoran
- Sonuçlar
- yorum
- koşmak
- koşu
- Dizi
- Serverless
- Hizmetler
- set
- ayar
- paylaş
- Paylaşılan
- Kabuk
- Basit
- ALTINCI
- So
- Çözümler
- geçirmek
- başladı
- Eyalet
- kalmak
- hafızası
- hikayeler
- gönderilen
- abone
- başarı
- başarılı
- destek
- destekli
- sistem
- Sistemler
- konuşma
- Teknik
- Sesler
- zaman
- iz
- Güncellemeler
- us
- Video
- video oyunları
- Sanal
- ses
- SESLER
- hacim
- beklemek
- içinde
- İş
- iş akışı
- çalışır