IBM Cloud Docs
Elementos do SSML

Elementos do SSML

Com o serviço IBM Watson® Text to Speech, é possível utilizar a maioria dos elementos e atributos do Speech Synthesis Markup Language (SSML) para controlar a síntese do seu texto.

Elementos e atributos suportados

A Tabela 1 resume o suporte do serviço para elementos e atributos SSML:

  • Integral significa que o serviço suporta totalmente o elemento ou atributo com suas interfaces HTTP e WebSocket.
  • Parcial significa que o suporte do serviço para o elemento ou atributo é limitado de uma das seguintes formas:
    • O serviço suporta apenas alguns aspectos do elemento ou atributo.
    • O serviço suporta o elemento ou atributo com apenas algumas de suas vozes.
    • O serviço suporta o elemento ou atributo com apenas uma de suas interfaces, HTTP ou WebSocket.
  • Nenhum significa que o serviço não suporta o elemento ou atributo.

As seções a seguir fornecem descrições de cada elemento ou atributo, incluindo exemplos, restrições, e se o suporte do serviço difere da SSML padrão. O suporte para alguns atributos e valores difere um pouco da especificação SSML. Para obter mais informações, consulte W3C Speech Synthesis Markup Language(SSML)Versão 1.1.

Elementos e atributos SSML
Elemento ou atributo Suporte Elemento ou atributo Suporte
Elemento <audio> Nenhum Elemento <prosody> Parcial
Elemento <break> Completo -Atributo contour Nenhum
Elemento <desc> Nenhum -Atributo duration Nenhum
Elemento <emphasis> Parcial Completo
Elemento <express-as> Parcial -Atributo range Nenhum
Elemento <lexicon> Nenhum Completo
Elemento <mark> Parcial -Atributo volume Nenhum
Elemento <meta> Nenhum Elemento <say-as> Parcial
Elemento <metadata> Nenhum Parcial
Elemento <paragraph> Completo Elemento <sentence> Completo
Elemento <phoneme> Completo Elemento <speak> Completo
Elemento <sub> Completo
Elemento <voice> Nenhum

O elemento <audio>

Este elemento <audio> insere elementos registrados no áudio gerado pelo serviço. Ele não é suportado.

O elemento <break>

O elemento <break> insere uma pausa no texto falado. Ele tem os atributos opcionais a seguir:

  • strength especifica o comprimento da pausa em termos de valores de intensidade variados:
    • none suprime uma quebra que poderia ser produzida durante o processamento.
    • x-weak, weak, medium, strong ou x-strong inserem quebras cada vez mais intensas.
  • timeespecifica o comprimento da pausa em termos de segundos ou milissegundos. Os formatos de valor válidos são {integer}s para segundos ou {integer}ms para milissegundos.
Break size <break strength="none"/> no pause
Break size <break strength="x-weak"/> x-weak pause
Break size <break strength="weak"/> weak pause
Break size <break strength="medium"/> medium pause
Break size <break strength="strong"/> strong pause
Break size <break strength="x-strong"/> x-strong pause
Break size <break time="1s"/> one-second pause
Break size <break time="1500ms"/> 1500-millisecond pause

O elemento <break> é a funcionalidade beta para vozes naturais.

Quando usado com o atributo time e as vozes Expressive ou Natural, o elemento <break> introduz uma pausa de aproximadamente a duração especificada, embora o tempo exato possa variar de acordo com a voz e o contexto.

O elemento <desc>

O elemento <desc> pode ocorrer apenas dentro de um elemento <audio>. Como o elemento <audio> não é suportado, o elemento <desc> também não.

O elemento <emphasis>

O elemento <emphasis> é suportado para uso apenas com as vozes neurais expressivas.

Com as vozes neurais expressivas, você pode usar o elemento <emphasis> para enfatizar ou desenfatizar uma ou mais palavras do texto de entrada. O elemento suporta um atributo level opcional que aceita um dos seguintes valores:

  • none-Impede o serviço de enfatizar texto que, de outra forma, poderia ser enfatizado.
  • moderate-Fornece uma quantidade perceptível de ênfase ao texto. Este nível é o padrão se você omitia o atributo level.
  • strong-Fornece uma quantidade mais significativa de ênfase para o texto do que o nível moderado proporciona.
  • reduced-De-enfatiza o texto tendendo a reduzir seu significado no áudio. Esse nível é o oposto de ressaltar o texto.

