Entendendo SSML
O Speech Synthesis Markup Language (SSML) é uma linguagem de marcações baseada em XML que fornece anotações de texto para aplicativos de síntese de discurso. É uma recomendação do W3C Voice-Browser Working Group adotada como a linguagem de marcações padrão para a síntese de discurso pela especificação VoiceXML 2.0. O SSML fornece aos desenvolvedores de aplicativos de fala uma maneira padrão de controlar aspectos do processo de síntese, permitindo que especifiquem a pronúncia, o volume, o tom, a velocidade e outros atributos por meio da marcação. Você pode usar o SSML para controlar a síntese do seu texto com todos os idiomas compatíveis.
O serviço IBM Watson® Text to Speech baseia seu suporte na versão 1.1 do SSML, que foi recomendada pelo W3C em 7 de setembro de 2010. Para obter mais informações sobre a recomendação W3C SSML, consulte W3C Speech Synthesis Markup Language(SSML)Versão 1.1.
Introdução ao SSML
O SSML opera aumentando o texto sem formatação transmitido a um sintetizador com um conjunto predefinido de elementos ou tags. Um analisador sintático de XML primeiro separa o texto sem formatação de entrada das especificações de marcações. Em seguida, as especificações são processadas e enviadas como um conjunto de instruções de uma maneira que possa ser entendida pelo sintetizador para produzir os efeitos desejados. Para que o analisador sintático de XML execute essa tarefa, a marcação precisa ser bem formada; por exemplo, os elementos devem ser fechados e diversos elementos devem ser aninhados corretamente. Para obter uma introdução aos conceitos básicos de XML, consulte w3schools.com/xml/xml_whatis.asp.
Um elemento do SSML é qualquer item contido e que inclui uma tag de abertura e sua tag de fechamento correspondente. Conforme mostrado no exemplo a seguir, um elemento pode conter uma combinação de outros elementos (tags podem ser aninhadas) e texto. Além disso, os elementos podem requerer ou, opcionalmente, aceitar atributos configurados para valores específicos.
<tag1>
<tag2 attributeName="attributeValue">
... some text ...
</tag2>
</tag1>
Um documento SSML legal completo consiste em um prólogo XML, que contém informações como codificação e o esquema com relação ao qual validar o documento SSML, seguido pelo elemento raiz, <speak>
. Dentro da extensão do elemento
<speak>
, você especifica o texto que deve ser sintetizado, acrescido de elementos adicionais.
<?xml version="1.0" encoding="UTF-8"?>
<speak version="1.1">
... the body that contains text to be synthesized plus markup ...
</speak>
O prolog XML não é necessário para o texto que você passa para o serviço. O serviço suporta fragmentos SSML, que são elementos SSML que não incluem o cabeçalho XML completo e não precisam incluir seus elementos pai. Por exemplo, os elementos
<?xml>
e <speak>
são sempre opcionais para SSML que você envia para a síntese.
Suporte do SSML
Para obter mais informações sobre o uso de SSML e recursos relacionados com o serviço, consulte o seguinte:
- O serviço implementa a maior parte da especificação W3C e suporta fragmentos SSML.
- Para obter informações completas sobre o nível de suporte do serviço para todos os elementos do SSML, consulte Elementos do SSML.
- Para exemplos de uso de elementos SSML com o
text
de uma solicitação de síntese de fala, veja Exemplos de texto de entrada.
- O serviço suporta recursos de síntese adicionais para vozes neurais e expressivas aprimoradas:
- O serviço suporta recursos de síntese adicionais para vozes neurais expressivas:
- O serviço suporta um recurso de síntese que permite controlar como as cordas alfanuméricas são grafadas para as vozes alemãs. Para obter mais informações, consulte Especificando como as strings são grafadas fora.
- O serviço suporta o uso do elemento SSML
<mark>
com a interface WebSocket para obter informações de sincronização para palavras do áudio resultante.. A interface WebSocket também permite solicitar informações para todas as sequências do texto de entrada. Para obter mais informações, consulte - A interface de customização do serviço suporta o uso do elemento SSML
<phoneme>
para especificar a ortografia fonética que ele usa para pronunciar uma palavra. A ortografia fonética representa os sons de uma palavra, como esses sons são divididos em sílabas, e quais sílabas recebem tonicidade.- Para obter informações sobre a interface de customização, consulte Entendendo a customização.
- Para obter informações sobre os símbolos válidos que você pode usar em um International Phonetic Alphabet (IPA) ou na especificação IBM Representação Phonetic Representação (SPR) para qualquer idioma suportado, consulte Understanding fononetic símbolos.
Validação do SSML
O serviço valida todos os elementos do SSML enviados em qualquer conteúdo, seja como texto de entrada para a síntese ou como a definição de tradução de uma palavra para a customização. O serviço não pode determinar antecipadamente se o texto enviado para a síntese contém elementos do SSML. Portanto, ele executa a mesma validação para todo o texto de entrada, independentemente de ele conter o SSML.
Validação de elementos e atributos
O serviço executa a seguinte validação de elementos e atributos SSML:
-
Todas as entradas do SSML devem estar corretas e bem formadas.
-
O serviço ignora silenciosamente elementos do SSML não suportados. O serviço sintetiza o texto que está contido dentro das tags de um elemento não suportado; apenas o elemento é ignorado.
-
O serviço retorna um código de erro HTTP 400 para elementos ou atributos SSML inválidos. Ao especificar elementos SSML que requerem um atributo:
- Você deve especificar o atributo necessário.
- Você deve especificar um valor válido para o atributo requerido.
- Se você incluir atributos ou valores inválidos adicionais, eles são ignorados.
Se a solicitação falhar, a resposta de erro inclui uma mensagem descritiva. Por exemplo, suponha que você especifique o texto de entrada a seguir, que inclui o elemento
<say-as>
:"text": "The price is <say-as interpret-as=\"currency\">$2,500.00</say-as>."
Neste exemplo, o atributo
interpret-as
é necessário e é especificado, mas seu valor é inválido. Um valor válido para o atributo évxml:currency
, nãocurrency
. A resposta de erro inclui a seguinte mensagem:The connection to the Watson Text to Speech service closed with the following error: Tag <say-as> has invalid attribute interpret-as=currency
Resumo de erros SSML
A Tabela 1 descreve muitos erros comuns de validação do SSML. Em cada caso, a solicitação falha e o serviço retorna um código de erro 400.
Erro de validação | Descrição do problema |
---|---|
Elemento SSML inválido | Por exemplo, você especifica uma tag incorretamente, omite um atributo necessário ou inclui uma tag de abertura, mas nenhuma tag de fechamento correspondente. |
Caracteres de controle XML inescapados | The input text itself contains a " , ' , & , < , > , or / character instead of its equivalent escape string or character encoding. Para obter mais
informações, consulte Escapando caracteres de controle XML. |
Tensão de sílaba inválida | O atributo ph de um elemento <phoneme> para IBM SPR inclui uma ênfase de sílaba inválida. Para obter mais informações sobre a indicação de sílabas e o estresse sinável, consulte Especificantes de sílabas. |
Símbolo fonético inválido | O atributo ph de um elemento <phoneme> inclui um símbolo IPA ou SPR não compatível com o idioma especificado. |
Sem vogais | O atributo ph de um elemento <phoneme> especifica a pronúncia de uma palavra que não inclui vogais. |
Contato francês em local inválido | No atributo ph de um elemento <phoneme> , o caractere de ligação não segue uma consoante ou ocorre no meio da pronúncia de uma palavra. |
O símbolo : japonês não precede uma vogal |
No atributo ph de um elemento <phoneme> em japonês, um caractere : não ocorre antes de uma vogal (possivelmente com outros símbolos, como o limite da sílaba, no meio). |
Uso inválido do elemento SSML <prosody> |
Você não pode usar os atributos contour , duration , range e volume do elemento <prosody> com nenhuma voz. |
Uso inválido do elemento SSML <express-as> |
Você pode usar o elemento <express-as> apenas com vozes neurais expressivas. |