SSML, czyli Speech Synthesis Markup Language, to taki specjalny język znaczników, który pozwala sterować w szczegółowy sposób tym, jak syntezator mowy (TTS) odczytuje tekst. I moim zdaniem, to jest właśnie esencja pracy z profesjonalnym TTS-em – nie tylko wrzucamy tekst, ale faktycznie możemy decydować o tym, jak on zabrzmi. Dzięki SSML możemy np. ustawić pauzy, zmienić ton głosu, podkreślić wybrane frazy, a nawet sterować tempem i głośnością. To wszystko ma ogromne znaczenie, zwłaszcza kiedy zależy nam na naturalności lub chcemy, by komunikaty były bardziej zrozumiałe dla użytkowników. Wyobraź sobie system informacyjny na dworcu albo książkę audio: bez SSML głos byłby monotonny i często nienaturalny. A tak, przy pomocy chociażby tagów <break> (pauza), <prosody> (zmiana tempa czy wysokości głosu) czy <emphasis> (podkreślenie), dokładnie ustawiamy, jak mają zabrzmieć konkretne fragmenty tekstu. W praktyce, to jest standard branżowy wspierany przez najpopularniejsze narzędzia TTS: Google Cloud Text-to-Speech, Amazon Polly, Microsoft Azure TTS i wiele innych. Dobrym zwyczajem jest testowanie różnych ustawień SSML, żeby znaleźć najbardziej naturalny sposób przekazania tekstu – szczególnie w projektach, gdzie doświadczenie użytkownika odgrywa kluczową rolę. Takie możliwości daje właśnie SSML – precyzyjna kontrola nad wypowiadaniem tekstu, a nie tylko sucha konwersja znaków na mowę.
Przy projektowaniu i wdrażaniu rozwiązań TTS łatwo popełnić błąd, myląc pojęcia związane z przetwarzaniem dźwięku, analizą tekstu czy konfiguracją systemu. W przypadku SSML, często można natknąć się na przekonanie, że dotyczy on formatu pliku wyjściowego – tymczasem rzeczywista rola SSML polega na sterowaniu sposobem wypowiadania tekstu przez syntezator, a nie na definiowaniu, czy wynik będzie w MP3, WAV czy innym formacie. Za wybór formatu odpowiadają ustawienia samego programu TTS lub interfejsu API, a nie znaczniki w tekście. Podobnie, SSML nie służy do konfigurowania wyglądu tekstu w programach – ta funkcjonalność jest domeną edytorów tekstu czy systemów typograficznych, a nie narzędzi do syntezy mowy. Sformułowanie „konfiguracja sposobu wyświetlania tekstu” dotyczy raczej GUI lub edytorów treści, co w kontekście TTS zupełnie mija się z celem. Również poprawa wymowy za pomocą dedykowanych słowników to zupełnie inna kategoria – tutaj korzysta się z tzw. custom pronunciation lexicons, które pozwalają określić wymowę trudnych słów lub nazw własnych, ale nie mają one związku ze znacznikami SSML; to raczej osobny moduł lub plik, który przechowuje pary wyraz-wymowa. W praktyce, typowym błędem jest utożsamianie SSML z jakąkolwiek formą zaawansowanej konfiguracji wyjścia – a przecież jego jedynym zadaniem jest umożliwienie precyzyjnej kontroli nad wypowiadaniem tekstu: gdzie zrobić pauzę, jak wymawiać liczby, jakie emocje przekazać w głosie. Sam wielokrotnie widziałem, jak te nieporozumienia prowadzą do frustracji podczas integracji TTS w systemach – ktoś próbuje zmienić format pliku przez SSML, a potem się dziwi, że nic się nie dzieje. Warto więc pamiętać, że SSML to narzędzie do kreowania brzmienia wypowiedzi, a nie do zarządzania plikami czy wyglądem tekstu.