Para possibilitar mais personalização da resposta de áudio, é possível enviar Linguagem de Marcação de Síntese de Fala (SSML, na sigla em inglês) na solicitação da Cloud Text-to-Speech com o fornecimento de detalhes sobre pausas, formatação de áudio para acrônimos, datas, horas, abreviaturas ou texto que deva ser censurado. Consulte o tutorial de SSML da Cloud TTS para mais informações e exemplos de código.
Em seguida, mostramos um exemplo de marcação SSML e a sintetização do texto pela Cloud TTS:
<speak> Here are <say-as interpret-as="characters">SSML</say-as> samples. I can pause <break time="3s"/>. I can play a sound <audio src="https://www.example.com/MY_MP3_FILE.mp3">didn't get your MP3 audio file</audio>. I can speak in cardinals. Your number is <say-as interpret-as="cardinal">10</say-as>. 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. The digits for ten are <say-as interpret-as="characters">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>
Aqui está o texto sintetizado para o documento SSML de exemplo:
Here are S S M L samples. I can pause [3 second pause]. I can play a sound [audio file plays]. I can speak in cardinals. Your number is ten. Or I can speak in ordinals. You are tenth in line. Or I can even speak in digits. The digits for ten are one oh. I can also substitute phrases, like the World Wide Web Consortium. Finally, I can speak a paragraph with two sentences. This is sentence one. This is sentence two.
A Cloud TTS aceita um subconjunto de tags SSML disponíveis, que estão descritas aqui.
Para mais informações sobre como criar dados de áudio com a Cloud TTS usando entradas SSML, consulte Como criar arquivos de áudio de voz.
Faça um teste
Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho da Cloud TTS em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
Faça um teste sem custos financeiros da Cloud TTSDicas para usar a SSML
Dependendo da sua implementação, talvez seja necessário escapar aspas no payload SSML enviado para a Cloud TTS. O exemplo a seguir mostra como formatar uma entrada SSML incluída em um objeto JSON.
"{ 'input':{ 'ssml':'<speak>The <say-as interpret-as=\"characters\">SSML</say-as> standard <break time=\"1s\"/>is defined by the <sub alias=\"World Wide Web Consortium\">W3C</sub>.</speak>' }, 'voice':{ 'languageCode':'en-us', 'name':'en-US-Standard-B', 'ssmlGender':'MALE' }, 'audioConfig':{ 'audioEncoding':'MP3' } }"
Reservar caracteres
Evite usar caracteres de reserva SSML no texto que será convertido em áudio. Quando você precisar fazer isso, use o código de escape para impedir que o caractere seja lido como código. A tabela a seguir mostra caracteres SSML reservados e os códigos de escape associados a eles.
| Caractere | Código de escape |
|---|---|
| " | " |
| & | & |
| " | ' |
| < | < |
| > | > |
Selecionar uma voz
Você pode definir a voz no
objeto
VoiceSelectionParams. Consulte o tutorial de SSML da Text-to-Speech
para acessar um exemplo de código
que demonstra o uso do objeto VoiceSelectionParams.
É possível usar a tag <voice> para ler SSML em várias vozes, mas
você precisa definir o nome do VoiceSelectionParams para uma voz compatível:
| Tipo de voz solicitado | Tipo de voz compatível com a tag <voice> | ||||
|---|---|---|---|---|---|
| Neural2 | Studio | Wavenet | News | Standard | |
| Neural2 | ✔ | ✔ | ✔ | ||
| Studio | ✔ | ✔ | ✔ | ||
| Wavenet | ✔ | ✔ | ✔ | ||
| Standard | ✔ | ✔ | ✔ | ||
| News | ✔ | ✔ | ✔ | ||
Compatibilidade com elementos SSML
As seções a seguir descrevem os elementos e as opções de SSML que podem ser usados nas suas ações.
<speak>
O elemento raiz da resposta SSML.
Para saber mais sobre o elemento speak, consulte a especificação do W3.
Exemplo
<speak> my SSML content </speak>
<break>
Elemento vazio que controla a pausa ou outros limites prosódicos entre as palavras. Usar <break> entre qualquer par de tokens é opcional. Se esse elemento não estiver presente entre as palavras, a quebra será determinada automaticamente com base no contexto linguístico.
Para saber mais sobre o elemento break, consulte a especificação do W3.
Atributos
| Atributo | Descrição |
|---|---|
time |
Define o tamanho da quebra em segundos ou milissegundos (por exemplo, "3 s" ou "250 ms"). |
strength |
Define a força da quebra prosódica de saída por termos relativos. Os valores válidos são: "x-weak", "weak", "medium", "strong" e "x-strong". O valor "none" indica que nenhum limite de quebra prosódico será gerado, o que pode ser usado para evitar uma quebra prosódica que o processador poderia produzir. Os outros valores indicam uma força de quebra monotonicamente não decrescente (que aumenta de modo conceitual) entre os tokens. Os limites mais fortes normalmente são acompanhados por pausas. |
Exemplo
O exemplo a seguir mostra como usar o elemento <break> para pausar entre as etapas:
<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>
Esse elemento permite indicar informações sobre o tipo de construção de texto contido no elemento. Também ajuda a especificar o nível de detalhes para renderizar o texto contido.
O elemento <say‑as> tem o atributo obrigatório, interpret-as, que determina como o valor é falado. Atributos opcionais format e detail são usados dependendo do valor interpret-as específico.
Exemplos
O atributo interpret-as aceita os seguintes valores:
-
currencyO exemplo a seguir é falado, em inglês, como "quarenta e dois dólares e um centavo". Se o atributo de idioma for omitido, a localidade atual será usada.
<speak> <say-as interpret-as='currency' language='en-US'>$42.01</say-as> </speak> -
telephoneVeja a descrição de
interpret-as='telephone'na observação do WG do W3C sobre a SSML 1.0, valores de atributo say-as.O exemplo a seguir é falado, em inglês, como "one eight zero zero two zero two one two one two". Se o atributo "google:style" for omitido, ele vai falar zero como a letra O.
No momento, o atributo "google:style='zero-as-zero'" funciona apenas em localidades em EN.
<speak> <say-as interpret-as='telephone' google:style='zero-as-zero'>1800-202-1212</say-as> </speak> -
verbatimouspell-outO exemplo a seguir é soletrado letra por letra:
<speak> <say-as interpret-as="verbatim">abcdefg</say-as> </speak> -
dateO atributo
formaté uma sequência de códigos de caracteres de campo de data. Os códigos de caracteres de campo aceitos emformatsão {y,m,d} para ano, mês e dia (do mês), respectivamente. Se o código de campo aparecer uma vez para ano, mês ou dia, o número de dígitos esperados será 4, 2 e 2, respectivamente. Se o código de campo for repetido, o número de dígitos esperados será o número de vezes que o código for repetido. É possível separar os campos no texto da data por pontuação e/ou espaços.O atributo
detailcontrola a forma falada da data. Paradetail='1', apenas os campos "dia" e um dos campos "mês ou "ano" são obrigatórios, embora seja possível fornecer ambos. Esse é o padrão quando nem todos os três campos são fornecidos. A forma falada, em inglês, é "The {dia ordinal} of {mês}, {ano}".O exemplo a seguir é falado, em inglês, como "The tenth of September, nineteen sixty":
<speak> <say-as interpret-as="date" format="yyyymmdd" detail="1"> 1960-09-10 </say-as> </speak>O exemplo a seguir é falado, em inglês, como "The tenth of September":
<speak> <say-as interpret-as="date" format="dm">10-9</say-as> </speak>Para
detail='2', os campos "dia", "mês" e "ano" são obrigatórios e esse é o padrão quando todos os três campos são fornecidos. A forma falada, em inglês, é "{mês} {dia ordinal}, {ano}".O exemplo a seguir é falado, em inglês, como "September tenth, nineteen sixty":
<speak> <say-as interpret-as="date" format="dmy" detail="2"> 10-9-1960 </say-as> </speak> -
charactersO exemplo a seguir é falado, em inglês, como "C A N":
<speak> <say-as interpret-as="characters">can</say-as> </speak> -
cardinalO exemplo a seguir é falado, em inglês, como "Twelve thousand three hundred forty five" (para inglês dos EUA) ou "Twelve thousand three hundred and forty five" (para inglês do Reino Unido):
<speak> <say-as interpret-as="cardinal">12345</say-as> </speak> -
ordinalO exemplo a seguir é falado, em inglês, como "First":
<speak> <say-as interpret-as="ordinal">1</say-as> </speak> -
fractionO exemplo a seguir é falado, em inglês, como "five and a half":
<speak> <say-as interpret-as="fraction">5+1/2</say-as> </speak> -
expletiveoubleepO exemplo a seguir é emitido como um sinal sonoro de censura:
<speak> <say-as interpret-as="expletive">censor this</say-as> </speak> -
unitConverte unidades para singular ou plural, dependendo do número. O exemplo a seguir é falado, em inglês, como "10 feet":
<speak> <say-as interpret-as="unit">10 foot</say-as> </speak> -
timeO exemplo a seguir é falado, em inglês, como "Two thirty P.M.":
<speak> <say-as interpret-as="time" format="hms12">2:30pm</say-as> </speak>O atributo
formaté uma sequência de códigos de caracteres do campo de hora. Os códigos de caracteres de campo aceitos emformatsão {h,m,s,Z,12,24} para "hora", "minuto" (da hora), "segundo" (do minuto), "fuso horário", "12 horas" e "24 horas", respectivamente. Se o código de campo aparecer uma vez por hora, minuto ou segundo, o número de dígitos esperados é 1, 2 e 2, respectivamente. Se o código de campo for repetido, o número de dígitos esperados será o número de vezes que o código for repetido. É possível separar os campos no texto da hora podem por pontuação e/ou espaços. Se "hora", "minuto" ou "segundo" não forem especificados no formato ou não houver dígitos correspondentes, o campo será tratado como um valor zero. Oformatpadrão é "hms12".O atributo
detailcontrola se a forma falada da hora é de 12 ou 24 horas. O formato falado será 24 horas sedetail='1'ou sedetailforem omitidos e o formato da hora for 24 horas. O formato falado será de 12 horas sedetail='2'ou sedetailforem omitidos e o formato da hora for 12 horas.
Para saber mais sobre o elemento say-as, consulte a especificação do W3.
<audio>
Aceita a inserção de arquivos de áudio gravados e de outros formatos de áudio em conjunto com a saída de fala sintetizada.
Atributos
| Atributo | Obrigatório | Padrão | Valores |
|---|---|---|---|
src |
sim | n/a | Um URI que se refere à fonte de mídia de áudio. O protocolo aceito é https. |
clipBegin |
não | 0 | Uma TimeDesignation que especifica o ponto em que o áudio começará a tocar a partir do momento que ele for iniciado. Se esse valor for maior ou igual à duração real da fonte de áudio, nenhum áudio será inserido. |
clipEnd |
não | infinito | Uma TimeDesignation que especifica o ponto em que o áudio parará de tocar a partir do momento que ele for iniciado. Se a duração real da fonte de áudio for menor que esse valor, a reprodução será finalizada nesse momento. Se clipBegin for maior ou igual a clipEnd, nenhum áudio será inserido. |
speed |
não | 100% | A proporção da taxa de reprodução de saída em relação à taxa de entrada normal expressa em porcentagem. O formato é um número real positivo seguido por %. O intervalo atualmente aceito é de [50% (lento - meia velocidade), 200% (rápido - velocidade dupla)]. Valores fora desse intervalo podem (ou não) ser ajustados para ficar dentro dele. |
repeatCount |
não | 1 ou 10, se repeatDur for definido |
Um número real especificando quantas vezes é preciso inserir o áudio (após o recorte, se houver, até clipBegin e/ou clipEnd). Não são aceitas repetições fracionárias. Portanto, o valor será arredondado para o número inteiro mais próximo. Zero não é um valor válido e, portanto, é tratado como não especificado e tem o valor padrão nesse caso. |
repeatDur |
não | infinito | Uma TimeDesignation que é um limite da duração do áudio inserido após o processamento da origem para os atributos clipBegin, clipEnd, repeatCount e speed (em vez da duração normal de reprodução). Se a duração do áudio processado for menor que esse valor, a reprodução será finalizada nesse momento. |
soundLevel |
não | +0 dB | Ajusta o nível de som do áudio em soundLevel decibéis. O intervalo máximo é de +/- 40 dB, mas o real talvez seja efetivamente menor, e a qualidade de saída pode não produzir bons resultados em todo o intervalo. |
Veja a seguir as configurações aceitas atualmente para áudio:
- Formato: MP3 (MPEG v2)
- 24.000 amostras por segundo
- 24K - 96K bits por segundo, taxa fixa
- Formato: Opus em Ogg
- 24.000 amostras por segundo (super banda larga)
- 24K - 96K bits por segundo, taxa fixa
- Formato (obsoleto): WAV (RIFF)
- PCM assinado de 16 bits, little endian
- 24.000 amostras por segundo
- Válido para todos os formatos:
- É preferível ter um canal único, mas estéreo é aceitável.
- Duração máxima de 240 segundos. Se você quiser tocar áudio com uma duração maior, implemente uma resposta de mídia.
- Limite de tamanho de arquivo de 5 megabytes.
- O URL de origem precisa usar o protocolo HTTPS.
- O UserAgent ao buscar o áudio é o "Google-Speech-Actions".
O conteúdo do elemento <audio> é opcional e será usado se não for possível reproduzir o arquivo de áudio ou se o dispositivo de saída não aceitar o áudio. O conteúdo inclui um elemento <desc>. Nesse caso, o conteúdo de texto desse elemento é usado para exibição. Para mais informações, consulte a seção "Áudio gravado" na Lista de verificação de respostas.
O URL src também precisa ser um URL HTTPS. O Google Cloud Storage hospeda seus arquivos de áudio em um URL HTTPS.
Para saber mais sobre respostas de mídia, consulte a seção de resposta de mídia no guia de respostas.
Para saber mais sobre o elemento audio, consulte a especificação do W3.
Exemplo
<speak> <audio src="cat_purr_close.ogg"> <desc>a cat purring</desc> PURR (sound didn't load) </audio> </speak>
<p>,<s>
Elementos de frase e parágrafo.
Para saber mais sobre os elementos p e s, consulte a especificação do W3.
Exemplo
<p><s>This is sentence one.</s><s>This is sentence two.</s></p>
Práticas recomendadas
- Use as tags <s>...</s> para agrupar frases completas, principalmente se elas contiverem elementos SSML que alterem a prosódia (ou seja, <audio>, <break>, <emphasis>, <par>, <prosody>, <say-as>, <seq> e <sub>).
- Se uma pausa na fala for longa o suficiente para ser audível, use as tags <s>...</s> e coloque essa quebra entre as sentenças.
<sub>
Indica que o texto no valor do atributo de alias substitui o texto contido para a pronúncia.
Também é possível usar o elemento sub para fornecer uma pronúncia simplificada de uma palavra de difícil leitura. O último exemplo abaixo demonstra este caso de uso em japonês.
Para saber mais sobre o elemento sub, consulte a especificação do W3.
Exemplos
<sub alias="World Wide Web Consortium">W3C</sub>
<sub alias="にっぽんばし">日本橋</sub>
<mark>
Um elemento vazio que coloca um marcador na sequência de texto ou de tags. É possível usá-lo para referir-se a um local específico na sequência ou para inserir um marcador em um fluxo de saída para notificação assíncrona.