Inicio rápido de las API GLM TTS y ASR

Inicio rápido de las API GLM TTS y ASR

Esta guía te lleva desde la clave API hasta obtener audio funcional con las API de audio GLM: GLM TTS para conversión de texto a voz, GLM ASR para transcripción y GLM Voice Clone para síntesis de voz personalizada. Las tres son endpoints REST síncronos sin necesidad de polling ni webhooks. Si construyes funciones de voz, pipelines de transcripción o aplicaciones de audio en chino, este es el camino más rápido hacia una integración funcional.

Cuándo usar este inicio rápido

Usa esta guía si necesitas:

  • Convertir texto a voz con voces optimizadas para chino mediante POST /v3/glm-tts
  • Transcribir archivos de audio .wav o .mp3 mediante POST /v3/glm-asr
  • Clonar una voz a partir de una muestra de audio corta y sintetizar nuevo habla mediante POST /v3/glm-tts-voice-clone

Todos los endpoints están disponibles a través de la API de Novita AI en https://api.novita.ai.

Prerrequisitos

  1. Una cuenta de Novita AI. Obtén tu clave API desde la consola de Novita AI.
  2. curl para los ejemplos en la terminal.
  3. Python 3.8+ con requests instalado para los ejemplos en Python.

Configura tu clave como variable de entorno:

export NOVITA_API_KEY="tu_clave_api_aqui"

Inicio rápido de GLM TTS

Endpoint: POST https://api.novita.ai/v3/glm-tts

Convierte texto de hasta 1024 caracteres en voz. La respuesta es audio binario — escríbelo directamente a un archivo.

Parámetros

Parámetro Tipo Valor por defecto Notas
input string Obligatorio. Hasta 1024 caracteres.
voice string tongtong ID de voz del sistema o nombre de voz clonada.
speed number 1.0 Rango: 0.5–2.0
volume number 1.0 Rango: 0–10
response_format string pcm wav o pcm. WAV incluye una cabecera de audio estándar; PCM son bytes sin procesar a 24000 Hz.
watermark_enabled boolean true Establece false solo si tu cuenta tiene la eliminación de marcas de agua habilitada.

Voces del sistema

ID de voz Nombre mostrado
tongtong Tongtong (por defecto)
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)

Límites: 1024 caracteres por solicitud. Para textos más largos, divide en los límites de las oraciones y concatena el audio. Frecuencia de muestreo de reproducción recomendada: 24000 Hz. Los nombres de las voces distinguen entre mayúsculas y minúsculas.

Inicio rápido de GLM ASR

Endpoint: POST https://api.novita.ai/v3/glm-asr

Transcribe audio .wav o .mp3 usando el modelo GLM-ASR-2512. El audio se puede pasar como URL o cadena base64. Restricciones: archivo ≤ 25 MB, duración ≤ 30 segundos.

Parámetros

Parámetro Tipo Notas
file string Obligatorio. URL o audio codificado en base64. Solo .wav o .mp3.
prompt string Opcional. Contexto de transcripción previa, hasta 8000 caracteres. Úsalo para la continuidad de la transcripción fragmentada.
hotwords array Opcional. Hasta 100 términos específicos del dominio para mejorar la precisión del reconocimiento.

curl (entrada 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"])

Respuesta

{ "text": "你好,欢迎使用 Novita AI 语音合成接口。" }

Manejo de audio de más de 30 segundos: Divide en fragmentos de ≤30 segundos y encadena las solicitudes usando el campo prompt para transportar el contexto de la transcripción entre fragmentos:

payload = {
    "file": siguiente_fragmento_b64,
    "prompt": transcripcion_anterior,
}

Inicio rápido de GLM Voice Clone

Endpoint: POST https://api.novita.ai/v3/glm-tts-voice-clone

Toma un clip de audio de muestra y sintetiza nuevo habla con esa voz. Asigna un nombre a la voz clonada; reutilízala como el parámetro voice en GLM TTS sin necesidad de volver a subir la muestra.

Parámetros

Parámetro Tipo Notas
audio_url string Obligatorio. URL del audio de muestra. ≤ 10 MB, se recomiendan 3–30 s.
input string Obligatorio. Texto a sintetizar con la voz clonada.
voice_name string Obligatorio. Nombre único que asignas a esta voz.
text string Opcional. Transcripción del audio de muestra — mejora la calidad de la clonación.

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 de voz: {data['voice']}")
print(f"URL de audio: {data['audio_url']}")

Respuesta

{
  "voice": "my-custom-voice-timbre-id",
  "audio_url": "https://..."
}

El valor voice devuelto aquí se puede pasar directamente al parámetro voice de GLM TTS para futuras llamadas de síntesis.

Consejos: Usa una muestra limpia de 5 a 15 segundos sin ruido de fondo. Proporciona la transcripción text de la muestra para mejorar la alineación de fonemas.

Precios y notas de uso

Precios a partir de junio de 2026, desde novita.ai/pricing:

API Precio
GLM TTS $0.28 / 1M de caracteres
GLM ASR $0.021 / 1M de caracteres
GLM Voice Clone $0.83 / 1M de caracteres

GLM TTS es muy adecuado para síntesis de alto volumen en chino donde el costo importa. Si necesitas una TTS multilingüe más amplia en más de 30 idiomas o procesamiento asíncrono de contenido de formato largo, MiniMax Speech es la alternativa a evaluar.

Preguntas frecuentes

¿Qué idiomas soporta GLM TTS? Optimizado para chino (mandarín). Maneja entrada mixta chino-inglés. Para una cobertura multilingüe amplia, usa MiniMax Speech.

¿Puedo reutilizar una voz clonada con GLM TTS? Sí. Pasa el voice_name que asignaste en la llamada de Voice Clone como el parámetro voice en GLM TTS. No es necesario volver a subir la muestra.

¿Por qué hay un límite de 30 segundos en GLM ASR? El modelo procesa el audio de forma síncrona. Divide las grabaciones más largas en los límites de las oraciones y encadena las solicitudes usando el campo prompt para transportar el contexto.

¿Cuál es la diferencia entre la salida pcm y wav? PCM son bytes de audio sin procesar a 24000 Hz sin cabecera. WAV envuelve el mismo audio en un contenedor estándar que la mayoría de las bibliotecas pueden leer directamente. Usa WAV a menos que tu pipeline requiera PCM sin procesar.

¿Establecer watermark_enabled: false siempre funciona? Solo si has completado la eliminación de marcas de agua en la configuración de tu cuenta. De lo contrario, la bandera se ignora.

Artículos recomendados