A interface HTTP
Para sintetizar o texto para fala com a interface HTTP REST do serviço IBM Watson® Text to Speech, você chama o método GET ou POST /v1/synthesize. Você especifica o texto que deve ser sintetizado e a voz e o formato para
o áudio falado. Também é possível especificar um modelo customizado que deve ser usado com a solicitação.
Para obter mais informações sobre a interface HTTP, consulte a referência da API e do SDK.
Sintetizando o texto para áudio
Para sintetizar o texto para áudio, você chama uma das duas versões do método /v1/synthesize do serviço:
- O método
GET /v1/synthesizeaceita o texto que deve ser sintetizado como um parâmetro de consultatextnecessário. O tamanho máximo da solicitação é 8 KB, que inclui o texto de entrada, qualquer SSML que você especificar e a URL e os cabeçalhos. - O método
POST /v1/synthesizeaceita o texto que deve ser sintetizado como uma construção JSON no corpo necessário da solicitação. O tamanho máximo da solicitação é de 8 KB para a URL e os cabeçalhos e 5 KB para o texto de entrada enviado no corpo da solicitação. O limite de 5 KB inclui qualquer SSML especificado.
As duas versões do método /v1/synthesize têm os parâmetros a seguir em comum:
accept(parâmetro de consulta, sequência opcional )-
Especifica o formato de áudio ou o tipo MIME solicitado, no qual o serviço deve retornar o áudio. Também é possível especificar esse valor com o cabeçalho de solicitação HTTP
Accept. Codifique com URL o argumento para o parâmetro de consultaaccept. Por padrão, o serviço retorna o áudio no formatoaudio/ogg;codecs=opus. Para obter mais informações, consulte Usando formatos de áudio.O formato de áudio Ogg não é compatível com o navegador Safari. Se você estiver usando o serviço Text to Speech com o navegador Safari, deverá especificar um formato diferente no qual deseja que o serviço retorne o áudio.
voice(parâmetro de consulta, sequência opcional )-
Especifica a voz na qual o texto deve ser falado no áudio. Use o método
/v1/voicespara obter a lista atual de vozes suportadas. Omita o parâmetro para usar a voz padrão. Para obter mais informações, consulte Idiomas e vozes e Usar a voz padrão. customization_id(parâmetro de consulta, sequência opcional )-
Especifica um Identificador Exclusivo Global (GUID) para um modelo customizado que deve ser usado para a síntese. Um modelo customizado especificado deve corresponder à linguagem da voz que é usada para a síntese. Se você incluir um ID de customização, deverá fazer a solicitação com credenciais para a instância do serviço que tem o modelo customizado. Omita o parâmetro para usar a voz especificada sem a customização. Para obter mais informações, consulte Entendendo a customização.
rate_percentage(query parameter, opcional integer)-
Especifica a taxa de fala global para toda a solicitação de síntese. A taxa de fala é a velocidade na qual o serviço fala o texto que ele sintetiza em fala. Uma taxa mais alta faz com que o texto seja falado mais rapidamente; uma taxa mais baixa faz com que o texto seja falado mais lentamente. O parâmetro altera a taxa padrão por voz para uma solicitação inteira. Para obter mais informações, consulte Modificação da taxa de fala.
pitch_percentage(query parameter, opcional integer)-
Especifica o tom de voz global para toda a solicitação de síntese. O tom da fala representa o tom da fala que o serviço sintetiza. Representa o quão alto ou baixo o tom da voz é percebido pelo ouvinte. Um tom mais alto resulta em uma fala que é pronunciada em um tom mais alto; um tom mais baixo resulta em uma fala que é pronunciada em um tom mais baixo. O parâmetro altera o tom padrão por voz para uma solicitação inteira. Para obter mais informações, consulte Modificação do tom de voz.
spell_out_mode(parâmetro de consulta, sequência opcional )-
Para vozes alemãs, especifica como os caracteres individuais de uma string devem ser soletrados. Por padrão, o serviço soletra caracteres individuais na mesma velocidade em que sintetiza o texto para um idioma. Você pode usar o parâmetro para instruir o serviço a soletrar caracteres individuais mais lentamente, em grupos de um
singles), doispairs) ou trêstriples). Para obter mais informações, consulte Especificação de como as cadeias de caracteres são soletradas. X-Watson-Metadata(cabeçalho da solicitação, sequência opcional)-
Associa um ID do cliente a dados que são transmitidos com uma solicitação. Para obter mais informações, consulte Segurança de informações.
X-Watson-Learning-Opt-Out(cabeçalho da solicitação, booleano opcional)-
IBM Cloud Indica se o serviço registra dados de solicitação e resposta para melhorar o serviço para futuros usuários. Para evitar que a IBM acesse seus dados para melhorias gerais de serviço, especifique
truepara o parâmetro. A desativação faz com que a IBM não grave em disco dados do usuário (texto ou áudio) para sua solicitação. Você também pode optar por não participar no nível da conta. Para obter mais informações, consulte Criação de log de solicitação.
Se você especificar um parâmetro de consulta ou campo JSON inválido como parte da entrada para o método /v1/synthesize, o serviço retornará um cabeçalho de resposta Warnings que descreve e lista cada argumento inválido.
A solicitação é bem-sucedida, apesar dos avisos.
Especificando o texto de entrada
Ambos os métodos, POST e GET /v1/synthesize, aceitam texto de entrada simples ou texto que é anotado com SSML. As duas versões diferem principalmente em como você especifica o texto que deve ser sintetizado. Os exemplos
a seguir passam o texto simples Hello world.
-
O método
POST /v1/synthesizeaceita o texto de entrada no corpo da solicitação. Você especifica a entrada com uma construção JSON simples que inclui texto simples ou SSML. Também deve-se especificar um valor deapplication/jsonpara o cabeçalhoContent-Type.IBM Cloud
curl -X POST -u "apikey:{apikey}" \ --header "Content-Type: application/json" \ --header "Accept: audio/wav" \ --output hello_world.wav \ --data "{\"text\":\"Hello world\"}" \ "{url}/v1/synthesize?voice=en-US_MichaelV3Voice"IBM Cloud Pak for Data IBM Software Hub
curl -X POST \ --header "Authorization: Bearer {token}" \ --header "Content-Type: application/json" \ --header "Accept: audio/wav" \ --output hello_world.wav \ --data "{\"text\":\"Hello world\"}" \ "{url}/v1/synthesize?voice=en-US_MichaelV3Voice" -
O método
GET /v1/synthesizeaceita o texto de entrada especificado pelo parâmetro de consultatext. Você especifica a entrada como texto simples ou SSML; ambos devem ser codificados por URL.IBM Cloud
curl -X GET -u "apikey:{apikey}" \ --header "Accept: audio/wav" \ --output hello_world.wav \ "{url}/v1/synthesize?text=Hello%20world&voice=en-US_MichaelV3Voice"IBM Cloud Pak for Data IBM Software Hub
curl -X GET \ --header "Authorization: Bearer {token}" \ --header "Accept: audio/wav" \ --output hello_world.wav \ "{url}/v1/synthesize?text=Hello%20world&voice=en-US_MichaelV3Voice"""
Embora os métodos POST e GET ofertem funcionalidades equivalentes, é sempre mais seguro passar texto de entrada para o serviço com o método POST. Uma solicitação POST passa a entrada no corpo
da solicitação. Uma solicitação GET expõe os dados na URL.
Pontuando texto de entrada
Escreva o texto para síntese com a pontuação que você usaria normalmente. Por exemplo, inclua vírgulas, pontos, pontos de exclamação e pontos de interrogação como você faria na escrita normal.
O serviço considera a pontuação ao sintetizar o texto. Por exemplo, vírgulas e pontuação de fim de sentença afetam o áudio inserindo pausas em locais apropriados no discurso sintetizado resultante. Pontuação de fim de sentença como pontos, pontos de exclamação e pontos de interrogação também mudam a entonação e a inflexão do discurso. Também é possível usar elementos SSML para afetar esses aspectos do discurso.
Especificando a entrada do SSML
O Speech Synthesis Markup Language (SSML) é uma linguagem de marcações baseada em XML que foi projetada para fornecer anotações de texto para aplicativos de síntese de discurso, como o serviço Text to Speech. É possível usar os elementos do SSML e seus atributos para obter maior controle sobre a síntese e a saída de áudio resultante.
Para obter mais informações sobre o uso do SSML para anotar texto de entrada, consulte Entendendo SSML. Para um inventário de todos os elementos e atributos suportados, consulte Elementos SSML.
Escapando Caracteres de Controle XML
Como é possível enviar um texto de entrada que inclua as anotações do SSML baseadas em XML, o serviço valida todas as entradas para garantir que qualquer SSML esteja correto e bem formado. Portanto, deve-se escapar quaisquer caracteres de controle XML presentes no texto de entrada, independentemente de a entrada incluir o SSML. Use as sequências de escape equivalentes ou as codificações de caractere da Tabela 1, em vez dos caracteres indicados.
| Caractere | Sequências de escape | Codificação de Caracteres |
|---|---|---|
"(aspas duplas) |
" |
" |
'(apóstrofo ou aspas simples) |
' |
' |
&(e comercial) |
& |
& |
<(sinal de menor) |
< |
< |
>(sinal de maior) |
> |
> |
/(barra) |
Nenhum | / |
Para obter mais informações sobre como o serviço valida o texto de entrada, consulte Validação de SSML.
Exemplos de texto de entrada
Os exemplos a seguir mostram como especificar texto de entrada com qualquer um dos métodos da interface HTTP. Eles também mostram como escapar caracteres de controle XML. Os exemplos incluem quebras de linha para a capacidade de leitura. Não inclua quebras de linha na entrada real.
Exemplo de entrada com uma solicitação GET
Os exemplos a seguir transmitem a entrada codificada com URL com o parâmetro de consulta text do método GET /v1/synthesize:
-
Entrada de texto sem formatação:
text=This&20is&20the&20first&20sentence&20of&20the&20paragraph.&20Here &20is&20another&20sentence.&20Finally,&20this&20is&20the&20last&20sentence. -
Entrada SSML:
text=%22%3Cp%3E%3Cs%3EThis%20is%20the%20first%20sentence%20of%20the%20%3C break%20time=%225s%22/%3E%20paragraph.%3C/s%3E%3Cs%3EHere%20is%20another %20sentence.%3C/s%3E%3Cs%3EFinally,%20this%20is%20the%20last%20sentence. %3C/s%3E%3C/p%3E%22
Exemplo de entrada com uma solicitação de POST
Os exemplos a seguir transmitem a entrada no corpo do método POST /v1/synthesize:
-
Entrada de texto sem formatação:
{ "text": "This is the first sentence of the paragraph. Here is another sentence. Finally, this is the last sentence." } -
Entrada SSML:
{ "text": "<p><s>This is the first sentence of the <break time=\"5s\"/> paragraph.</s><s>Here is another sentence.</s><s>Finally, this is the last sentence.</s></p>" }
Exemplo de entrada com caracteres de controle XML
Os exemplos a seguir enviam duas sentenças para o método POST /v1/synthesize. Os exemplos escapam corretamente os caracteres XML integrados.
"What have I learned?" he asked. "Everything!"
-
Entrada de texto sem formatação:
{ "text": ""What have I learned?" he asked. "Everything!"" } -
Entrada SSML:
{ "text": "<s>"What have I learned?" he asked. "<prodody rate=\"50\">Everything!</prosody>"</s>" }