Este guia leva você da chave de API ao áudio funcional com as APIs de áudio GLM — GLM TTS para conversão de texto em fala, GLM ASR para transcrição e GLM Voice Clone para síntese de voz personalizada. Os três são endpoints REST síncronos, sem necessidade de polling ou webhook. Se você cria recursos de voz, pipelines de transcrição ou aplicações de áudio em chinês, este é o caminho mais rápido para uma integração funcional.
Quando Usar Este Guia de Início Rápido
Use este guia se precisar de:
- Converter texto em fala com vozes otimizadas para chinês via
POST /v3/glm-tts - Transcrever arquivos de áudio
.wavou.mp3viaPOST /v3/glm-asr - Clonar uma voz a partir de uma pequena amostra de áudio e sintetizar nova fala via
POST /v3/glm-tts-voice-clone
Todos os endpoints estão disponíveis através da API Novita AI em https://api.novita.ai.
Pré-requisitos
- Uma conta Novita AI. Obtenha sua chave de API no console Novita AI.
curlpara os exemplos em shell.- Python 3.8+ com
requestsinstalado para os exemplos em Python.
Defina sua chave como variável de ambiente:
export NOVITA_API_KEY="sua_chave_api_aqui"
GLM TTS: Início Rápido
Endpoint: POST https://api.novita.ai/v3/glm-tts
Converte texto de até 1024 caracteres em fala. A resposta é áudio binário — grave diretamente em um arquivo.
Parâmetros
| Parâmetro | Tipo | Padrão | Observações |
|---|---|---|---|
input |
string | — | Obrigatório. Até 1024 caracteres. |
voice |
string | tongtong |
ID de voz do sistema ou nome de voz clonada. |
speed |
number | 1.0 | Intervalo: 0.5–2.0 |
volume |
number | 1.0 | Intervalo: 0–10 |
response_format |
string | pcm |
wav ou pcm. WAV inclui cabeçalho de áudio padrão; PCM são bytes brutos a 24000 Hz. |
watermark_enabled |
boolean | true | Defina como false apenas se sua conta tiver a remoção de marca d’água ativada. |
Vozes do sistema
| ID da voz | Nome de exibição |
|---|---|
tongtong |
Tongtong (padrão) |
chuichui |
Chuichui |
xiaochen |
Xiaochen |
jam |
Dongdong Zoo – Jam |
kazi |
Dongdong Zoo – Kazi |
douji |
Dongdong Zoo – Douji |
luodo |
Dongdong Zoo – Luodo |
curl
curl -s -X POST https://api.novita.ai/v3/glm-tts \
-H "Authorization: Bearer $NOVITA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input": "你好,欢迎使用 Novita AI 语音合成接口。",
"voice": "tongtong",
"speed": 1.0,
"volume": 5,
"response_format": "wav"
}' \
--output output.wav
Python
import requests, os
response = requests.post(
"https://api.novita.ai/v3/glm-tts",
headers={
"Authorization": f"Bearer {os.environ['NOVITA_API_KEY']}",
"Content-Type": "application/json",
},
json={
"input": "你好,欢迎使用 Novita AI 语音合成接口。",
"voice": "tongtong",
"speed": 1.0,
"volume": 5,
"response_format": "wav",
},
)
response.raise_for_status()
with open("output.wav", "wb") as f:
f.write(response.content)
Limites: 1024 caracteres por requisição. Para textos mais longos, divida nos limites das frases e concatene o áudio. Taxa de amostragem recomendada para reprodução: 24000 Hz. Os nomes das vozes diferenciam maiúsculas de minúsculas.
GLM ASR: Início Rápido
Endpoint: POST https://api.novita.ai/v3/glm-asr
Transcreve áudio .wav ou .mp3 usando o modelo GLM-ASR-2512. O áudio pode ser enviado como URL ou string base64. Restrições: arquivo ≤ 25 MB, duração ≤ 30 segundos.
Parâmetros
| Parâmetro | Tipo | Observações |
|---|---|---|
file |
string | Obrigatório. URL ou áudio codificado em base64. Apenas .wav ou .mp3. |
prompt |
string | Opcional. Contexto de transcrição anterior, até 8000 caracteres. Use para continuidade em transcrições fragmentadas. |
hotwords |
array | Opcional. Até 100 termos específicos do domínio para melhorar a precisão do reconhecimento. |
curl (entrada por URL)
curl -s -X POST https://api.novita.ai/v3/glm-asr \
-H "Authorization: Bearer $NOVITA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"file": "https://example.com/sample.wav",
"hotwords": ["Novita", "GLM"]
}'
Python (entrada base64)
import requests, base64, os
with open("sample.wav", "rb") as f:
audio_b64 = base64.b64encode(f.read()).decode()
response = requests.post(
"https://api.novita.ai/v3/glm-asr",
headers={
"Authorization": f"Bearer {os.environ['NOVITA_API_KEY']}",
"Content-Type": "application/json",
},
json={"file": audio_b64, "hotwords": ["Novita", "GLM"]},
)
response.raise_for_status()
print(response.json()["text"])
Resposta
{ "text": "你好,欢迎使用 Novita AI 语音合成接口。" }
Como lidar com áudio de mais de 30 segundos: Divida em partes de ≤30 segundos e encadeie as requisições usando o campo prompt para transportar o contexto da transcrição entre as partes:
payload = {
"file": proxima_parte_b64,
"prompt": transcricao_anterior,
}
GLM Voice Clone: Início Rápido
Endpoint: POST https://api.novita.ai/v3/glm-tts-voice-clone
Recebe um clipe de áudio de amostra e sintetiza nova fala com essa voz. Atribua um nome à voz clonada; reutilize-o como parâmetro voice no GLM TTS sem precisar reenviar a amostra.
Parâmetros
| Parâmetro | Tipo | Observações |
|---|---|---|
audio_url |
string | Obrigatório. URL do áudio de amostra. ≤ 10 MB, recomenda-se 3–30 s. |
input |
string | Obrigatório. Texto a ser sintetizado na voz clonada. |
voice_name |
string | Obrigatório. Nome único que você atribui a esta voz. |
text |
string | Opcional. Transcrição do áudio de amostra — melhora a qualidade da clonagem. |
curl
curl -s -X POST https://api.novita.ai/v3/glm-tts-voice-clone \
-H "Authorization: Bearer $NOVITA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"audio_url": "https://example.com/voice-sample.wav",
"input": "这是用克隆声音合成的语音示例。",
"voice_name": "my-custom-voice",
"text": "示例音频的文字内容"
}'
Python
import requests, os
response = requests.post(
"https://api.novita.ai/v3/glm-tts-voice-clone",
headers={
"Authorization": f"Bearer {os.environ['NOVITA_API_KEY']}",
"Content-Type": "application/json",
},
json={
"audio_url": "https://example.com/voice-sample.wav",
"input": "这是用克隆声音合成的语音示例。",
"voice_name": "my-custom-voice",
"text": "示例音频的文字内容",
},
)
response.raise_for_status()
data = response.json()
print(f"Timbre da voz: {data['voice']}")
print(f"URL do áudio: {data['audio_url']}")
Resposta
{
"voice": "my-custom-voice-timbre-id",
"audio_url": "https://..."
}
O valor voice retornado pode ser passado diretamente para o parâmetro voice do GLM TTS em chamadas futuras.
Dicas: Use uma amostra limpa de 5–15 segundos, sem ruído de fundo. Forneça a transcrição text da amostra para melhorar o alinhamento de fonemas.
Preços e Notas de Uso
Preços vigentes em junho de 2026, de novita.ai/pricing:
| API | Preço |
|---|---|
| GLM TTS | $0,28 / 1M caracteres |
| GLM ASR | $0,021 / 1M caracteres |
| GLM Voice Clone | $0,83 / 1M caracteres |
O GLM TTS é adequado para síntese em chinês de alto volume onde o custo é importante. Se você precisar de TTS multilíngue mais amplo com mais de 30 idiomas ou processamento assíncrono de conteúdo longo, o MiniMax Speech é a alternativa a ser avaliada.
FAQ
Quais idiomas o GLM TTS suporta? Otimizado para chinês (mandarim). Lida com entradas mistas chinês-inglês. Para cobertura multilíngue ampla, use o MiniMax Speech.
Posso reutilizar uma voz clonada com o GLM TTS?
Sim. Passe o voice_name que você atribuiu na chamada de Voice Clone como parâmetro voice no GLM TTS. Não é necessário reenviar a amostra.
Por que há um limite de 30 segundos no GLM ASR?
O modelo processa áudio de forma síncrona. Divida gravações mais longas nos limites das frases e encadeie as requisições usando o campo prompt para transportar o contexto.
Qual é a diferença entre a saída pcm e wav?
PCM são bytes de áudio brutos a 24000 Hz, sem cabeçalho. WAV envolve o mesmo áudio em um contêiner padrão que a maioria das bibliotecas lê diretamente. Use WAV, a menos que seu pipeline exija PCM bruto.
Definir watermark_enabled: false sempre funciona?
Apenas se você tiver concluído a remoção da marca d’água nas configurações da sua conta. Caso contrário, o sinalizador é ignorado.
