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
.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.
Prerrequisitos
- Una cuenta de Novita AI. Obtén tu clave API desde la consola de Novita AI.
curlpara los ejemplos en la terminal.- Python 3.8+ con
requestsinstalado 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.
