Narração com SSML
Este endpoint de texto para voz aceita o texto com marcação SSML que seu pipeline já gera, e também texto simples.
Rode online
Rode nos nossos servidores com a sua conta. As ferramentas grátis rodam no seu navegador; esta aqui é descontada do seu saldo do KIT pelo preço acima.
Ele lê as palavras faladas de dentro da marcação e as sintetiza em áudio com voz natural, então um fluxo que já usa SSML pode apontar para cá sem antes remover as tags para deixar texto puro. Vale deixar o limite claro desde o começo: este motor pronuncia as palavras, não os controles acústicos finos que o SSML consegue descrever.
O que é SSML e por que ele existe
Speech Synthesis Markup Language é um padrão do W3C criado para que quem escreve descreva como o motor de voz deve dizer algo, não só o que dizer: onde pausar, qual sílaba acentuar, como pronunciar uma sigla, se uma sequência de dígitos é uma data, um telefone ou uma quantidade simples. Há anos é a convenção da indústria para controlar a fala sintetizada, justamente porque o texto puro é de fato ambíguo — “2/3” pode ser uma data, uma fração ou um placar, e só a marcação resolve isso no abstrato. É esse o formato que este endpoint aceita na entrada; o que ele faz com cada tag está descrito com clareza na seção seguinte.
Como funcionam a requisição e a resposta
Você envia o texto com marcação SSML (ou texto puro) no corpo da requisição. O serviço extrai as palavras faladas da marcação e as sintetiza; as próprias tags são reduzidas ao seu texto antes da síntese. A tarefa é enfileirada de forma assíncrona e devolve um task_id na hora; o áudio pronto é entregue depois por um webhook assinado ou por um link assinado válido por 24 horas. Como o que é sintetizado são as palavras, enviar SSML e enviar o texto puro equivalente produz a mesma narração natural — a marcação é aceita por compatibilidade, não porque cada tag mude o som.
O que este motor representa e o que não representa
Este é o limite honesto, dito para que nada nesta página prometa demais. O motor de voz atual lê o conteúdo de texto e produz uma fala natural e bem cadenciada. Ele não aplica de forma acústica os controles finos do SSML: ênfase, pronúncia fonética, prosódia e durações exatas de pausa são aceitas na entrada e depois removidas, não representadas. Assim, uma tag de pausa de dois segundos não segura a locução por dois segundos, e uma tag de ênfase não acentua aquela palavra mais do que o modelo já faria sozinho. Se o seu uso depende de esses controles serem representados com precisão, essa capacidade ainda não está disponível neste motor — este endpoint existe para que um pipeline com SSML gere áudio hoje sem um ramo separado de texto puro.
Como encaixar em conteúdo automatizado
SSML é apenas texto estruturado, então é fácil gerá-lo de forma programática — um pipeline de conteúdo pode envolver números em tags, inserir pausas entre seções ou marcar um nome com uma dica fonética, tudo sem intervenção humana. O valor deste endpoint para esse público é que ele aceita como está o SSML que eles já emitem: não precisam construir e manter um segundo caminho de código que reduza a marcação a texto puro antes de enviar. O preço reflete a natureza leve e específica da tarefa — uma pequena base por requisição mais uma tarifa por 1000 caracteres do texto enviado, e tarefas que falham nunca são cobradas depois das novas tentativas automáticas.
Acesso e como os resultados são tratados
Este endpoint exige saldo pré-pago, como todos os outros da API; uma requisição sem saldo devolve HTTP 402 em vez de um resultado parcial ou degradado. O texto enviado e o áudio gerado são removidos ao fim do período de retenção e nunca são usados para treinar modelos — a entrega é estritamente pelo seu webhook ou por um link assinado temporário, e nada é guardado além dessa janela.
Casos de uso
Substituição direta para um pipeline com SSML
Aponte para este endpoint um fluxo que já emite SSML e receba o áudio falado de volta sem escrever seu próprio passo para remover as tags e deixar texto puro antes.
Narração a partir de roteiros gerados
Transforme roteiros gerados por algoritmo em áudio falado com voz natural, como um passo automatizado a mais de um pipeline de conteúdo.
Texto longo para áudio
Converta artigos, notas ou documentação em áudio para quem prefere ouvir o conteúdo em vez de ler.
Saída de voz multilíngue
Gere áudio falado nos idiomas suportados a partir do mesmo formato de requisição, conforme o campo de idioma.
Perguntas frequentes
O que é SSML e como esta api de texto para voz o usa?
SSML é um padrão de marcação para descrever a síntese de fala. Este endpoint aceita texto com marcação SSML, lê dele as palavras faladas e as sintetiza em áudio natural. Ele aceita o formato por compatibilidade; veja a próxima resposta para saber quais controles de SSML são de fato representados.
Ele representa as tags de ênfase, fonema e prosódia?
Não, não no motor de voz atual. Essas tags, junto com as durações exatas de pausa, são aceitas na entrada e depois reduzidas ao seu texto; o áudio pronuncia as palavras com naturalidade em vez de aplicar a ênfase, a pronúncia ou as pausas marcadas. A representação acústica precisa desses controles ainda não está disponível.
Esta api de texto para voz é gratuita?
Não há camada gratuita — camadas grátis são abusadas e deixam tudo lento para todos. O acesso funciona com um saldo pré-pago do ForHosting KIT: recarregue a partir de US$ 10,00 (não expira) e cada requisição é cobrada pelo preço publicado, então uma chamada sem saldo devolve HTTP 402. Sem assinatura, sem tokens nem créditos inventados, e uma tarefa que falha não é cobrada.
Quanto custa?
Custa US$ 0,002 por requisição mais US$ 0,0025 por 1000 caracteres do texto enviado.
Preciso de SSML para um texto para voz básico?
Não. Se você só precisa de áudio com voz natural a partir de texto puro, o endpoint padrão de texto para voz é mais simples e produz o mesmo tipo de narração. Tanto texto puro quanto SSML saem aqui como fala natural.
Como recebo o áudio gerado?
A tarefa roda de forma assíncrona e devolve um task_id na hora; o áudio finalizado é entregue por um webhook assinado ou por um link assinado válido por 24 horas.
O que acontece se minha marcação SSML for inválida?
Como a marcação é reduzida ao seu texto falado antes da síntese, tags malformadas não fazem a requisição falhar — você ainda recebe o áudio das palavras legíveis. Nada é rejeitado por uma tag estar errada, então não conte com este endpoint para validar seu SSML.
Posso usá-lo para controlar a pronúncia de nomes ou siglas?
De forma acústica não — o controle por fonema não é representado neste motor, então uma tag de fonema não força uma pronúncia específica. Se um nome precisa ser dito de certa maneira, escreva-o foneticamente no próprio texto para que as palavras carreguem a pronúncia.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/voice/tts-ssml \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"ssml":"<speak>Hola <break time=\"500ms\"/> mundo.</speak>"}'const res = await fetch("https://api.kit.forhosting.com/voice/tts-ssml", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"ssml": "<speak>Hola <break time=\"500ms\"/> mundo.</speak>"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/voice/tts-ssml",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"ssml": "<speak>Hola <break time=\"500ms\"/> mundo.</speak>"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/voice/tts-ssml", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"ssml":"<speak>Hola <break time=\\"500ms\\"/> mundo.</speak>"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"ssml":"<speak>Hola <break time=\"500ms\"/> mundo.</speak>"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/voice/tts-ssml", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"ssml": "<speak>Hola <break time=\"500ms\"/> mundo.</speak>"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "voice.tts_ssml",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_mb | 200 |
max_minutes | 180 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |