Personalização do texto falado

Visão geral

Você pode controlar a forma como a Voice API da Vonage reproduz textos gerados automaticamente para seus usuários, utilizando um subconjunto das tags definidas no Especificação da Linguagem de Marcação para Síntese de Fala (SSML). Essa marcação baseada em XML permite misturar vários idiomas, fornecer dicas de pronúncia para palavras e Numbers específicos e controlar a velocidade, o volume e o tom do texto sintetizado.

Em um NCCO talk ação, você pode enviar Tags SSML como parte da sequência de texto. Mas, primeiro, você deve colocar toda a sequência entre <speak></speak> tags para indicar à Vonage que a sequência de caracteres inclui SSML. Você pode usar aspas simples ou aspas duplas escapadas para os valores dos atributos das tags.

Aqui está um exemplo de SSML no text propriedade de uma NCCO talk ação:

[
  {
    "action": "talk",
    "text": "<speak><p>Hello.</p><p>How are you?</p></speak>"
  }
]

Tags SSML

  • Intervalos: Adicionar pausas ao texto falado
  • Enfatizando: Adicionar ou remover ênfase do texto
  • Idioma: Especifique outro idioma para palavras específicas
  • Fonemas: Escreva o texto por extenso usando o alfabeto fonético
  • Prosódia: Defina o tom, a velocidade e o volume do texto falado
  • Diga assim: Forneça dicas de pronúncia para palavras, números e datas
  • Frases e parágrafos: Faça com que a API reconheça frases e parágrafos ao ler seu texto em voz alta
  • Substituição: Substitua o texto específico pela pronúncia de sua escolha

Intervalos

O break A tag permite adicionar pausas ao texto. A duração da pausa pode ser especificada usando um strength duração ou como um time segundos ou milissegundos.

<speak>My name is <break time='1s' />Slim Shady.</speak>

Válido strength os valores incluem:

  • none ou x-weak (o que elimina uma pausa que, de outra forma, poderia ocorrer após um ponto final)
  • weak ou medium (equivalente a uma vírgula)
  • strong ou x-strong (equivalente a uma quebra de parágrafo)
<speak>
To be <break strength='weak' />
or not to be <break strength='weak' />
that is the question.
</speak>

Enfatizando

Para destacar palavras, use o emphasis tag. A ênfase nas palavras altera o ritmo e o volume da fala. Quanto maior a ênfase, mais alto e mais devagar o texto é lido. Quanto menor a ênfase, mais baixo e mais rápido ele é lido.

Observação: O emphasis A tag não está disponível para vozes TTS Premium.

Para indicar o grau de ênfase, use o level atributo.

Válido level os valores incluem:

  • strong: Aumenta o volume e diminui a velocidade da fala, de modo que a fala fique mais alta e mais lenta.
  • moderate: Aumenta o volume e diminui o ritmo da fala, mas não de forma muito acentuada. moderate é o padrão.
  • reduced: Diminui o volume e acelera o ritmo da fala. A fala fica mais suave e mais rápida.
<speak>
<emphasis level="moderate">This is an important announcement</emphasis>
</speak>

Idioma

O lang A tag permite especificar outro idioma para uma palavra, frase ou oração específica. Isso pode ser útil para melhorar a pronúncia de palavras estrangeiras. A tag de idioma deve conter tanto o nome do idioma quanto o código do país (por exemplo, pt-BR para o português do Brasil, en-GB para o inglês britânico), mesmo para idiomas sem variações por país, nos quais um código de país poderia, de outra forma, ser redundante (por exemplo, it-IT para o italiano).

<speak><lang xml:lang='it-IT'>Buongiorno</lang></speak>

Observe que, lang altera a pronúncia, embora não altere o idioma “nativo” da voz; por exemplo, se o idioma em talk a ação/solicitação está definida como en-US, e SSML lang tag no texto definida como fr-FR, a frase será pronunciada em francês com sotaque americano. Para alterar o idioma de toda a mensagem, use o language parâmetro ou o talk ação/solicitação, em vez disso.

Nem todos os estilos de voz são compatíveis com lang tag.

Fonemas

O phoneme A tag permite enviar uma representação em Alfabeto Fonético Internacional (IPA) de uma palavra. Para usá-la, é preciso especificar tanto um alphabet (ou ipa ou x-sampa) e o ph atributo que contém os símbolos fonéticos.

<speak>
<phoneme alphabet='ipa' ph='təˈmætoː'>Tomato</phoneme> or
<phoneme alphabet='ipa' ph='təˈmeɪtoʊ'>tomato</phoneme>.
Two nations separated by a common language.
</speak>

Prosódia

