Ce guide vous permet de passer de la clé API à l’audio fonctionnel avec les API audio GLM — GLM TTS pour la synthèse vocale, GLM ASR pour la transcription et GLM Voice Clone pour la synthèse vocale personnalisée. Les trois sont des points de terminaison REST synchrones sans étape de sondage (polling) ni de webhook. Si vous créez des fonctionnalités vocales, des pipelines de transcription ou des applications audio en chinois, c’est le chemin le plus rapide vers une intégration fonctionnelle.
Quand utiliser ce guide de démarrage rapide
Utilisez ce guide si vous avez besoin de :
- Convertir du texte en parole avec des voix optimisées pour le chinois via
POST /v3/glm-tts - Transcrire des fichiers audio
.wavou.mp3viaPOST /v3/glm-asr - Cloner une voix à partir d’un court échantillon audio et synthétiser de nouvelles paroles via
POST /v3/glm-tts-voice-clone
Tous les points de terminaison sont disponibles via l’API Novita AI à l’adresse https://api.novita.ai.
Prérequis
- Un compte Novita AI. Obtenez votre clé API depuis la console Novita AI.
curlpour les exemples en ligne de commande.- Python 3.8+ avec
requestsinstallé pour les exemples Python.
Définissez votre clé comme variable d’environnement :
export NOVITA_API_KEY="votre_clé_api_ici"
Démarrage rapide avec GLM TTS
Point de terminaison : POST https://api.novita.ai/v3/glm-tts
Convertit du texte jusqu’à 1024 caractères en parole. La réponse est un audio binaire — écrivez-la directement dans un fichier.
Paramètres
| Paramètre | Type | Défaut | Remarques |
|---|---|---|---|
input |
chaîne | — | Requis. Jusqu’à 1024 caractères. |
voice |
chaîne | tongtong |
Identifiant de voix système ou nom de voix clonée. |
speed |
nombre | 1.0 | Plage : 0.5–2.0 |
volume |
nombre | 1.0 | Plage : 0–10 |
response_format |
chaîne | pcm |
wav ou pcm. WAV inclut un en-tête audio standard ; PCM est des octets bruts à 24000 Hz. |
watermark_enabled |
booléen | true | Mettez false uniquement si votre compte a activé la suppression du filigrane. |
Voix système
| Identifiant de voix | Nom d’affichage |
|---|---|
tongtong |
Tongtong (par défaut) |
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 caractères par requête. Pour les textes plus longs, divisez aux limites de phrases et concaténez l’audio. Fréquence d’échantillonnage recommandée : 24000 Hz. Les noms de voix sont sensibles à la casse.
Démarrage rapide avec GLM ASR
Point de terminaison : POST https://api.novita.ai/v3/glm-asr
Transcrit un audio .wav ou .mp3 en utilisant le modèle GLM-ASR-2512. L’audio peut être passé sous forme d’URL ou de chaîne base64. Contraintes : fichier ≤ 25 Mo, durée ≤ 30 secondes.
Paramètres
| Paramètre | Type | Remarques |
|---|---|---|
file |
chaîne | Requis. URL ou audio encodé en base64. Uniquement .wav ou .mp3. |
prompt |
chaîne | Optionnel. Contexte de transcription antérieur, jusqu’à 8000 caractères. Utilisez pour la continuité de transcription par segments. |
hotwords |
tableau | Optionnel. Jusqu’à 100 termes spécifiques au domaine pour améliorer la précision de la reconnaissance. |
curl (entrée 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 (entrée 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"])
Réponse
{ "text": "你好,欢迎使用 Novita AI 语音合成接口。" }
Gestion d’un audio de plus de 30 secondes : Divisez en segments de ≤30 secondes et enchaînez les requêtes en utilisant le champ prompt pour transporter le contexte de transcription entre les segments :
payload = {
"file": next_chunk_b64,
"prompt": previous_transcript,
}
Démarrage rapide avec GLM Voice Clone
Point de terminaison : POST https://api.novita.ai/v3/glm-tts-voice-clone
Prend un clip audio d’échantillon et synthétise de nouvelles paroles dans cette voix. Assignez un nom à la voix clonée ; réutilisez-la comme paramètre voice dans GLM TTS sans retélécharger l’échantillon.
Paramètres
| Paramètre | Type | Remarques |
|---|---|---|
audio_url |
chaîne | Requis. URL de l’audio d’échantillon. ≤ 10 Mo, 3–30 s recommandé. |
input |
chaîne | Requis. Texte à synthétiser dans la voix clonée. |
voice_name |
chaîne | Requis. Nom unique que vous assignez à cette voix. |
text |
chaîne | Optionnel. Transcription de l’audio d’échantillon — améliore la qualité du clonage. |
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 vocal : {data['voice']}")
print(f"URL audio : {data['audio_url']}")
Réponse
{
"voice": "my-custom-voice-timbre-id",
"audio_url": "https://..."
}
La valeur voice renvoyée ici peut être passée directement au paramètre voice de GLM TTS pour les futurs appels de synthèse.
Conseils : Utilisez un échantillon propre de 5 à 15 secondes sans bruit de fond. Fournissez la transcription text de l’échantillon pour améliorer l’alignement phonémique.
Tarifs et remarques d’utilisation
Tarifs en vigueur en juin 2026, depuis novita.ai/pricing :
| API | Prix |
|---|---|
| GLM TTS | 0,28 $ / 1 million de caractères |
| GLM ASR | 0,021 $ / 1 million de caractères |
| GLM Voice Clone | 0,83 $ / 1 million de caractères |
GLM TTS est bien adapté à la synthèse chinoise à volume élevé où le coût est important. Si vous avez besoin d’une synthèse vocale multilingue plus étendue dans plus de 30 langues ou d’un traitement asynchrone de contenu long, MiniMax Speech est l’alternative à évaluer.
FAQ
Quelles langues GLM TTS prend-il en charge ? Optimisé pour le chinois (mandarin). Gère les entrées mixtes chinois-anglais. Pour une couverture multilingue large, utilisez plutôt MiniMax Speech.
Puis-je réutiliser une voix clonée avec GLM TTS ?
Oui. Passez le voice_name que vous avez assigné lors de l’appel Voice Clone comme paramètre voice dans GLM TTS. Pas besoin de retélécharger l’échantillon.
Pourquoi y a-t-il une limite de 30 secondes sur GLM ASR ?
Le modèle traite l’audio de manière synchrone. Divisez les enregistrements plus longs aux limites de phrases et enchaînez les requêtes en utilisant le champ prompt pour transporter le contexte.
Quelle est la différence entre les sorties pcm et wav ?
PCM est des octets audio bruts à 24000 Hz sans en-tête. WAV encapsule le même audio dans un conteneur standard que la plupart des bibliothèques peuvent lire directement. Utilisez WAV sauf si votre pipeline nécessite du PCM brut.
Le fait de définir watermark_enabled: false fonctionne-t-il toujours ?
Seulement si vous avez complété la suppression du filigrane dans les paramètres de votre compte. Sinon, le drapeau est ignoré.
