Gdy zwracasz odpowiedź Asystentowi Google, możesz w nich użyć podzbioru języka znaczników Speech Synthesis Markup Language (SSML). Dzięki SSML możesz sprawić, że odpowiedzi w rozmowie będą wyglądały bardziej jak naturalna mowa. Ten przykład przedstawia znaczniki SSML i odpowiadającą mu ścieżkę dźwiękową z Asystenta Google:
Node.js
function saySSML(conv) { const ssml = '<speak>' + 'Here are <say-as interpret-as="characters">SSML</say-as> samples. ' + 'I can pause <break time="3" />. ' + 'I can play a sound <audio src="https://www.example.com/MY_WAVE_FILE.wav">your wave file</audio>. ' + 'I can speak in cardinals. Your position is <say-as interpret-as="cardinal">10</say-as> in line. ' + 'Or I can speak in ordinals. You are <say-as interpret-as="ordinal">10</say-as> in line. ' + 'Or I can even speak in digits. Your position in line is <say-as interpret-as="digits">10</say-as>. ' + 'I can also substitute phrases, like the <sub alias="World Wide Web Consortium">W3C</sub>. ' + 'Finally, I can speak a paragraph with two sentences. ' + '<p><s>This is sentence one.</s><s>This is sentence two.</s></p>' + '</speak>'; conv.add(ssml); }
JSON
{ "expectUserResponse": true, "expectedInputs": [ { "possibleIntents": [ { "intent": "actions.intent.TEXT" } ], "inputPrompt": { "richInitialPrompt": { "items": [ { "simpleResponse": { "textToSpeech": "<speak>Here are <say-as interpret-as=\"characters\">SSML</say-as> samples. I can pause <break time=\"3\" />. I can play a sound <audio src=\"https://www.example.com/MY_WAVE_FILE.wav\">your wave file</audio>. I can speak in cardinals. Your position is <say-as interpret-as=\"cardinal\">10</say-as> in line. Or I can speak in ordinals. You are <say-as interpret-as=\"ordinal\">10</say-as> in line. Or I can even speak in digits. Your position in line is <say-as interpret-as=\"digits\">10</say-as>. I can also substitute phrases, like the <sub alias=\"World Wide Web Consortium\">W3C</sub>. Finally, I can speak a paragraph with two sentences. <p><s>This is sentence one.</s><s>This is sentence two.</s></p></speak>" } } ] } } } ] }
Dźwięk
Adresy URL w SSML
Jeśli zdefiniujesz odpowiedź SSML zawierającą tylko adres URL, znaki „&” w tym adresie URL mogą powodować problemy z powodu formatowania XML. Aby zapewnić prawidłowe odwołania do adresu URL, zamień wystąpienia &
na &
.
Nawet jeśli odpowiedź SSML zawiera tylko adres URL, Actions on Google wymaga wyświetlanego tekstu odpowiedzi. Asystent nie odczytuje tekstu zawartego w tagu <audio>
, dlatego możesz wstawić w tagu <audio>
tekst wypełnienia lub krótki opis, aby spełnić to wymaganie. Tekst w tagu <audio>
nie będzie odczytywany przez Asystenta po odtworzeniu dźwięku i spełnia wymagania Action on Google dotyczące wersji tekstowej SSML dla reklam displayowych.
Oto przykład problematycznej odpowiedzi SSML:
<speak>
<audio src="https://firebasestorage.googleapis.com/v0/b/project-name.appspot.com/o/audio-file-name.ogg?alt=media&token=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX">
</audio>
</speak>
W przykładzie powyżej nie zmieniamy znaczenia &
w celu prawidłowego formatowania XML.
Poprawiona wersja tej samej odpowiedzi SSML wygląda tak:
<speak>
<audio src="https://firebasestorage.googleapis.com/v0/b/project-name.appspot.com/o/audio-file-name.ogg?alt=media&token=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX">
text
</audio>
</speak>
Obsługa elementów SSML
W kolejnych sekcjach opisujemy elementy i opcje SSML, których można używać w działaniach.
<speak>
Element główny odpowiedzi SSML.
Więcej informacji o elemencie speak
znajdziesz w specyfikacji W3.
Przykład
<speak> my SSML content </speak>
<break>
Pusty element kontrolujący wstrzymywanie lub inne prozodyczne granice między słowami. Używanie <break>
między dowolną parą tokenów jest opcjonalne. Jeśli ten element nie występuje między słowami, przerwa jest określana automatycznie na podstawie kontekstu językowego.
Więcej informacji o elemencie break
znajdziesz w specyfikacji W3.
Atrybuty
Atrybut | Opis |
---|---|
time |
Określa długość przerwy w sekundach lub milisekundach (np. „3 s” lub „250 ms”). |
strength |
Określa siłę względnej przerwy na dane wyjściowej. Prawidłowe wartości to: „x-weak”, „słaby”, „średni”, „silny” i „x-strong”. Wartość „none” (brak) oznacza, że nie powinna zostać określona granica przerwy w działaniu prozoodycznej, której można użyć, aby zapobiec przerwie prozoodycznej, którą w innym przypadku mógłby uzyskać procesor. Inne wartości wskazują monotonicznie nie malejącą (zwiększającą się koncepcyjnie) siłę podziałów między tokenami. Silniejszym granicom zazwyczaj towarzyszą przerwy. |
Przykład
W tym przykładzie pokazujemy, jak użyć elementu <break>
do wstrzymania między krokami:
<speak> Step 1, take a deep breath. <break time="200ms"/> Step 2, exhale. Step 3, take a deep breath again. <break strength="weak"/> Step 4, exhale. </speak>
<say‑as>
Ten element pozwala wskazać informacje o typie konstrukcji tekstu zawartego w elemencie. Pomaga też określić poziom szczegółowości renderowania zawartego w nim tekstu.
Element <say‑as>
ma wymagany atrybut interpret-as
, który określa sposób odczytywania wartości. W zależności od wartości interpret-as
mogą być używane atrybuty opcjonalne format
i detail
.
Przykłady
Atrybut interpret-as
może mieć te wartości:
-
currency
Poniższy przykład brzmi „czterdzieści dwa dolary i jeden grosz”. Jeśli pominiesz atrybut language, używany będzie bieżący język.
<speak> <say-as interpret-as='currency' language='en-US'>$42.01</say-as> </speak>
-
telephone
Zapoznaj się z opisem funkcji
interpret-as='telephone'
w artykule dotyczącym wartości atrybutów W3C SSML 1.0.Poniższy przykład jest odczytywany jako „jeden osiem zero dwa zero dwa jeden dwa jeden dwa”. Jeśli pominiesz atrybut „google:style”, zamiast tego atrybut „google:style” będzie odczytywany jako litera O.
Atrybut „google:style='zero-as-zero'” obecnie działa tylko w języku angielskim.
<speak> <say-as interpret-as='telephone' google:style='zero-as-zero'>1800-202-1212</say-as> </speak>
-
verbatim
lubspell-out
W tym przykładzie piszemy literki:
<speak> <say-as interpret-as="verbatim">abcdefg</say-as> </speak>
-
date
Atrybut
format
to sekwencja kodów znaków pola daty. Obsługiwane kody znaków w polachformat
to odpowiednio {y
,m
,d
} dla roku, miesiąca i dnia (miesiąca). Jeśli kod pola pojawia się raz dla roku, miesiąca lub dnia, oczekiwana liczba cyfr wynosi odpowiednio 4, 2 lub 2. Jeśli kod pola się powtarza, spodziewana liczba cyfr to liczba powtórzeń kodu. Pola w tekście daty mogą być rozdzielone znakami interpunkcyjnymi lub spacjami.Atrybut
detail
określa wymawianą formę daty. W przypadku funkcjidetail='1'
wymagane są tylko pola dnia i jedno z pól miesiąca lub roku, choć można podać oba pola. Jest to ustawienie domyślne, jeśli podasz mniej niż wszystkie 3 pola. Forma mówiona to „{ordinal Day} {month} {year}”.Poniższy przykład jest odczytywany jako „Dziesiąca września, dziewiętnaście sześćdziesiąty”:
<speak> <say-as interpret-as="date" format="yyyymmdd" detail="1"> 1960-09-10 </say-as> </speak>
Poniższy przykład jest odczytywany jako „Dziesiąca września”:
<speak> <say-as interpret-as="date" format="dm">10-9</say-as> </speak>
W przypadku
detail='2'
wymagane są pola dnia, miesiąca i roku. Jest to wartość domyślna, jeśli podane są wszystkie 3 pola. Mowa w formie to „{month} {ordinal Day}, {year}”.Poniższy przykład jest odczytywany jako „Dziesiądz września, dziewiętnaście sześćdziesiąty”:
<speak> <say-as interpret-as="date" format="dmy" detail="2"> 10-9-1960 </say-as> </speak>
-
characters
Poniższy przykład jest odczytywany jako „C A N”:
<speak> <say-as interpret-as="characters">can</say-as> </speak>
-
cardinal
Poniższy przykład jest mówiony jako „Dwanaście tysięcy trzysta czterdzieści pięć” (w przypadku języka angielskiego w Stanach Zjednoczonych) lub „Dwanaście tysięcy trzysta czterdzieści pięć” (w języku angielskim (Wielka Brytania)):
<speak> <say-as interpret-as="cardinal">12345</say-as> </speak>
-
ordinal
Poniższy przykład jest odczytywany jako „Pierwszy”:
<speak> <say-as interpret-as="ordinal">1</say-as> </speak>
-
fraction
Poniższy przykład jest odczytywany jako „pół i pół”:
<speak> <say-as interpret-as="fraction">5+1/2</say-as> </speak>
-
expletive
lubbleep
Poniższy przykład wydaje się sygnałem dźwiękowym, jakby został ocenzurowany:
<speak> <say-as interpret-as="expletive">censor this</say-as> </speak>
-
unit
Przekształca jednostki na liczbę pojedynczą lub mnogą w zależności od liczby. Poniższy przykład jest odczytywany jako „3,5 stóp”:
<speak> <say-as interpret-as="unit">10 foot</say-as> </speak>
-
time
Poniższy przykład jest odczytywany jako „Dwie trzydzieści rano”:
<speak> <say-as interpret-as="time" format="hms12">2:30pm</say-as> </speak>
Atrybut
format
to sekwencja kodów pola czasu. Obsługiwane kody znaków w poluformat
to: {h
,m
,s
,Z
,12
,24
} oznaczający godzinę, minutę (godzinę), sekundę (minutę), strefę czasową, czas 12-godzinny i 24-godzinny. Jeśli kod pola pojawia się raz na godzinę, minutę lub sekundę, oczekiwana liczba cyfr wynosi odpowiednio 1, 2 i 2. Jeśli kod pola się powtarza, spodziewana liczba cyfr to liczba powtórzeń kodu. Pola w tekście godziny mogą być oddzielone znakami interpunkcyjnymi lub spacjami. Jeśli format godziny, minuta lub sekundy nie jest określony w formacie lub nie ma pasujących cyfr, pole jest traktowane jako wartość 0. Domyślna wartośćformat
to „hms12”.Atrybut
detail
określa, czy godzina ma być formatem 12-godzinnym czy 24-godzinnym. Format mówiony to 24 godziny, jeślidetail='1'
lub jeśli pominiętodetail
i format godziny to 24 godziny. Format mówiony to 12 godzin, jeślidetail='2'
lub jeślidetail
został pominięty i format czasu to 12 godzin.
Więcej informacji o elemencie say-as
znajdziesz w specyfikacji W3.
<audio>
Umożliwia wstawianie nagranych plików audio oraz wstawianie innych formatów audio w połączeniu z generowaniem mowy.
Atrybuty
Atrybut | Wymagane | Domyślne | Wartości |
---|---|---|---|
src |
tak | Nie dotyczy | Identyfikator URI odnoszący się do źródła multimediów audio. Obsługiwany protokół to https . |
clipBegin |
nie | 0 | TimeDesignation będący przesunięciem względem momentu rozpoczęcia odtwarzania od źródła dźwięku. Jeśli ta wartość jest równa lub dłuższa od rzeczywistego czasu trwania źródła dźwięku, nie zostanie wstawiony żaden dźwięk. |
clipEnd |
nie | nieskończoność | TimeDesignation, który określa przesunięcie czasu między rozpoczęciem odtwarzania a zakończeniem odtwarzania ze źródła dźwięku. Jeśli rzeczywisty czas trwania źródła dźwięku jest krótszy od tej wartości, odtwarzanie się zakończy. Jeśli clipBegin ma wartość większą lub równą clipEnd , nie jest wstawiony dźwięk. |
speed |
nie | 100% | Współczynnik proporcji wyjściowej szybkości odtwarzania w stosunku do normalnej szybkości przesyłania danych wyrażony w procentach. Format to dodatnia liczba rzeczywista, a po niej %. Aktualnie obsługiwany zakres to [50% (wolna – połowa prędkości)], 200% (szybko – podwójna szybkość)]. Wartości spoza tego zakresu można dostosować (lub nie), aby się w nim mieściły. |
repeatCount |
nie | 1 lub 10, jeśli ustawiona jest zasada repeatDur |
Liczba rzeczywista określająca, ile razy wstawić dźwięk (po przycięciu, jeśli ma miejsce, według wartości clipBegin lub clipEnd ). Powtórzenia ułamkowe nie są obsługiwane, więc wartość zostanie zaokrąglona do najbliższej liczby całkowitej. 0 nie jest prawidłową wartością i dlatego jest traktowane jako nieokreślone i w takim przypadku ma wartość domyślną. |
repeatDur |
nie | nieskończoność | TimeDesignation, które określa limit czasu trwania wstawionego dźwięku po przetworzeniu źródła dla atrybutów clipBegin , clipEnd , repeatCount i speed (zamiast normalnego czasu odtwarzania). Jeśli czas trwania przetworzonego dźwięku jest krótszy niż ta wartość, odtwarzanie się zakończy. |
soundLevel |
nie | +0dB | Dostosuj poziom dźwięku dźwięku o soundLevel decybele. Maksymalny zakres to +/-40 dB, ale rzeczywisty zakres może być znacznie mniejszy. W całym zakresie jakość danych wyjściowych może nie być zadowalająca. |
Oto obecnie obsługiwane ustawienia dźwięku:
- Format: MP3 (MPEG v2)
- 24 tys. próbek na sekundę
- 24 KB ~ 96 tys. bitów na sekundę, stała szybkość
- Format: Opus w Ogg.
- 24 tys. próbek na sekundę (superszerokopasmowe)
- 24–96 tys. bitów na sekundę, stała szybkość
- Format (wycofany): WAV (RIFF)
- 16-bitowy PCM, mały endian
- 24 tys. próbek na sekundę
- Wszystkie formaty:
- Preferowany jest 1-kanałowy, ale dozwolony jest stereo.
- Maksymalny czas trwania: 240 sekund. Jeśli chcesz odtwarzać dźwięk dłużej, rozważ implementację odpowiedzi multimedialnych.
- Maksymalny rozmiar pliku to 5 megabajtów.
- Źródłowy adres URL musi używać protokołu HTTPS.
- Nasz klient użytkownika podczas pobierania pliku audio to „Google-Speech-Actions”.
Zawartość elementu <audio>
jest opcjonalna i używana wtedy, gdy nie można odtworzyć pliku audio lub gdy urządzenie wyjściowe nie obsługuje dźwięku. Element może zawierać element <desc>
. W takim przypadku do wyświetlania używana jest zawartość tekstowa tego elementu. Więcej informacji znajdziesz w sekcji Nagrany dźwięk na liście kontrolnej odpowiedzi.
Adres URL src
musi też mieć postać adresu URL https (Google Cloud Storage może przechowywać pliki audio pod adresem URL HTTPS).
Więcej informacji o odpowiedziach na żądania multimediów znajdziesz w sekcji poświęconej odpowiedziom na multimedia w przewodniku po odpowiedziach.
Więcej informacji o elemencie audio
znajdziesz w specyfikacji W3.
Przykład
<speak> <audio src="cat_purr_close.ogg"> <desc>a cat purring</desc> PURR (sound didn't load) </audio> </speak>
<p>,<s>
elementy zdań i akapitów;
Więcej informacji o elementach p
i s
znajdziesz w specyfikacji W3.
Przykład
<p><s>This is sentence one.</s><s>This is sentence two.</s></p>
Sprawdzone metody
- Używaj tagów <s>...</s> do zawijania całych zdań, zwłaszcza jeśli zawierają one elementy SSML, które zmieniają prozody (czyli <audio>, <break>, <emphasis>, <par>, <prosody>, <say-as>, <seq> i <sub>).
- Jeśli przerwa w mowie ma trwać wystarczająco długo, by można ją było usłyszeć, należy użyć tagów <s>...</s> i wstawić je pomiędzy zdaniami.
<sub>
Zaznacz, że tekst w wartości atrybutu aliasu zastępuje zawarty w nim tekst na potrzeby wymowy.
Możesz też użyć elementu sub
, aby uprościć wymowę trudnych do odczytania słów. Ostatni przykład poniżej pokazuje ten przypadek użycia w języku japońskim.
Więcej informacji o elemencie sub
znajdziesz w specyfikacji W3.
Przykłady
<sub alias="World Wide Web Consortium">W3C</sub>
<sub alias="にっぽんばし">日本橋</sub>
<mark>
Pusty element, który umieszcza znacznik w tekście lub sekwencji tagów. Można go użyć, aby odwoływać się do określonej lokalizacji w sekwencji lub wstawić znacznik do strumienia wyjściowego na potrzeby powiadomień asynchronicznego.
Więcej informacji o elemencie mark
znajdziesz w specyfikacji W3.
Przykład
<speak> Go from <mark name="here"/> here, to <mark name="there"/> there! </speak>
<prosody>
Służy do dostosowania tonacji, szybkości wypowiedzi i ilości tekstu w elemencie. Obecnie obsługiwane są atrybuty rate
, pitch
i volume
.
Atrybuty rate
i volume
można ustawić zgodnie ze specyfikacją W3. Wartość atrybutu pitch
można ustawić na 3 sposoby:
Atrybut | Opis |
---|---|
name |
Identyfikator ciągu znaków w przypadku każdego znaku. |
Option | Opis |
---|---|
Krewny | Podaj wartość względną (np. „niska”, „średnia”, „wysoka” itd.), gdzie „średni” to domyślny ton. |
Półtony | Zwiększ lub zmniejsz ton o N” półtonów, używając odpowiednio „+Nst” lub „-Nst”. Znaki „+/-” i „st” są wymagane. |
Procent | Zwiększ lub zmniejsz ton o „N” procent, używając odpowiednio „+N%” lub „-N%”. Symbol „%” jest wymagany, ale znak „+/-” jest opcjonalny. |
Więcej informacji o elemencie prosody
znajdziesz w specyfikacji W3.
Przykład
W tym przykładzie element <prosody>
mówi powoli z dwiema półtonami niższym niż zwykle:
<prosody rate="slow" pitch="-2st">Can you hear me now?</prosody>
<emphasis>
Służy do dodawania i usuwania wyróżnienia tekstu zawartego w elemencie. Element <emphasis>
modyfikuje mowę podobnie do elementu <prosody>
, ale bez konieczności ustawiania poszczególnych atrybutów mowy.
Ten element obsługuje opcjonalny atrybut „level” o tych prawidłowych wartościach:
strong
moderate
none
reduced
Więcej informacji o elemencie emphasis
znajdziesz w specyfikacji W3.
Przykład
W tym przykładzie użyto elementu <emphasis>
do opublikowania ogłoszenia:
<emphasis level="moderate">This is an important announcement</emphasis>
<par>
Równoległy kontener multimediów, który umożliwia jednoczesne odtwarzanie wielu elementów multimedialnych. Jedyna dozwolona treść to zestaw zawierający co najmniej 1 element <par>
, <seq>
i <media>
. Kolejność elementów <media>
nie jest istotna.
Jeśli element podrzędny nie określa innego czasu rozpoczęcia, niejawna godzina rozpoczęcia jest taka sama jak w przypadku kontenera <par>
. Jeśli element podrzędny ma ustawioną wartość przesunięcia dla atrybutu begin lub end, przesunięcie elementu będzie względem czasu rozpoczęcia kontenera <par>
. W przypadku głównego elementu <par>
atrybut start jest ignorowany, a czas rozpoczęcia to moment, w którym proces syntezy mowy SSML zaczyna generować dane wyjściowe dla głównego elementu <par>
(czyli w efekcie czas „zero”).
Przykład
<speak> <par> <media xml:id="question" begin="0.5s"> <speak>Who invented the Internet?</speak> </media> <media xml:id="answer" begin="question.end+2.0s"> <speak>The Internet was invented by cats.</speak> </media> <media begin="answer.end-0.2s" soundLevel="-6dB"> <audio src="https://actions.google.com/.../cartoon_boing.ogg"/> </media> <media repeatCount="3" soundLevel="+2.28dB" fadeInDur="2s" fadeOutDur="0.2s"> <audio src="https://actions.google.com/.../cat_purr_close.ogg"/> </media> </par> </speak>
<seq>
Sekwencyjny kontener multimediów, który pozwala odtwarzać kolejno elementy multimedialne. Jedyna dozwolona treść to zestaw zawierający co najmniej 1 element <seq>
, <par>
i <media>
. Kolejność elementów multimedialnych określa kolejność ich renderowania.
W atrybutach begin i end elementów podrzędnych można ustawić wartości przesunięcia (patrz Specyfikacja czasu poniżej). Wartości przesunięcia tych elementów podrzędnych będą względem końca poprzedniego elementu w sekwencji lub, w przypadku pierwszego elementu w sekwencji, względem początku jego kontenera <seq>
.
Przykład
<speak> <seq> <media begin="0.5s"> <speak>Who invented the Internet?</speak> </media> <media begin="2.0s"> <speak>The Internet was invented by cats.</speak> </media> <media soundLevel="-6dB"> <audio src="https://actions.google.com/.../cartoon_boing.ogg"/> </media> <media repeatCount="3" soundLevel="+2.28dB" fadeInDur="2s" fadeOutDur="0.2s"> <audio src="https://actions.google.com/.../cat_purr_close.ogg"/> </media> </seq> </speak>
<media>
Reprezentuje warstwę multimediów w elemencie <par>
lub <seq>
. Dozwolona zawartość elementu <media>
to element <speak>
lub <audio>
SSML. W tabeli poniżej opisujemy prawidłowe atrybuty elementu <media>
.
Atrybuty
Atrybut | Wymagane | Domyślne | Wartości |
---|---|---|---|
xml:id | nie | brak wartości | Unikalny identyfikator XML tego elementu. Zakodowane encje nie są obsługiwane. Dozwolone wartości identyfikatorów są zgodne z wyrażeniem regularnym "([-_#]|\p{L}|\p{D})+" . Więcej informacji znajdziesz w sekcji XML-ID. |
rozpoczyna się | nie | 0 | Czas rozpoczęcia wyświetlania tego kontenera multimediów. Ignorowany, jeśli jest to główny element kontenera multimediów (traktowany tak samo jak wartość domyślna „0”). Prawidłowe wartości ciągów znajdziesz w sekcji Specyfikacja czasu poniżej. |
end | nie | brak wartości | Specyfikacja czasu zakończenia dla tego kontenera multimediów. Prawidłowe wartości ciągów znajdziesz w sekcji Specyfikacja czasu poniżej. |
repeatCount | nie | 1 | Liczba rzeczywista określająca, ile razy wstawić multimedia. Powtórzenia ułamkowe nie są obsługiwane, więc wartość zostanie zaokrąglona do najbliższej liczby całkowitej. 0 nie jest prawidłową wartością i dlatego jest traktowane jako nieokreślone i w takim przypadku ma wartość domyślną. |
repeatDur | nie | brak wartości | Wartość TimeDesignation, która określa limit czasu trwania wstawionych multimediów. Jeśli czas trwania multimediów jest krótszy od tej wartości, odtwarzanie się zakończy. |
soundLevel | nie | +0dB | Dostosuj poziom dźwięku dźwięku o soundLevel dB. Maksymalny zakres to +/-40 dB, ale rzeczywisty zakres może być znacznie mniejszy. W całym zakresie jakość danych wyjściowych może nie być zadowalająca. |
fadeInDur | nie | 0 s | Atrybut TimeDesignation, w którym multimedia zmieniają się z wyciszenia do opcjonalnie określonego dyrektywy soundLevel . Jeśli czas trwania multimediów jest krótszy niż ta wartość, rozjaśnienie zatrzyma się po zakończeniu odtwarzania, a poziom dźwięku nie osiągnie określonego poziomu. |
fadeOutDur | nie | 0 s | Atrybut TimeDesignation, w którym multimedia są wyszarzone z opcjonalnie określonego elementu soundLevel do momentu ich wyciszenia. Jeśli czas trwania multimediów jest krótszy niż ta wartość, poziom dźwięku jest ustawiany na niższą wartość, aby zapewnić, że po zakończeniu odtwarzania zostanie osiągnięta cisza. |
Określony czas
Specyfikacja czasu używana w przypadku wartości atrybutów „begin” i „end” elementów <media>
i kontenerów multimediów (elementy <par>
i <seq>
) jest wartością przesunięcia (np. +2.5s
) lub wartością syncbase (np. foo_id.end-250ms
).
- Wartość przesunięcia: wartość przesunięcia czasu jest liczbą czasu w formacie SMIL, która zezwala na wartości pasujące do wyrażenia regularnego:
"\s\*(+|-)?\s\*(\d+)(\.\d+)?(h|min|s|ms)?\s\*"
Pierwszy ciąg to część dziesiętna, a druga to część dziesiętna. Domyślnym znakiem (np. „(+|-)?”) jest „+”. Wartości jednostkowe odpowiadają odpowiednio godzinom, minutom, sekundom i milisekundom. Domyślna wartość jednostek to „s” (sekundy).
- Wartość synchronizacji – wartość syncbase jest wartością parametru syncbase SMIL, która zezwala na wartości pasujące do wyrażenia regularnego:
"([-_#]|\p{L}|\p{D})+\.(begin|end)\s\*(+|-)\s\*(\d+)(\.\d+)?(h|min|s|ms)?\s\*"
Cyfry i jednostki są interpretowane w taki sam sposób jak wartość przesunięcia.
Symulator zamiany tekstu na mowę
Konsola Actions zawiera symulator zamiany tekstu na mowę, którego możesz używać do testowania SSML z dowolnymi z powyższych elementów. Symulator zamiany tekstu na mowę znajdziesz w konsoli Symulator > Dźwięk. Wpisz w symulatorze tekst i SSML, a potem kliknij Aktualizuj i posłuchaj, aby usłyszeć wynik zamiany tekstu na mowę.
Możesz też kliknąć przycisk pobierania, aby zapisać plik .mp3
z wynikiem zamiany tekstu na mowę.