Sytuacja kobiet w IT w 2024 roku
27.02.20208 min
Joanna Sitkowska

Joanna SitkowskaSenior Product Owner

Projektowanie interfejsów głosowych z wykorzystaniem ML i AI

Sprawdź, jak mechanizmy ML i AI pomaga w projektowaniu interfejsów głosowych.

Projektowanie interfejsów głosowych z wykorzystaniem ML i AI

Interfejsy głosowe zyskują na popularności. Ich wykorzystanie i zastosowanie wciąż znajduje się w czołówce trendów technologicznych na 2020 rok. Globalne badanie przeprowadzone przez Accenture wśród 22,5 tys. internautów z 21 krajów wykazało, że blisko połowa konsumentów online na całym świecie korzysta z asystentów głosowych. W Polsce ten odsetek jest wyraźnie niższy, a sama technologia wciąż jest pewnego rodzaju nowością.

Według badania Digital Consumer Survey 2019, 27 proc. polskich internautów korzysta z interfejsów głosowych. Dotyczy to zarówno rozwiązań wbudowanych w smartfony i komputery (np. wirtualny asystent Microsoft- Cortana czy  Apple’a- Siri), ale także samodzielnych urządzeń, np. Amazon Alexa czy Google Home.

Ograniczony zakres wirtualnych asystentów w pewnym stopniu zależy od ograniczeń językowych. Projektowanie interfejsów głosowych w języku polskim jest sporym wyzwaniem i obarczone ryzykiem dostępności tylko podstawowych funkcjonalności. Te bardziej zaawansowane po prostu nie będą działać. Posłużę się przykładem Amazona z linią Echo oraz wirtualną asystentką Alexą. Liczba dostępnych funkcjonalności spod znaku voice search, jest zależna od kraju użytkownika. Najwięcej dostępnych jest na rynku amerykańskim (ponad 56 tysięcy), druga w kolejności Wielka Brytania, ma ich już „tylko” 30 tysięcy.

Często zatem jedynym sposobem komunikacji i pełnego wykorzystania możliwości rozwiązania jest przełączenie języka urządzenia na jeden  z obsługiwanych. Asystent Google’a przeciera szlaki na naszym polskim podwórku i próbuje wypełnić tę lukę

Kilka lat temu próbowałam zaprojektować asystenta głosowego w języku polskim, ale na angielskiej wersji przeglądarki, w oparciu o którą testowałam swój prototyp. Efekt? Wyszła z tego zabawna wersja ponglish.

Generalnie zasady projektowania interfejsów głosowych (VUI)) i graficznych (GUI), znacząco się od siebie różnią. Podstawową różnicą jest zupełnie inny model interakcji z użytkownikiem oraz brak kompendium sprawdzonych rozwiązań. Problem dotyczy zresztą także dużych rynkowych graczy. Swego czasu głośna była sytuacja z Siri, która pomyliła hymn Bułgarii z Despacito.

Jak w takim razie projektować interfejsy głosowe aby uniknąć tego typu błędów?

Z punktu widzenia programisty klucz do sukcesu tkwi w „intent recognition”, czyli takim zaprojektowaniu skilla, aby możliwe było rozpoznanie intencji użytkownika i tego, co ma na myśli. Rozpoznawanie faktycznych intencji czy kontekstu oraz generalnie pragmatyka języka, wciąż stanowi największe wyzwanie dla tego typu rozwiązań.

Aby osiągnięcie tego efektu było możliwe, nad scenariuszami dialogów pracują nie tylko UX designerzy, ale również lingwiści i kulturoznawcy. Przygotowują oni po kilkadziesiąt wersji tego samego pytania i wykorzystują mechanizmy uczenia maszynowego i sztucznej inteligencji do „trenowania” modelu. 

To właśnie technologie AI (np. technologie semantyczne, uczenie maszynowe) sprawią, że interakcje będą stawać się bardziej naturalne oraz przyczynią się do doskonalenia technik rozpoznawania głosu i przetwarzania języka naturalnego.

Projektowanie interfejsów graficznych to w dużej mierze domena projektantów UX i lingwistów. Zdefiniowanie dialogów, przygotowanie odpowiedniej ścieżki użytkownika (flow dialogu), opracowanie person czy testów, to elementy bez których trudno będzie mówić o dobrej aplikacji głosowej. Dobrze w tym przypadku sprawdza się metoda prototypowania i testowania wczesnych koncepcji produktu, zwana Wizard of Oz. W największym skrócie polega ona na wejściu użytkownika w interakcję z systemem/aplikacją, która w rzeczywistości jest jedynie mockupem, pod spodem technologii kryje się zaś człowiek. Jego zadaniem jest symulacja działania systemu w celu poznania rzeczywistych zachowań i oczekiwań użytkowników. Bez backendu i developmentu.

Osobom, które chciałyby stworzyć własny prototyp pod np. Alexa Skill czy Google Assistant i przetestować jego możliwości, polecam Botsociety. Dobrym narzędziem był też swojego czasu Sayspring oraz Voiceflow.

Pytanie, co dzieje się „pod spodem” w tego typu rozwiązaniach?

