Dokumentacja Speech Synthesis Markup Language (SSML) (beta)

Platforma Actions on Google obsługuje wiele funkcji SSML w wersji beta, a także standardowe elementy SSML w Actions on Google.

Podsumowanie obsługiwanych funkcji SSML w wersji beta:

  • <phoneme>: dostosuj wymowę określonych słów.
  • <say-as interpret-as="duration">: podaj czasy trwania.
  • <voice>: przełączanie się między głosami w tej samej prośbie.
  • <lang>: użyć wielu języków w tym samym żądaniu.
  • Punkty w czasie: użyj tagu <mark>, aby zwrócić punkt w czasie określonego punktu w transkrypcji.

<phoneme>

Tagu <phoneme> możesz używać do tworzenia niestandardowych wymowy słów w tekście. Actions on Google akceptuje alfabety fonetyczne IPA i X-SAMPA. Lista obsługiwanych języków i fonemy znajdziesz na stronie fonemy.

Każde zastosowanie tagu <phoneme> kieruje wymową pojedynczego słowa:

  <phoneme alphabet="ipa" ph="ˌmænɪˈtoʊbə">manitoba</phoneme>
  <phoneme alphabet="x-sampa" ph='m@"hA:g@%ni:'>mahogany</phoneme>

Oznaczenia stresu

Transkrypcja może mieć maksymalnie 3 poziomy stresu:

  1. Główne naprężenie: oznacza się ˈ w IPA i " w X-SAMPA.
  2. Naprężenie dodatkowe: oznaczone ˌ w IPA i % w X-SAMPA.
  3. Niesprecyzowany: nieoznaczony symbolem (w żadnym z tych zapisów).

Niektóre języki mogą mieć mniej niż 3 poziomy lub w ogóle nie oznaczać pozycji stresu. Wejdź na stronę fonemy, aby sprawdzić poziomy stresu dostępne dla Twojego języka. Znaczniki stresu są umieszczone na początku każdej podkreślonej sylabi. Na przykład w języku angielskim (USA):

Przykładowe słowo IPA X-SAMPA
za wodę ˈwɑːtɚ "wA:t@`
pod wodą ˌʌndɚˈwɑːtɚ %Vnd@"wA:t@

Szerokie i wąskie transkrypcje

Zasadniczo transkrypcje powinny mieć szerszy i fonetyczny charakter. Na przykład w języku angielskim (USA) przetranskrybuj interwencję t (zamiast używać kliknięcia):