O exemplo a seguir aplica o nível moderate à palavra give:

I am going to <emphasis level="moderate">give</emphasis> her the book.

Para obter mais informações, consulte Emphasizing words.

O elemento <express-as>

O elemento <express-as> é uma extensão SSML específica para o serviço Text to Speech. Ele é suportado para uso apenas com as vozes neurais expressivas.

Com as vozes neurais expressivas, você pode usar o elemento <express-as> para aplicar estilos de fala para aprificar a ênfase do serviço de determinadas características para toda ou parte do texto de entrada. O elemento suporta um atributo style necessário que aceita um dos estilos de fala a seguir:

  • cheerful-Expressa felicidade e boas notícias.
  • empathetic-Expressa empatia e compaixão.
  • neutral-Expressa objetividade e unibilidade.
  • uncertain-Expressa confusão e incerteza.

O exemplo a seguir aplica o estilo cheerful a todo o texto de entrada:

<express-as style="cheerful">Oh, that's good news! I'm glad that we could help.</express-as>

Para obter mais informações, consulte Usando estilos de fala.

O elemento <lexicon>

Este elemento <lexicon> apresenta dicionários de pronúncia para o documento SSML fornecido. Ele não é suportado.

É possível usar a interface de customização do serviço para definir um dicionário de entradas customizadas (pares de palavra/tradução) para uso durante a síntese de discurso. Para obter mais informações, consulte Entendendo a customização.

O elemento <mark>

O elemento <mark> é suportado apenas pela interface WebSocket do serviço, não por sua interface HTTP, que ignora o elemento. Para obter mais informações, consulte Especificando uma marca do SSML.

O elemento <mark> não é compatível com vozes naturais.

O elemento <mark> é um elemento vazio que coloca um marcador no texto a ser sintetizado. O cliente é notificado quando todo o texto que antecedeu o elemento <mark> foi sintetizado. O elemento aceita um único atributo nameque especifica uma sequência que identifica exclusivamente a marca; o nome deve começar com um caractere alfanumérico. O nome é retornado com o horário no qual a marca ocorre no áudio sintetizado.

Hello <mark name="here"/> world.

Os elementos <meta> e <metadata>

Os elementos <meta> e <metadata> são contêineres nos quais você pode colocar informações sobre o documento. Eles não são suportados.

Os elementos <paragraph> e <sentence>

Os elementos <paragraph> (ou <p>) e <sentence> (ou <s>) são elementos opcionais que podem ser usados para dar dicas sobre a estrutura textual. Se o texto entre os sinais em um elemento <paragraph> ou <sentence> não terminar com um caractere de pontuação de fim de sentença (como um ponto), o serviço incluirá uma pausa mais longa do que o normal no áudio sintetizado.

O único atributo válido para qualquer elemento é xml:lang, que permite a alternância de idioma. O atributo não é suportado.

<paragraph>
  <sentence>Text within a sentence element.</sentence>
  <s>More text in another sentence.</s>
</paragraph>

O elemento <phoneme>

O elemento <phoneme> fornece uma pronúncia fonética para o texto entre os sinais. A ortografia fonética representa os sons de uma palavra, como eles são divididos em sílabas e quais sílabas recebem o acento. O elemento tem dois atributos:

  • alphabet é um atributo opcional que especifica a fonologia a ser usada. Os alfabetos suportados são

    • O Alfabeto Fonético Internacional Padrão (IPA): alphabet="ipa".
    • A Representação Fonética Simbólica (SPR) da IBM: alphabet="ibm".

    Se nenhum alfabeto for especificado, o serviço usará o IBM SPR por padrão. Para obter mais informações, consulte Entendendo os símbolos fonéticos

  • ph é um atributo necessário que fornece a pronúncia no alfabeto indicado. Os exemplos a seguir mostram a pronúncia para a palavra tomatoem ambos os formatos:

    • Formato do IPA:

      <phoneme alphabet="ipa" ph="təˈmeɪ.ɾoʊ">tomato</phoneme>
      
    • Formato do IPA com símbolos Unicode:

      <phoneme alphabet="ipa" ph="t&#x0259;&#x02C8;me&#x026A;.&#x027E;o&#x028A;">tomato</phoneme>
      
    • Formato SPR da IBM:

      <phoneme alphabet="ibm" ph=".0tx.1me.0Fo">tomato</phoneme>
      

