Syntezator mowy AWS Polly: AI w chmurze, czyli co powinien wiedzieć każdy developer

Synteza mowy polega na mechanicznej zamianie tekstu na mowę. Nie wiem jak Tobie, ale mnie w pierwszej kolejności przychodzi do głowy nienaturalnie brzmiący głos kobiety generowany w programie Ivona* sprzed dekady. Później przyszło nam rozmawiać z Alexą, Siri czy Jarvisem, jednak tak przywykliśmy do ich głosu, że nie mamy wątpliwości, iż jest sztuczny. Czy osiągnięcia głębokiego uczenia maszynowego syntetyzują mowę, której już nie odróżnisz od ludzkiej?

Polly to jedna z ponad 200 usług dostępnych na AWS i jedna z 20 usług w kategorii AI. Te ostatnie nie wymagają posiadania wiedzy związanej z uczeniem maszynowym, wystarczy komunikacja przez API, abyś mógł tworzyć mówioną narrację z dowolnego tekstu. Oferuje aż 60 języków, a dla każdego z nich kilka głosów męskich i żeńskich. 

Jak ożywić i kontrolować mowę?

Co sprawia, że wypowiedź brzmi naturalnie? To westchnięcia, pauzy, zmiany tonu i tempa mówienia. Jedną z miar sukcesu syntezatora mowy jest podobieństwo do ludzkiego głosu. Żeby ożywić brzmienie tekstu, wykorzystuje się język znaczników, który pozwala na kontrolę rytmu wypowiedzi i imitację emocji. Bazuje on na XML i nosi nazwę język znaczników syntezy mowy (Speech Synthesis Markup Language – SSML). Pozwala on również na wplatanie słów w innym języku i rozwijanie skrótów.

<speak>
    Czasami potrzebujesz <amazon:breath/> 
    jeden lub więcej wdechów <amazon:breath/> 
    aby tekst brzmiał bardziej naturalnie
</speak>
<speak>
  <say-as interpret-as="cardinal">12345</say-as>,
  oraz
  <say-as interpret-as="ordinal">1</say-as>, 
  jako liczebnik porządkowy.
</speak>
<speak>
     <amazon:breath duration="long" volume="x-loud"/>
     <prosody rate="120%"> 
          <prosody volume="loud"> Wow! 
               <amazon:breath duration="long" volume="loud"/> 
          </prosody> That was quite fast 
          <amazon:breath duration="medium" volume="x-loud"/>. 
          I almost beat my personal best time on this track. 
     </prosody>
</speak>

Jak obsłużyć wymowę nietypowych skrótów i akronimów?

Jedną z trudności w pracy z językiem naturalnym jest pokrycie całego słownika. Wyobraź sobie mnogość glosariuszy dla każdej dziedziny nauki, zapożyczenia oraz akronimy. Czy sam potrafiłbyś przeczytać wszystkie słowa poprawnie?  Mimo że w języku polskim jest stosunkowo mała rozbieżność między wymową a pisownią (‘kredka’ to pisownia, /kretka/ to wymowa), to w przypadku innych języków nie jest to regułą. Tylko generyczne rozwiązanie rozwiąże problem prawidłowej syntezy specyficznych słów. A gdyby tak przerzucić odpowiedzialność za zdefiniowanie wymowy skrótów czy branżowych słów na konsumenta usługi? Leksykony wymowy (pronunciation lexicons), bo takie miano nosi recepta na wyżej opisane problemy, rozwiązuje je wszystkie.

Jeden z przykładów powyżej wprawdzie definiuje wymowę skrótu ZUS, jednak tylko dla tego jednego wystąpienia. Innymi słowy, jeśli w Twoim tekście dany skrót występuje wiele razy, musisz określić jego wymowę w każdym miejscu. Pronunciation lexicons dają większą swobodę. Jeśli raz określisz  „g3t sm4rt” jako „get smart”, silnik interpretujący tekst postąpi według tej reguły za każdym razem, gdy napotka ten zestaw liter.

<lexicon version="1.0">
  <lexeme>
    <grapheme>ZUS</grapheme>
    <alias>zakład ubezpieczeń społecznych</alias>
  </lexeme>
</lexicon>

Po zdefiniowaniu wymowy ZUS w leksykonie nie potrzebujesz już SSML dla tego skrótu.

Jakie zastosowanie ma syntezator mowy?

Prezenter wiadomości

Do czytania artykułów prasowych i dostarczania krótkich aktualizacji informacyjnych AWS stworzył dodatkową kategorię głosów, „prezentera wiadomości”. Niestety, jest on tylko dostępny dla wąskiej grupy języków.

<speak> 
    <prosody rate="115%"><amazon:domain name="news"> 
        From the Tuesday, April 16th, 1912 edition of The Guardian newspaper: 
        The maiden voyage of the White Star liner Titanic, 
         the largest ship ever launched, has ended in disaster. 
    </amazon:domain> </prosody>
</speak> 

E-learning i animacje awatarów

Kiedy poszczególne zdania i słowa są odtwarzane, oprócz samego pliku mp3 otrzymujemy również dodatkowe informacje w formie tekstowej  (speech marks). Ułatwia to animację czy wyświetlanie napisów w wideo, któremu towarzyszy wygenerowany tekst, na przykład w grach. Jeśli dodamy do tego wspomnianą możliwość definiowana dokładnej wymowy, zrozumiemy, dlaczego firmy takie jak Duolingo decydują się na korzystanie z Polly.

