Diese Anleitung führt Sie vom API-Schlüssel bis zur fertigen Audioausgabe mit den GLM-Audio-APIs – GLM TTS für Text-to-Speech, GLM ASR für Transkription und GLM Voice Clone für die Synthese von eigenen Stimmen. Alle drei sind synchrone REST-Endpunkte ohne Polling oder Webhook-Schritt. Wenn Sie Sprachfunktionen, Transkriptionspipelines oder chinesischsprachige Audioanwendungen entwickeln, ist dies der schnellste Weg zu einer funktionierenden Integration.
Wann dieser Schnellstart sinnvoll ist
Verwenden Sie diese Anleitung, wenn Sie Folgendes benötigen:
- Text mit chinesisch-optimierten Stimmen via
POST /v3/glm-ttsin Sprache umwandeln .wav- oder.mp3-Audiodateien viaPOST /v3/glm-asrtranskribieren- Eine Stimme aus einer kurzen Audioaufnahme klonen und neue Sprache via
POST /v3/glm-tts-voice-clonesynthetisieren
Alle Endpunkte sind über die Novita AI API unter https://api.novita.ai verfügbar.
Voraussetzungen
- Ein Novita AI-Konto. Holen Sie Ihren API-Schlüssel aus der Novita AI-Konsole.
curlfür die Shell-Beispiele.- Python 3.8+ mit installiertem
requestsfür die Python-Beispiele.
Setzen Sie Ihren Schlüssel als Umgebungsvariable:
export NOVITA_API_KEY="Ihr_API_Schluessel_hier"
GLM TTS Schnellstart
Endpunkt: POST https://api.novita.ai/v3/glm-tts
Wandelt Text mit bis zu 1024 Zeichen in Sprache um. Die Antwort ist binäres Audio – schreiben Sie es direkt in eine Datei.
Parameter
| Parameter | Typ | Standard | Hinweise |
|---|---|---|---|
input |
Zeichenkette | — | Erforderlich. Maximal 1024 Zeichen. |
voice |
Zeichenkette | tongtong |
System-Stimmen-ID oder Name der geklonten Stimme. |
speed |
Zahl | 1.0 | Bereich: 0.5–2.0 |
volume |
Zahl | 1.0 | Bereich: 0–10 |
response_format |
Zeichenkette | pcm |
wav oder pcm. WAV enthält einen standardmäßigen Audio-Header; PCM sind rohe Bytes bei 24000 Hz. |
watermark_enabled |
Boolesch | true | Setzen Sie false nur, wenn Ihr Konto die Entfernung von Wasserzeichen aktiviert hat. |
System-Stimmen
| Stimmen-ID | Anzeigename |
|---|---|
tongtong |
Tongtong (Standard) |
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)
Einschränkungen: 1024 Zeichen pro Anfrage. Bei längeren Texten teilen Sie ihn an Satzgrenzen und fügen Sie das Audio zusammen. Empfohlene Abtastrate für die Wiedergabe: 24000 Hz. Die Namen der Stimmen sind groß-/kleinschreibungsabhängig.
GLM ASR Schnellstart
Endpunkt: POST https://api.novita.ai/v3/glm-asr
Transkribiert .wav- oder .mp3-Audio mithilfe des GLM-ASR-2512-Modells. Audio kann als URL oder base64-Zeichenkette übergeben werden. Einschränkungen: Datei ≤ 25 MB, Dauer ≤ 30 Sekunden.
Parameter
| Parameter | Typ | Hinweise |
|---|---|---|
file |
Zeichenkette | Erforderlich. URL oder base64-kodiertes Audio. Nur .wav oder .mp3. |
prompt |
Zeichenkette | Optional. Vorheriger Transkriptionskontext, bis zu 8000 Zeichen. Für die Kontinuität bei chunkweiser Transkription verwenden. |
hotwords |
Array | Optional. Bis zu 100 domänenspezifische Begriffe zur Verbesserung der Erkennungsgenauigkeit. |
curl (URL-Eingabe)
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 (base64-Eingabe)
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"])
Antwort
{ "text": "你好,欢迎使用 Novita AI 语音合成接口。" }
Umgang mit Audio länger als 30 Sekunden: Teilen Sie es in ≤30-Sekunden-Chunks auf und verketten Sie Anfragen mithilfe des prompt-Felds, um den Transkriptionskontext zwischen den Chunks zu übertragen:
payload = {
"file": naechster_chunk_b64,
"prompt": vorheriges_transkript,
}
GLM Voice Clone Schnellstart
Endpunkt: POST https://api.novita.ai/v3/glm-tts-voice-clone
Nimmt eine Audiobeispiel-Clip auf und synthetisiert neue Sprache mit dieser Stimme. Weisen Sie der geklonten Stimme einen Namen zu; verwenden Sie ihn als voice-Parameter in GLM TTS, ohne das Beispiel erneut hochladen zu müssen.
Parameter
| Parameter | Typ | Hinweise |
|---|---|---|
audio_url |
Zeichenkette | Erforderlich. URL zum Beispiel-Audio. ≤ 10 MB, 3–30 s empfohlen. |
input |
Zeichenkette | Erforderlich. Text, der mit der geklonten Stimme synthetisiert werden soll. |
voice_name |
Zeichenkette | Erforderlich. Eindeutiger Name, den Sie dieser Stimme zuweisen. |
text |
Zeichenkette | Optional. Transkript des Beispiel-Audios – verbessert die Klonqualität. |
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"Stimmtimbre: {data['voice']}")
print(f"Audio-URL: {data['audio_url']}")
Antwort
{
"voice": "my-custom-voice-timbre-id",
"audio_url": "https://..."
}
Der hier zurückgegebene voice-Wert kann direkt als voice-Parameter in GLM TTS für zukünftige Syntheseaufrufe verwendet werden.
Tipps: Verwenden Sie ein sauberes 5–15 Sekunden langes Beispiel ohne Hintergrundgeräusche. Geben Sie das text-Transkript des Beispiels an, um die Phonemausrichtung zu verbessern.
Preisgestaltung und Nutzungshinweise
Preise Stand Juni 2026, von novita.ai/pricing:
| API | Preis |
|---|---|
| GLM TTS | 0,28 $ / 1 Mio. Zeichen |
| GLM ASR | 0,021 $ / 1 Mio. Zeichen |
| GLM Voice Clone | 0,83 $ / 1 Mio. Zeichen |
GLM TTS eignet sich gut für die chinesischsprachige Synthese in großem Volumen, bei der die Kosten eine Rolle spielen. Wenn Sie eine breitere mehrsprachige TTS für über 30 Sprachen oder asynchrone Verarbeitung von Langforminhalten benötigen, ist MiniMax Speech die Alternative, die Sie in Betracht ziehen sollten.
FAQ
Welche Sprachen werden von GLM TTS unterstützt? Optimiert für Chinesisch (Mandarin). Verarbeitet gemischte chinesisch-englische Eingaben. Verwenden Sie für eine breite mehrsprachige Abdeckung stattdessen MiniMax Speech.
Kann ich eine geklonte Stimme mit GLM TTS wiederverwenden?
Ja. Übergeben Sie den voice_name, den Sie im Voice-Clone-Aufruf vergeben haben, als voice-Parameter in GLM TTS. Sie müssen das Beispiel nicht erneut hochladen.
Warum gibt es eine 30-Sekunden-Grenze bei GLM ASR?
Das Modell verarbeitet Audio synchron. Teilen Sie längere Aufnahmen an Satzgrenzen und verketten Sie Anfragen mithilfe des prompt-Felds, um den Kontext zu übertragen.
Was ist der Unterschied zwischen pcm- und wav-Ausgabe?
PCM sind rohe Audio-Bytes bei 24000 Hz ohne Header. WAV verpackt dasselbe Audio in einem standardmäßigen Container, den die meisten Bibliotheken direkt lesen können. Verwenden Sie WAV, es sei denn, Ihre Pipeline erfordert rohes PCM.
Funktioniert das Setzen von watermark_enabled: false immer?
Nur, wenn Sie die Entfernung von Wasserzeichen in Ihren Kontoeinstellungen abgeschlossen haben. Andernfalls wird das Flag ignoriert.