Para obter mais informações sobre o uso de notações de SPR e IPA com o elemento <phoneme>, consulte Entendendo símbolos fonéticos.

O elemento <prosody>

O elemento <prosody> controla o tom e a taxa de fala do texto. Todos os atributos são opcionais, mas ocorre um erro se você não especificar pelo menos um atributo com o elemento.

O serviço suporta os dois atributos a seguir da especificação SSML:

A especificação SSML também oferece quatro atributos que o serviço não suporta:

  • O atributo contour
  • O atributo range
  • O atributo duration
  • O atributo volume

O serviço também suporta parâmetros de consulta que deixam você ajustar a taxa e pitch para todo o texto de um pedido de síntese de fala. Para obter mais informações sobre os parâmetros e sua interação com os atributos pitch e rate do elemento <prosody>, consulte

O elemento <prosody> não é compatível com vozes naturais.

Diferenças a partir da especificação SSML versão 1.1

O serviço Text to Speech baseia seu suporte SSML no W3C Speech Synthesis Markup Language(SSML)Versão 1.1. No entanto, a especificação SSML evoluiu desde que o serviço foi lançado pela primeira vez. Para manter o backward-compatibilidade para os usuários, o serviço continua a suportar alguns recursos do elemento <prosody> que são diferentes da especificação SSML mais recente.

  • Para o atributo pitch, o serviço suporta os seguintes recursos adicionais:

    • Uma mudança relativa em percentual indicado por um número assinado ou não assinado e seguido por um % (sinal de percentual). O pitch padrão para uma voz é equivalente a passar um valor de 0%.
    • Uma alteração relativa em semitones indicado por um número assinado ou não assinado e seguido da sequência st.
  • Para o atributo rate, o serviço suporta os seguintes recursos adicionais:

    • Uma mudança relativa em percentual indicado por um número assinado ou não assinado e seguido por um % (sinal de percentual). A taxa de fala padrão para uma voz é equivalente a passar um valor de 0%.
    • Um número sem designação de unidade especifica o número de palavras por minuto. O número é absoluto; não é possível especificar um aumento relativo ou diminuir em palavras por minuto.
  • Para as vozes neurais expressivas, os atributos pitch e rate suportam apenas valores percentuais.

    • Para o atributo pitch, não use Hertz, semitones ou palavras-chave.
    • Para o atributo rate, não use palavras por minuto ou palavras-chave.

Para obter mais informações sobre os recursos suportados pelo SSML versão 1.1, consulte a seção 3.2.4 Prosody Element da especificação SSML.

O atributo pitch

O atributo pitch modifica o tom da linha de base do texto dentro do elemento. Os valores aceitos são

  • Um número seguido da designação Hz (Hertz): O tom de referência é transposto (para cima ou para baixo) para o valor especificado. Por exemplo, 150Hz.
  • Uma alteração relativa em porcentagem: Um número que causa uma mudança relativa em relação à linha de base padrão. O número é precedido por + (um aumento) ou - (uma diminuição) e seguido por % (sinal de porcentagem). Um número não assinado que é seguido por um % é interpretado como um aumento positivo. Por exemplo, +10% ou 10%. O pitch padrão para uma voz é equivalente a passar um valor de 0%.
  • Uma alteração relativa em semitons: Um número que causa uma mudança absoluta em relação à linha de base padrão. O número é precedido por + (um aumento) ou - (uma diminuição) e seguido por st (semitons). Um número não assinado seguido por st é interpretado como um aumento positivo. Por exemplo, +5st ou 5st.
  • Uma palavra-chave: Uma das seis palavras-chave a seguir, que modificam o tom para os valores predefinidos correspondentes:
    • default usa o tom de referência padrão do serviço.
    • x-low muda a referência do tom para baixo por 12 semitons.
    • low muda a referência do tom para baixo por seis semitons.
    • medium produz o mesmo comportamento que default.
    • high muda a referência do tom para cima por seis semitons.
    • x-high muda a referência do tom para cima por até 12 semitons.