Jak to się dzieje, że jesteśmy w stanie przygotować rozwiązania kontekstowe i wykorzystujące elementy przetwarzania kognitywnego? Są najbardziej zaawansowane spośród pozostałych. Wykorzystują technologię machine learning, aby „zapamiętać” konwersację z użytkownikiem i na bazie częstotliwości pojawiających się pytań/odpowiedzi moderować kolejne. 

Z uwagi na konieczność zrozumienia kontekstu słów w zdaniu, tworzona jest ich reprezentacja liczbowa (a dokładniej wektorowa). W zależności od częstości i bliskości występowania poszczególnych słów, określona zostaje długość wektora. Im ta odległość jest mniejsza, tym większe jest prawdopodobieństwo występowania słów obok siebie. Reprezentacja wektorów pozwala
na stworzenie relacji między słowami, np. synonimów, antonimów.

Inną metodą reprezentacji wektorowej jest Doc2vec, która odnosi się do całych zdań, a nie pojedynczych słów. Dodany tutaj zostaje dodatkowy unikalny wektor, reprezentujący całość.

Aby zintegrować rozwiązania głosowe ze swoją aplikacją, potrzebne będzie przynajmniej podstawowe zrozumienie mechanizmów:

  • przetwarzania języka naturalnego (NLP)
  • NLU(Natural Language Understanding)- rozpoznawanie intencji
  • STT(Speach-to-Text)- synteza mowy na tekst
  • TTS(Text-to-Speach)- synteza tekstu na mowę
  • PLS(Pronunciation Lexicon Specification)- mechanizmy rozpoznawania mowy i syntezy
  • SSML(Speech Synthesis Markup Language) – język znaczników syntezy mowy
  • SRGS(Speech Recognition Grammar Specification)- gramatyczna specyfikacja rozpoznawania mowy.


Zdaję sobie sprawę, jak enigmatyczny jest wydźwięk tego zdania ;-)

SSML stosowany jest do "ubarwiania" tekstowych dialogów, określając sposób wypowiadana danej kwestii (np. który syntezator mowy wykorzystać). SGRS podpowiada programowi rozpoznającemu mowę, jakich wzorców słów powinien oczekiwać.

Przetwarzanie języka naturalnego (NLP) wykorzystuje językoznawstwo oraz uczenie maszynowe do parsowania ludzkiego języka opartego na tekście i przetwarzania wyrażeń dla określonych zdarzeń. Zajmuje się automatyzacją analizy, rozumienia, znajdowania określonych wzorców, tłumaczenia i generowania języka naturalnego przez komputer. 

Kluczowe funkcje NLU (Natural Language Understanding) obejmują rozpoznawanie intencji, identyfikowanie parametrów i encji, tj. danych niezbędnych do realizacji polecenia użytkownika (entity extraction), analizę sentymentu, tj. emocjonalnego nacechowania wypowiedzi usera (sentiment analysis) oraz śledzenie kontekstu rozmowy w trakcie wymiany kolejnych wiadomości (context persistence).

Najlepsze wersje demo narzędzi do NLP i NLU, dostępne jako open source lub usługa online, to: 

BERT NLP
GPT-2
SpaCy 
AlenNLP 


Dwoma najważniejszymi komponentami, które uzupełniają NLP i pozwalają nam, jako ludziom, mówić i słuchać maszyn, są syntezator mowy (TTS) i syntezator tekstu (STT).

Dzięki Speach-to-text (STT) aplikacje zyskują funkcje transkrypcji mowy. Wykorzystuje ona informacje o strukturze języka i sygnału dźwiękowego. Rozwiązanie pozwala z dużą pewnością i dokładnością rozpoznawać w plikach dźwiękowych różnych mówców i konkretne słowa kluczowe. STT sprowadza się do parsowania słyszalnych słów na tekst i łatwe przekształcanie dźwięku na tekst pisany w celu szybkiego interpretowania treści.

Transkrypcja plików audio może być dokonana w różnych celach — od zebrania w czasie rzeczywistym, po analizowanie wielu nagrań w celu przeprowadzenia wartościowej analizy. Dobrym przykładem może być Google Cloud Speech API, który konwertuje strumień audio i rozpoznaje ponad 80 języków przy użyciu zaawansowanych modeli sieci neuronowych. Interfejs API odsyła zwykły tekst, który można następnie skierować do usług opartych na NLP.

Text-to-Speech (TTS)

To dokładnie przeciwny kierunek w stosunku do STT. Tekst pisany jest  przekształcany w naturalnie brzmiącą mowę w różnych językach i z możliwością wyboru różnych głosów, a nawet dialektów (taką możliwość daje między innymi usługa TTS IBM Watson).

Istnieje dziś kilka niezależnych usług TTS, które można wykorzystać w swoich projektach. Jako przykład mogę podać IVONA w Amazon Polly. To usługa w chmurze od AWS, która przekształca tekst w realistycznie brzmiącą mowę. Pozwala tworzyć aplikacje, które mówią i budować zupełnie nowe kategorie produktów obsługujących mowę. Wszystko odbywa się poprzez wysyłkę prostych żądań HTTP z tekstem, który chcemy zsyntetyzować, a w odpowiedzi otrzymujemy HTTP ze strumieniem audio, który może zostać odtworzony użytkownikom końcowym. Jest to ta sama usługa TTS, która odpowiada za głos Amazon Alexa.

