Referência da linguagem de marcação de síntese de fala (SSML) (Beta)

A plataforma Actions on Google é compatível com vários recursos SSML Beta, além dos elementos SSML padrão do Actions on Google.

Resumo dos recursos Beta de SSML compatíveis:

  • <phoneme>: personalize a pronúncia de palavras específicas.
  • <say-as interpret-as="duration">: especifica durações.
  • <voice>: alterna entre vozes na mesma solicitação.
  • <lang>: use vários idiomas na mesma solicitação.
  • Timepoints: use a tag <mark> para retornar o ponto de tempo de um ponto especificado na transcrição.

<phoneme>

É possível usar a tag <phoneme> para produzir pronúncias personalizadas de palavras in-line. O Actions on Google aceita os alfabetos fonéticos IPA e X-SAMPA (em inglês). Consulte a página de fonemas (link em inglês) para ver uma lista de idiomas e fonemas compatíveis.

Cada aplicação da tag <phoneme> direciona a pronúncia de uma única palavra:

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

Marcadores de acento

Há até três níveis de acento que podem ser colocados em uma transcrição:

  1. Estresse principal: indicado com ˈ em IPA e " em X-SAMPA.
  2. Estresse secundário: indicado com ˌ em IPA e % em X-SAMPA.
  3. Não acentuado: não é indicado com um símbolo (em uma das notação).

Alguns idiomas podem ter menos de três níveis ou não indicar colocação de acento.. Consulte a página de fonemas (link em inglês) para ver os níveis de estresse disponíveis para seu idioma. Os marcadores de estresse são colocados no início de cada sílaba estressada. Por exemplo, no inglês dos EUA:

Exemplo de palavra IPA X-SAMPA
água ˈwɑːtɚ "wA:t@`
underwater ˌʌndɚˈwɑːtɚ %Vnd@"wA:t@

Transcrições amplas e restritas

Como regra geral, mantenha a transcrição mais abrangente e fonética. Por exemplo, no inglês americano, transcreva t intervocálico (em vez de usar um toque):

Example word IPA X-SAMPA
manteiga ˈbʌtɚ em vez de ˈbʌɾɚ "bVt@` em vez de "bV4@`

Há alguns casos em que o uso da representação fonética torna os resultados do TTS não artificiais, por exemplo, se a sequência de fonemas é anatomicamente difícil de pronunciar.

Um exemplo disso é a expressão de assimilação para s em inglês. Nesse caso, a assimilação deve ser refletida na transcrição:

Example word IPA X-SAMPA
cats ˈkæts "k{ts
cães ˈdɑːgz em vez de ˈdɑːgs "dA:gz em vez de "dA:gs

Redução

Cada sílaba precisa conter uma (e apenas uma) vogal. Isso significa que você precisa evitar consonâncias silábicas e, em vez disso, transcrevê-las com uma vogal reduzida. Exemplo:

Example word IPA X-SAMPA
kitten ˈkɪtən em vez de ˈkɪtn "kIt@n em vez de "kitn
kettle ˈkɛtəl em vez de ˈkɛtl "kEt@l em vez de "kEtl

Silabação

Também é possível especificar limites de sílaba usando .. Cada sílaba precisa conter uma (e apenas uma) vogal. Exemplo:

Example word IPA X-SAMPA
readability ˌɹiː.də.ˈbɪ.lə.tiː %r\i:.d@."bI.l@.ti:

Durações

A plataforma Actions on Google oferece suporte ao <say-as interpret-as="duration"> para ler as durações corretamente. Por exemplo, o exemplo a seguir seria verbalizado como "cinco horas e trinta minutos":

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

A string de formato suporta os seguintes valores:

Abreviatura Valor
h horas
m minutos
s segundos
ms milésimos de segundo

<voice>

A tag <voice> permite usar mais de uma voz em uma única solicitação SSML. No exemplo a seguir, a voz padrão é uma voz masculina em inglês. Todas as palavras serão sintetizadas nessa voz, exceto "qu'est-ce qui t'amène ici", que será verbalizada em francês usando uma voz feminina em vez do idioma padrão (inglês) e gênero (masculino).

<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>

Como alternativa, você pode usar uma tag <voice> para especificar uma voz individual (o nome da voz na página de vozes e idiomas compatíveis) em vez de especificar uma language e/ou 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>

Quando você usa a tag <voice>, o Actions on Google espera receber um name (o nome da voz que você quer usar) ou uma combinação dos atributos abaixo. Todos os três atributos são opcionais, mas você precisa fornecer pelo menos um se não fornecer um name.

  • gender: um de male, female ou neutral.
  • variant: usado como desempatador nos casos em que há várias possibilidades de qual voz usar com base na sua configuração.
  • language: o idioma pretendido. Somente um idioma pode ser especificado em uma tag <voice>. Especifique seu idioma no formato BCP-47. Você pode encontrar o código BCP-47 para seu idioma na coluna código de idioma na página Vozes e idiomas compatíveis.

Também é possível controlar a prioridade relativa de cada um dos atributos gender, variant e language usando duas tags extras: required e ordering.

  • required: se um atributo for designado como required e não for configurado corretamente, a solicitação vai falhar.
  • ordering: todos os atributos listados após uma tag ordering são considerados preferidos, e não obrigatórios. A SSML considera os atributos preferidos com base no melhor esforço, na ordem em que estão listados após a tag ordering. Se algum atributo preferencial for configurado incorretamente, o Actions on Google ainda poderá retornar uma voz válida, mas com a configuração incorreta descartada.

Exemplos de configurações usando as tags required e 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>

É possível usar <lang> para incluir texto em vários idiomas na mesma solicitação SSML. Todos os idiomas serão sintetizados na mesma voz, a menos que você use a tag <voice> para mudar a voz explicitamente. A string xml:lang precisa conter o idioma de destino no formato BCP-47. Esse valor está listado como "código do idioma" na tabela de vozes compatíveis. No exemplo a seguir, "chat" será verbalizado em francês, e não no idioma padrão (inglês):

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

A plataforma Actions on Google oferece suporte à tag <lang> da melhor maneira possível. Nem todas as combinações de idiomas produzem os mesmos resultados de qualidade se especificadas na mesma solicitação SSML. Em alguns casos, uma combinação de linguagem pode produzir um efeito que seja detectável, mas sutil ou percebido como negativo. Problemas conhecidos:

  • O japonês com caracteres Kanji não é compatível com a tag <lang>. A entrada é transliterada e lida como caracteres chineses.
  • Idiomas semíticos como árabe, hebraico e persa não têm suporte da tag <lang> e resultam em silêncio. Se você quiser usar qualquer um desses idiomas, recomendamos usar a tag <voice> para alternar para uma voz que fale o idioma desejado (se disponível).