As vozes neurais expressivas suportam apenas valores percentuais para o atributo pitch. Eles não suportam o uso de Hertz, semitones ou palavras-chave.

A melhor maneira de determinar o que funciona para a sua aplicação é fazer ajustes com base em porcentagens e experimentar valores diferentes. Tente mudanças incrementais de cinco ou dez por cento antes de fazer modificações mais significativas.

<prosody pitch="150Hz">Transpose pitch to 150 Hz</prosody>
<prosody pitch="-20Hz">Lower pitch by 20 Hz from baseline</prosody>
<prosody pitch="+20Hz">Increase pitch by 20 Hz from baseline</prosody>
<prosody pitch="-10%">Decrease pitch by 10 percent</prosody>
<prosody pitch="+10%">Increase pitch by 10 percent</prosody>
<prosody pitch="-12st">Lower pitch by 12 semitones from baseline</prosody>
<prosody pitch="+12st">Increase pitch by 12 semitones from baseline</prosody>
<prosody pitch="x-low">Lower pitch by 12 semitones from baseline</prosody>

O atributo rate

O atributo rate indica uma mudança na taxa de fala para o texto dentro do elemento. Os valores aceitos são

  • Um número sem designação de unidade: A taxa é alterada para o número especificado de palavras por minuto. Por exemplo, um valor de 50 indica uma taxa de fala de 50 palavras por minuto. O número é absoluto; não é possível especificar um aumento relativo ou diminuir em palavras por minuto.
  • Uma alteração relativa em porcentagem: Um número que causa uma mudança relativa da taxa de fala padrão. O número é precedido por + (um aumento) ou - (uma diminuição) e seguido por % (sinal de porcentagem). Um número não assinado que é seguido por um % é interpretado como um aumento positivo. Por exemplo, +10% ou 10%. A taxa de fala padrão para uma voz é equivalente a passar um valor de 0%.
  • Uma palavra-chave: Uma das seis palavras-chave a seguir, que modifica a taxa de fala para os valores predefinidos correspondentes:
    • default usa a taxa de fala padrão do serviço.
    • x-slow diminui a taxa em 50 por cento.
    • slow diminui a taxa em 25 por cento.
    • medium produz o mesmo comportamento que default.
    • fast aumenta a taxa em 25 por cento.
    • x-fast aumenta a taxa em 50 por cento.

As vozes neurais expressivas suportam apenas valores percentuais para o atributo rate. Eles não suportam palavras por minuto ou palavras-chave.

A melhor maneira de determinar o que funciona para a sua aplicação é fazer ajustes com base em porcentagens e experimentar valores diferentes. Tente mudanças incrementais de cinco ou dez por cento antes de fazer modificações mais significativas.

<prosody rate="50">Set speaking rate to 50 words per minute</prosody>
<prosody rate="-5%">Decrease speaking rate by 5 percent</prosody>
<prosody rate="+5%">Increase speaking rate by 5 percent</prosody>
<prosody rate="slow">Decrease speaking rate by 25%</prosody>
<prosody rate="fast">Increase speaking rate by 25%</prosody>

O elemento <say-as>

O elemento <say-as> fornece informações sobre o tipo de texto que está contido dentro do elemento e especifica o nível de detalhes para renderização do texto.

  • O elemento tem um atributo necessário, interpret-as, que indica como o texto entre aspas deve ser interpretado.
  • O elemento possui dois atributos opcionais, format e detail, que são usados apenas com valores particulares do atributo interpret-as, como mostrado nos exemplos a seguir.

O serviço suporta o elemento <say-as> com os idiomas a seguir:

  • O serviço suporta totalmente o elemento <say-as> para o inglês dos EUA.
  • Para a maioria dos outros idiomas, o serviço suporta apenas os atributos digits e letters do elemento.
  • Para japonês, o serviço suporta apenas o atributo digits. O serviço ignora caracteres não numéricos que são incluídos na sequência de dígitos.

A pronúncia padrão do serviço de cadeias alfabéticas, numéricas e alfanuméricas varia por idioma, sendo que cada idioma tem suas próprias regras. Você pode usar o elemento <say-as> para controlar como as strings são pronunciadas, incluindo se elas devem ser grafadas como caracteres individuais com os elementos letters e digits.