Speech Synthesis Markup Language (SSML)

Podobnie jak HTML i XML, SSML jest językiem znaczników, który zapewnia wymianę informacji między systemami i usługami. Tak, jak HTML dostarcza przeglądarkom internetowym informacji co do wyświetlanych treści, SSML dostarcza silnikom TTS informacje nie tylko o tym, co powiedzieć, ale także jak to powiedzieć.

Posłużę się prostym przykładem: Do silnika TTS trafia tekst „321 start!”. W domyśle chcemy otrzymać  odliczanie od 3 do 1. A tymczasem w odpowiedzi najprawdopodobniej otrzymamy „trzysta dwadzieścia jeden, start”

Jedną z rzeczy, które możemy zrobić, aby tekst faktycznie brzmiał jak odliczanie, jest użycie elementu <say-as> SSML. W tym prostym przypadku możliwe jest oczywiste obejście, na przykład można użyć spacji między liczbami, aby wymusić odliczanie, ale w przypadku zaawansowanych funkcji, takich jak modyfikacja wymowy, akcentowanie pewnych wyrazów, modyfikację głośności, wysokości i szybkości mowy, efekty dźwiękowe itp., SSML będzie najlepszą opcją.

Alexa obsługuje również pewien niestandardowy tag, który daje możliwość dodania efektu szeptu. Efekt jest naprawdę dobry, kiedy otrzymujemy od Alexa jakąś informację „w sekrecie” ;-)  

Możliwości jest tutaj naprawdę wiele. Zainteresowanych pogłębieniem tematu możliwości, jakie daje SSML, odsyłam chociażby do opisu kognitywnych usług Microsoftu albo Amazona.

Ludzie z różnych regionów lub kultur, mogą wypowiadać to samo słowo na różne sposoby. Dzięki wykorzystaniu Międzynarodowego Alfabetu Fonetycznego (IPA) lub Rozszerzonej Metody Oceny Mowy Alfabetu Fonetycznego (X-SAMPA), dużo łatwiejsze będzie znalezienie prawidłowej transkrypcji fonetycznej.

Dodatkowe możliwości, które możemy wykorzystać w implementacji rozwiązań voicowych to speaker recognition oraz speach translation.

Speaker Recognition

Pomaga identyfikować i weryfikować użytkowników za pomocą haseł głosowych i mowy. W fazie rejestracji mówcy, nagrywany jest jego głos z określoną frazą (hasłem). Utworzona zostaje w ten sposób unikalna sygnatura głosowa. Aby skorzystać z danej usługi należy podać swoje hasło, które zostanie sprawdzone pod kątem stopnia zbieżności z głosem zapisanym w trakcie rejestracji.

Aplikacje mogą wykorzystywać głos jako dodatkowy czynnik weryfikacji w trakcie korzystania z usług w call center czy bankach. Mogą również używać głosu do identyfikacji „kto mówi”, biorąc pod uwagę grupę zapisanych w bazie mówców. 

Speach Translation

To możliwość automatycznego, kompleksowego i wielojęzykowego tłumaczenia mowy w czasie rzeczywistym. Aplikacje mają dostęp do transkrypcji źródłowych dla dostarczonego dźwięku. Tymczasowe transkrypcje i tłumaczenia są zwracane po wykryciu mowy, a wyniki końcowe można przekształcić w mowę syntetyzowaną.

Mechanizm tłumaczące mogą być oparte na dwóch różnych podejściach: statystycznym tłumaczeniu maszynowym (SMT) i neuronowym tłumaczeniu maszynowym (NMT). SMT wykorzystuje zaawansowaną analizę statystyczną do oszacowania najlepszych możliwych tłumaczeń, biorąc pod uwagę kontekst kilku słów. Dzięki NMT, sieci neuronowe są używane do zapewnienia dokładniejszych tłumaczeń przy użyciu pełnego kontekstu zdań.

Dostępne na rynku produkty i usługi powoli otwierają się już na kolejne rozwiązania. Wartym uwagi są działania nowozelandzkiego startupu Soul Machines. Opracowali oni wirtualnego asystenta głosowego, któremu nadali wszelkie cechy ludzkiej twarzy (mimika, stany emocjonalne, ruchy gałek ocznych).

Dzięki ekspertom neurobiologii, biometrii i psychologii, humanoid jest w stanie odwzorować typową konwersację międzyludzką prowadzoną face to face. To rozwiązanie będzie miało zastosowanie przede wszystkim w obszarach związanych z obsługą klienta. Ludzie chcą mieć poczucie, że po drugiej stronie jest człowiek, a nie maszyna. Nawet jeśli to tylko złudzenie. Kilka dni temu pojawiła się wiadomość, że wirtualny asystent zostanie wdrożony w nowozelandzkiej policji.

Czas pokaże, jak ta technologia będzie się dalej rozwijała i jak silną pozycję zbudują interfejsy głosowe na polskim rynku.

<p>Loading...</p>