O prosody A tag permite definir o tom, a velocidade e o volume do texto.

  • O volume O atributo pode ser definido com os seguintes valores: default, silent, x-soft, soft, medium, loud e x-loud. Você também pode especificar um valor relativo em decibéis na forma +ndB ou -ndB onde n é um valor inteiro.

  • O rate O atributo altera a velocidade da fala. Os valores aceitáveis incluem: x-slow, slow, medium, fast e x-fast.

  • O pitch O atributo altera o tom da voz. Você pode especificá-lo usando rótulos de valores predefinidos ou numericamente. Os rótulos de valores são: default, x-low, low, medium, high e x-high. O formato para especificar uma alteração numérica no tom é: +n% e -n%.

Observação: Ao usar vozes TTS Premium, o pitch O atributo não é compatível.

O exemplo a seguir mostra como ajustar o volume, a velocidade e o tom.

<speak>
I am <prosody volume='loud'>loud and proud</prosody>,
<prosody rate='fast'>quick as a cricket</prosody>
and can <prosody pitch='x-low'>change my pitch</prosody>.
</speak>

Diga assim

O say-as A tag permite que você forneça instruções sobre como determinadas palavras e números devem ser pronunciados. Muitos desses recursos são detectados automaticamente na fala pelo mecanismo de TTS, mas o say-as O comando permite que você os marque especificamente.

O say-as A tag possui um atributo obrigatório: interpret-as. Esse atributo deve conter um dos seguintes valores:

Valor de interpret-as Efeito no texto falado
character Diz cada letra em voz alta, por exemplo: I-A-T-A.
cardinal Pronuncia o valor como um número. Por exemplo, “974” seria pronunciado como “novecentos e setenta e quatro”.
ordinal Pronuncia o número como um ordinal. Por exemplo, “1” seria pronunciado como “primeiro” e “33” seria pronunciado como “trigésimo terceiro”.
digits Lê os números especificados como dígitos. Por exemplo, “747” seria pronunciado como “sete, quatro, sete” e não como “setecentos e quarenta e sete”.
fraction Lê os números em forma de fração. Por exemplo, “1/3” seria pronunciado como “um terço” e “2 4/10” seria pronunciado como “dois e quatro décimos”.
unit Lê o número especificado como uma unidade. O valor deve ser um número seguido de uma unidade de medida, sem espaço entre os dois. Por exemplo: “1m”.
date Especifique como pronunciar as datas. Consulte a seção abaixo sobre formatação de data.
time Pronuncia durações em minutos e segundos. Por exemplo: 1'30" é lido como “um minuto e trinta segundos”.
expletive Substitui o conteúdo por um “bip” para censurar palavrões. Você pode usar essa função para substituir automaticamente palavrões filtrados.
telephone Lê um número de telefone com pausas adequadas.
address Lê em voz alta um endereço com pausas adequadas.

Nota: Nem todos os estilos de voz oferecem suporte a address opção.

Observação: Ao usar vozes TTS Premium, o character Esse atributo pode não funcionar como esperado e deve ser evitado.

Um exemplo:

<speak>
Your number is <say-as interpret-as='cardinal'>10</say-as>. 
You are <say-as interpret-as='ordinal'>10</say-as> in line. 
The digits for ten are <say-as interpret-as='digits'>10</say-as>.
</speak>

Formatação de data

As datas podem ser formatadas das seguintes maneiras:

format Como a data é lida em voz alta
mdy mês-dia-ano (por exemplo, “10/3/2019”)
dmy dia-mês-ano (por exemplo, “3/10/2019”)
ymd ano-mês-dia (por exemplo, “10/3/2019”)
md mês-dia (por exemplo, “3/10”)
dm dia-mês (por exemplo, “10/3”)
ym ano-mês (por exemplo, “2019/3”)
my mês-ano (por exemplo, “3/2019”)
d dia (por exemplo, “10”)
m mês (por exemplo, “3”)
y ano (por exemplo, “2019”)
yyyymmdd ano-mês-dia, com ? para substituir componentes não especificados. Por exemplo: 20190310 ou ????0310.

O exemplo abaixo será convertido para “Hoje é 10 de março”.

<speak>
Today is <say-as interpret-as="date" format="dm">10/3</say-as>
</speak>

Frases e parágrafos

Frases

Você pode colocar as frases entre as s tag. Isso equivale a colocar um ponto final no fim da frase.

<speak>
<s>Thank you Mario</s>
<s>But our princess is in another castle</s>
</speak>

Parágrafos

O p A tag permite que você especifique parágrafos em seu discurso.

<speak>
<p>Hello.</p>
<p>How are you?</p>
</speak>

Substituição

O sub A tag permite que você forneça uma pronúncia alternativa. O conteúdo da alias o atributo será lido em seu lugar.

<speak>
Welcome to the <sub alias="United States">US</sub>.
</speak>