Para o alemão, você também pode controlar o ritmo em que o serviço pronuncia os personagens. Para obter mais informações, consulte Especificando como as strings são grafadas fora.

O atributo interpret-as

Valores aceitáveis para o atributo interpret-as e exemplos de cada valor a seguir. O serviço suporta os seguintes valores como argumentos para o atributo interpret-as:

cardinal

O valor cardinal indica o número cardinal para o numeral dentro do elemento. Os exemplos a seguir dizem Super Bowl de quarenta e nove. O primeiro é supérfluo, uma vez que não muda o comportamento padrão do serviço.

Super Bowl <say-as interpret-as="cardinal">49</say-as>
Super Bowl <say-as interpret-as="cardinal">XLIX</say-as>

date

O valor date indica a data dentro do elemento, de acordo com o formato especificado no atributo format associado. O atributo format é necessário para o valor date. Se nenhum format estiver presente, o serviço ainda tentará pronunciar a data. Os exemplos a seguir indicam as datas determinadas nos formatos especificados, em que d, m e y representam dia, mês e ano.

<say-as interpret-as="date" format="mdy">12/17/2005</say-as>
<say-as interpret-as="date" format="ymd">2005/12/17</say-as>
<say-as interpret-as="date" format="dmy">17/12/2005</say-as>
<say-as interpret-as="date" format="ydm">2005/17/12</say-as>
<say-as interpret-as="date" format="my">12/2005</say-as>
<say-as interpret-as="date" format="md">12/17</say-as>
<say-as interpret-as="date" format="ym">2005/12</say-as>

digits

O valor digits indica os dígitos no número dentro do elemento. (O valor também pronuncia individualmente quaisquer caracteres alfabéticos que estão incluídos na cadeia de enredos.) O exemplo a seguir indica os dígitos individuais 123456.

<say-as interpret-as="digits">123456</say-as>

interjection

O atributo interjection é uma extensão SSML específica para o serviço Text to Speech. Ele é suportado para uso apenas com as vozes neurais expressivas.

Com as vozes neurais expressivas, o serviço enfatiza automaticamente as seguintes interjeições: aha, hmm, huh, oh, uh, uh-huh e um. Você pode usar o valor interjection para ativar ou desativar a ênfase do serviço das interjeições aha e oh. Inclua o atributo enabled adicional com um valor de true ou false para ativar ou desativar a interjeição.

O exemplo a seguir desabilita a ênfase tanto das interjeições aha quanto oh no texto:

<say-as interpret-as='interjection' enabled='false'>Oh</say-as>, in addition, the <say-as interpret-as='interjection' enabled='false'>aha</say-as> wasp is endemic to Australia.

Para obter mais informações, consulte Interjeições Emphasizing.

letters

O valor letters soletra os caracteres na palavra dentro do elemento. (O valor também pronuncia individualmente quaisquer caracteres numéricos que estão incluídos na sequência de endados.) O exemplo a seguir soletra as letras da palavra hello.

<say-as interpret-as="letters">Hello</say-as>

Você também pode especificar o valor group ou single com o atributo opcional format. Esses atributos ajudam a melhorar a legibilidade de cadeias alfanuméricas, como confirmação de números e ID. O formato single acrescenta mais silêncio ao soletrar os caracteres um a um. O formato group acrescenta um silêncio mais longo quando mudamos de dígitos para letras e vice-versa, e após a leitura de cada 3 ou 4 caracteres do mesmo tipo.

<say-as interpret-as="letters" format=“single”>112A567B</say-as>
<say-as interpret-as="letters" format=“group”>3174A2W486</say-as>

number

O valor number oferece uma alternativa aos valores cardinal e ordinal. É possível usar o atributo format opcional para indicar como uma série de números deve ser interpretada. O primeiro exemplo omite o atributo format para pronunciar o número como um valor cardinal. O segundo exemplo especifica explicitamente que o número deve ser pronunciado como um valor cardinal. O terceiro exemplo especifica que o número deve ser pronunciado como um valor ordinal.

<say-as interpret-as="number">123456</say-as>
<say-as interpret-as="number" format="cardinal">123456</say-as>
<say-as interpret-as="number" format="ordinal">123456</say-as>