Przykładowe słowo IPA X-SAMPA
masło ˈbʌtɚ zamiast ˈbʌɾɚ "bVt@` zamiast "bV4@`

W niektórych przypadkach użycie fonetycznego przedstawienia wyników zamiany tekstu na mowę może brzmieć nienaturalnie (np. jeśli sekwencja fonemów jest trudna do wymówienia).

Jednym z przykładów jest asymilacja głosu w języku angielskim: s. W takim przypadku asymilacja powinna zostać odzwierciedlona w transkrypcji:

Przykładowe słowo IPA X-SAMPA
koty ˈkæts "k{ts
psy ˈdɑːgz zamiast ˈdɑːgs "dA:gz zamiast "dA:gs

Redukcja

Każda sylaba musi zawierać jedną (i tylko jedną) samogłoskę. Oznacza to, że należy unikać sylabicznych spółgłosek i przetranskrybować je z zmniejszoną samogłoską. Przykład:

Przykładowe słowo IPA X-SAMPA
kotek ˈkɪtən zamiast ˈkɪtn "kIt@n zamiast "kitn
czajnik ˈkɛtəl zamiast ˈkɛtl "kEt@l zamiast "kEtl

Sylabizacja

Możesz opcjonalnie określić granice sylab, używając elementu .. Każda sylaba musi zawierać jedną (i tylko jedną) samogłoskę. Na przykład:

Przykładowe słowo IPA X-SAMPA
czytelność ˌɹiː.də.ˈbɪ.lə.tiː %r\i:.d@."bI.l@.ti:

Czasy trwania

Platforma Actions on Google obsługuje <say-as interpret-as="duration">, aby prawidłowo odczytywać czasy trwania. Na przykład ten przykład będzie przedstawiony jako „pięć godzin i trzydzieści minut”:

<say-as interpret-as="duration" format="h:m">5:30</say-as>

Ciąg formatu obsługuje te wartości:

Skrót Wartość
godz. godziny
min minuty
s s
ms milisekund

<voice>

Tag <voice> umożliwia użycie więcej niż 1 głosu w jednym żądaniu SSML. W poniższym przykładzie domyślnym głosem jest angielski męski głos. W tym głosie zostaną użyte wszystkie słowa, z wyjątkiem „qu'est-ce qui t'amène”, która jest wypowiadana po francusku z użyciem żeńskiego głosu, a nie domyślnego języka (angielskiego) i rodzaju płci (męski).

<speak>And then she asked, <voice language="fr-FR" gender="female">qu'est-ce qui
t'amène ici</voice><break time="250ms"/> in her sweet and gentle voice.</speak>

Możesz też użyć tagu <voice>, aby wskazać pojedynczy głos (nazwę głosu na stronie z obsługiwanymi głosami i językami), zamiast podawać właściwości language lub gender:

<speak>The dog is friendly<voice name="fr-CA-Wavenet-B">mais la chat est
mignon</voice><break time="250ms"/> said a pet shop
owner</speak>

Gdy używasz tagu <voice>, Actions on Google oczekuje na otrzymanie name (nazwy głosu, której chcesz użyć) lub kombinacji podanych niżej atrybutów. Wszystkie 3 atrybuty są opcjonalne, ale jeśli nie podasz atrybutu name, musisz podać co najmniej jeden.

  • gender: jedna z wartości male, female lub neutral.
  • variant: używany jako rozstrzygający w sytuacjach, gdy w zależności od konfiguracji można wybrać różne głosy.
  • language: wybrany język. W tagu <voice> można określić tylko 1 język. Podaj język w formacie BCP-47. Kod BCP-47 dla Twojego języka znajdziesz w kolumnie Kod języka na stronie z obsługiwanymi głosami i językami.

Możesz też kontrolować względny priorytet każdego atrybutu gender, variant i language za pomocą 2 dodatkowych tagów: required i ordering.

  • required: jeśli atrybut jest oznaczony jako required i nie jest poprawnie skonfigurowany, żądanie nie powiedzie się.
  • ordering: wszystkie atrybuty wymienione po tagu ordering są uznawane za atrybuty preferowane, a nie wymagane. SSML sprawdza preferowane atrybuty w kolejności, w jakiej są wymienione po tagu ordering. Jeśli preferowane atrybuty są nieprawidłowo skonfigurowane, Actions on Google może zwrócić prawidłowy głos, ale nieprawidłowa konfiguracja zostanie odrzucona.

Przykłady konfiguracji z tagami required i ordering:

<speak>And there it was <voice language="en-GB" gender="male" required="gender"
ordering="gender language">a flying bird </voice>roaring in the skies for the
first time.</speak>
<speak>Today is supposed to be <voice language="en-GB" gender="female"
ordering="language gender">Sunday Funday.</voice></speak>

<lang>

Możesz użyć <lang>, aby uwzględnić tekst w wielu językach w tym samym żądaniu SSML. Głos będzie syntetyzowany we wszystkich językach, chyba że użyjesz tagu <voice> do jednoznacznej zmiany głosu. Ciąg xml:lang musi zawierać język docelowy w formacie BCP-47 (ta wartość jest podana jako „kod języka” w tabeli obsługiwanych głosów). W przykładzie poniżej słowo „czat” będzie wypowiadane po francusku, a nie w języku domyślnym (angielskim):

<speak>The french word for cat is <lang xml:lang="fr-FR">chat</lang></speak>

Platforma Actions on Google obsługuje tag <lang> z uwzględnieniem najlepszych możliwości. Nie wszystkie kombinacje języków dają takie same wyniki jakości, jeśli zostaną określone w tym samym żądaniu w SSML. W niektórych przypadkach połączenie językowe może przynieść efekt, który jest wykrywalny, ale subtelny lub postrzegany jako negatywny. Znane problemy:

  • Tag <lang> nie obsługuje języka japońskiego ze znakami kanji. Dane wejściowe są transliterowane i odczytywane jako chińskie znaki.
  • Tag <lang> nie obsługuje języków półtypowych, np. arabskiego, hebrajskiego i perskiego, przez co jest cisza. Jeśli chcesz używać dowolnego z tych języków, zalecamy użycie tagu <voice> i przełączenie się na głos, który mówi w wybranym przez Ciebie języku (jeśli jest dostępny).