{"time":0,"type":"sentence","start":0,"end":20,"value":"So what do you want?"}
{"time":6,"type":"word","start":0,"end":2,"value":"So"}
{"time":157,"type":"word","start":3,"end":7,"value":"what"}
{"time":384,"type":"word","start":8,"end":10,"value":"do"}
{"time":545,"type":"word","start":11,"end":14,"value":"you"}
{"time":749,"type":"word","start":15,"end":19,"value":"want"}

Asystent głosowy

Wprawdzie zakres asystentów głosowych zalicza się do chat botów, co w systemie Amazona realizuje usługa Lex, jednak w wariancie konwersacji, gdzie chat bot odpowiada głosowo, mowę syntezuje Polly.

Telefonia, call center

„Faktury, płatności, wciśnij jeden”. Dla przedsiębiorstw, które korzystają z linii wsparcia produktowego w wielu krajach i językach, możliwość dokonywania zmian tekstu czytanego przez automatyczną sekretarkę, bez zaprzęgania do tej pracy człowieka, jest znaczącą optymalizacją.

Komunikacja miejska

Raz odczytane nazwy przystanków mogą być odtwarzane bez końca, bez dodatkowych kosztów. Materiały wygenerowane przez Polly nie posiadają żadnej licencji.

Potrzebujesz pomocy z wdrożeniem syntezatora mowy?

Pomogę Ci. Napisz na ja@radekbialowas.pl

Jak zacząć?

Jeśli chcesz skorzystać z aplikacji demonstracyjnej, to –  w przeciwieństwie do analogicznego rozwiązania w chmurze Google – AWS najpierw wymaga stworzenia konta. Następnie po zalogowaniu się do webowej konsoli i wybraniu usługi Polly możesz zacząć interaktywną zabawę. Wprowadź  tekst albo SSML, zmień język albo głos i od razu odsłuchaj wynik.

Alternatywnie możesz użyć wiersza poleceń i CLI AWS.

aws polly synthesize-speech \
    --output-format mp3 \
    --voice-id Jacek \
    --text 'Tutaj wprowadź tekst' \
    nazwa-pliku.mp3

Ile to kosztuje?

Układ jest prosty: płacisz za liczbę znaków w przetwarzanym tekście. Sam wybór języka nie wpływa na kwotę, którą zobaczysz na rachunku. Głosy natomiast dzielą się na dwie kategorie: Standard i Neural. Te drugie są wyższej jakości, ich brzmienie bardziej przypomina głos człowieka, ale też kosztują więcej.

Angielska wersja „Władcy Pierścieni: Drużyna Pierścienia” ma około miliona znaków,  zatem za przeczytanie powieści (co zajmie prawie dobę) zapłacimy 65 zł.

Jaka jest największa wartość tej funkcji?

Przewaga tej usługi nie polega na bezbłędnej imitacji ludzkiego głosu, ale na automatyzacji generowania mowy. Czy znajdziesz lektora, który za 3 zł/h będzie czytał w dowolnym języku? Nawet jeśli żyje taki wolontariusz, to Polly wygeneruje kilka godzin audiobooka w ułamku sekundy.


* – Na wstępie odniosłem się pejoratywnie do syntezatora mowy Ivona. Aby sprawiedliwości stało się zadość, należy się sprostowanie. Program ten dwa razy z rzędu został uznany za syntezator generujący mowę o najwyższej jakości na międzynarodowym konkursie Blizzard Challenge w USA oraz Niemczech, pokonując produkty takich firm jak IBM, Microsoft czy Nokia. W 2013 roku firma została kupiona przez Amazon. Innymi słowy, wielki sukces rodzimej firmy.

Udostępnij ten wpis


Dobrnąłeś do końca. Jeśli ten artykuł był dla Ciebie wartościowy i chcesz otrzymywać informacje o kolejnych, to zapraszam Cię do zapisania się do listy mailingowej. Gwarantuję zero spamu.

Radek.

Inne artykuły

ML w AWS – Sagemaker Autopilot

Automatyczne tworzenie modeli uczenia maszynowego z pełną widocznością w usłudze AWS Sagemaker – korzyści z wygenerowanego Jupyter Notebooka.

ML w AWS – Sagemaker Studio – IDE w przeglądarce

Sagemaker Studio – interaktywne środowisko dla Data Scientist. Z Jupyter Notebooks na pokładzie, oferuje współpracę, śledzenie eksperymentów i integrację z systemem kontroli wersji. Przegląd quasi …

ML w AWS – wstęp do usługi Sagemaker

Sagemaker: Wytwarzanie usług ML w chmurze AWS na nowym poziomie Odkryj potężną usługę Sagemaker, która gromadzi wszystkie niezbędne funkcjonalności związane z wytwarzaniem usług uczenia maszynowego w …

Rozwijasz czy produkujesz oprogramowanie?

Opracowywanie przepisów to proces uczenia się metodą prób i błędów. Nie oczekujesz, że pierwsza próba nowego dania wykonana przez szefa kuchni będzie ostatnią. W rzeczywistości …

Lean software development – eliminacja strat

Dowiedz się, jak wyeliminować marnotrawstwo i przyjąć zasady szczupłego rozwoju oprogramowania, aby dostarczyć więcej wartości swoim klientom przy mniejszym nakładzie pracy.