Também é possível especificar o valor telephone para o atributo format. Os exemplos mostram duas maneiras diferentes de pronunciar uma série de números como um número de telefone. Para pronunciar os números com a pontuação incluída, especifique o valor punctuation para o atributo detail opcional.

<say-as interpret-as="number" format="telephone">555-555-5555</say-as>
<say-as interpret-as="number" format="telephone" detail="punctuation">555-555-5555</say-as>

ordinal

O valor ordinal indica o valor ordinal para o dígito dentro do elemento. O exemplo a seguir diz second first.

<say-as interpret-as="ordinal">2</say-as>
<say-as interpret-as="ordinal">1</say-as>

vxml:boolean

O valor vxml:boolean indica sim ou não, dependendo do valor true ou false dentro do elemento.

<say-as interpret-as="vxml:boolean">true</say-as>
<say-as interpret-as="vxml:boolean">false</say-as>

vxml:currency

O valor vxml:currencyé usado para controlar a síntese de valores monetários. A sequência deve ser gravada no formato UUUmm.nn, em que UUU é o indicador de moeda de três caracteres especificado pelo padrão ISO 4217 e mm.nn é a quantidade. O exemplo a seguir diz forty-five dollars and thirty cents.

<say-as interpret-as="vxml:currency">USD45.30</say-as>

Se o número especificado incluir mais de duas casas decimais, a quantia será sintetizada como um número decimal seguido pelo indicador de moeda. Se o indicador de moeda de três caracteres não estiver presente, a quantia será sintetizada somente como um número decimal e o tipo de moeda não será pronunciado. O exemplo a seguir diz forty-five point three two nine US dollars.

<say-as interpret-as="vxml:currency">USD45.329</say-as>

vxml:date

O valor vxml:date funciona como o valor date, mas o formato é predefinido como YYYYMMDD. Se um valor de dia, mês ou ano não for conhecido ou se você não quiser que ele seja falado, substitua o valor por um ? (ponto de interrogação). O segundo e terceiro exemplos incluem pontos de interrogação.

<say-as interpret-as="vxml:date">20050720</say-as>
<say-as interpret-as="vxml:date">????0720</say-as>
<say-as interpret-as="vxml:date">200507??</say-as>

vxml:time

O valor 'vxml:time' indica a hora dentro do elemento de acordo com o formato fornecido no atributo de formato associado. O atributo de formato é necessário para o valor de tempo. O formato deve ter quatro dígitos, sem sufixo, com "a", "p" ou "h". Os exemplos a seguir mostram a hora indicada nos formatos especificados, em que d, m e y representam dia, mês e ano.

<say-as interpret-as="vxml:time">1230</say-as>
<say-as interpret-as="vxml:time">1230a</say-as>
<say-as interpret-as="vxml:time">1230p</say-as>
<say-as interpret-as="vxml:time">0100h</say-as>

vxml:digits

O valor vxml:digits fornece os mesmos recursos que o valor digits.

vxml:phone

O valor vxml:phone indica um número de telefone com ambos os dígitos e a pontuação. É equivalente a usar o valor number especificando telephone para o atributo format e punctuation para o atributo detail.

<say-as interpret-as="vxml:phone">555-555-5555</say-as>

O elemento <speak>

O serviço suporta fragmentos do SSML, que são elementos do SSML que não incluem o cabeçalho XML completo. O elemento <speak> é opcional para SSML que você passa para o serviço.

O elemento <speak> é o elemento raiz para documentos SSML. Os atributos válidos são

  • version é um atributo necessário que determina a especificação do SSML. O valor aceito é 1.0.
  • xml:lang não é necessário para o serviço. Omita o atributo quando usar esse elemento. Note que não é possível utilizar este atributo para alterar o idioma para um pedido de síntese de fala.
  • xml:baseNão tem nenhum efeito.
  • xmlns não é necessário para o serviço. Omita o atributo quando usar esse elemento.
<speak version="1.1">
  The text to be spoken.
</speak>

O elemento <sub>

O elemento <sub> indica que o texto que é especificado pelo atributo alias é para substituir o texto que está entre os sinais dentro do elemento quando o discurso é sintetizado. O atributo alias é o único do elemento e é necessário.

<sub alias="International Business Machines">IBM</sub>

O elemento <voice>

Este elemento <voice> solicita uma mudança na voz. Ele não é suportado.