Esta guía te lleva desde la clave de 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. Los tres son endpoints REST síncronos sin necesidad de sondeo ni webhook. Si creas 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 esta guía de 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
.wavo.mp3mediantePOST /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.
Requisitos previos
- Una cuenta de Novita AI. Obtén tu clave de API desde la consola de Novita AI.
curlpara los ejemplos de shell.- Python 3.8+ con
requestsinstalado para los ejemplos de Python.
Configura tu clave como variable de entorno:
export NOVITA_API_KEY="tu_clave_de_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 en 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 habilitada la eliminación de marcas de agua. |
Voces del sistema
| ID de voz | Nombre para mostrar |
|---|---|
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 límites de oraciones y concatena el audio. Frecuencia de muestreo recomendada para reproducción: 24000 Hz. Los nombres de las voces distinguen 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 en 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 continuidad en transcripciones fragmentadas. |
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 llevar el contexto de la transcripción entre fragmentos:
payload = {
"file": next_chunk_b64,
"prompt": previous_transcript,
}
Inicio rápido de GLM Voice Clone
Endpoint: POST https://api.novita.ai/v3/glm-tts-voice-clone
Toma una muestra de audio y sintetiza nuevo habla en 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 en 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 del clon. |
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 de 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 fonética.
Precios y notas de uso
Precios a junio de 2026, desde novita.ai/pricing:
| API | Precio |
|---|---|
| GLM TTS | $0.28 / 1M caracteres |
| GLM ASR | $0.021 / 1M caracteres |
| GLM Voice Clone | $0.83 / 1M caracteres |
GLM TTS es adecuado para síntesis de alto volumen en chino donde el costo importa. Si necesitas TTS multilingüe más amplio en más de 30 idiomas o procesamiento asíncrono de contenido extenso, MiniMax Speech es la alternativa a evaluar.
Preguntas frecuentes
¿Qué idiomas admite GLM TTS? Optimizado para chino (mandarín). Maneja entrada mixta chino-inglés. Para cobertura multilingüe amplia, usa MiniMax Speech en su lugar.
¿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 grabaciones más largas en límites de oraciones y encadena las solicitudes usando el campo prompt para llevar el contexto.
¿Cuál es la diferencia entre 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.
¿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.
