GLM TTS e ASR: Início Rápido da API

GLM TTS e ASR: Início Rápido da API

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 .wav ou .mp3 via POST /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

  1. Uma conta Novita AI. Obtenha sua chave de API no console Novita AI.
  2. curl para os exemplos em shell.
  3. Python 3.8+ com requests instalado 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.

Artigos Recomendados