Ce guide vous fait 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 polling ni de webhook. Si vous développez 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 devez :
- 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 une nouvelle parole 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 GLM TTS
Point de terminaison : POST https://api.novita.ai/v3/glm-tts
Convertit un texte de 1024 caractères maximum en parole. La réponse est un fichier audio binaire — écrivez-le directement dans un fichier.
Paramètres
| Paramètre | Type | Défaut | Remarques |
|---|---|---|---|
input |
string | — | Requis. 1024 caractères maximum. |
voice |
string | tongtong |
Identifiant de voix système ou nom de voix clonée. |
speed |
number | 1.0 | Plage : 0.5–2.0 |
volume |
number | 1.0 | Plage : 0–10 |
response_format |
string | pcm |
wav ou pcm. WAV inclut un en-tête audio standard ; PCM sont des octets bruts à 24000 Hz. |
watermark_enabled |
boolean | true | Définissez false uniquement si votre compte a activé la suppression du filigrane. |
Voix système
| Identifiant de voix | Nom affiché |
|---|---|
tongtong |
Tongtong (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 des phrases et concaténez l’audio. Taux d’échantillonnage de lecture recommandé : 24000 Hz. Les noms de voix sont sensibles à la casse.
Démarrage rapide GLM ASR
Point de terminaison : POST https://api.novita.ai/v3/glm-asr
Transcrit un fichier audio .wav ou .mp3 à l’aide du 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 |
string | Requis. URL ou audio encodé en base64. Uniquement .wav ou .mp3. |
prompt |
string | Optionnel. Contexte de transcription précédent, 8000 caractères maximum. Utilisé pour la continuité de la transcription par segments. |
hotwords |
array | 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 de l’audio de plus de 30 secondes : Divisez en segments de ≤30 secondes et chaînez les requêtes en utilisant le champ prompt pour transmettre le contexte de la transcription entre les segments :
payload = {
"file": next_chunk_b64,
"prompt": previous_transcript,
}
Démarrage rapide GLM Voice Clone
Point de terminaison : POST https://api.novita.ai/v3/glm-tts-voice-clone
Prend un échantillon audio et synthétise une nouvelle parole dans cette voix. Attribuez un nom à la voix clonée ; réutilisez-le comme paramètre voice dans GLM TTS sans retélécharger l’échantillon.
Paramètres
| Paramètre | Type | Remarques |
|---|---|---|
audio_url |
string | Requis. URL de l’échantillon audio. ≤ 10 Mo, 3–30 s recommandé. |
input |
string | Requis. Texte à synthétiser dans la voix clonée. |
voice_name |
string | Requis. Nom unique que vous attribuez à cette voix. |
text |
string | Optionnel. Transcription de l’échantillon audio — 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 retournée ici peut être passée directement au paramètre voice de GLM TTS pour de 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 notes d’utilisation
Tarifs en vigueur depuis juin 2026, issus de 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 en volume où le coût importe. Si vous avez besoin d’une TTS multilingue plus large couvrant 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 attribué dans 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 des phrases et chaînez les requêtes en utilisant le champ prompt pour transmettre le contexte.
Quelle est la différence entre les sorties pcm et wav ?
PCM est constitué d’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 ?
Uniquement si vous avez terminé la suppression du filigrane dans les paramètres de votre compte. Le drapeau est sinon ignoré.
