Développeurs
API, WebSocket TTS & scripts prêts à l'emploi
Clés API
Connectez-vous pour gérer vos clés API
Vos voix clonées
Connectez-vous pour voir vos voix et copier leurs IDs.
Voix communautaires
Recherchez parmi 100k+ voix pour copier leur ID
Infos rapides
- Auth: Header
X-API-Key - WebSocket: Temps réel, pas de queue
- Facturation: Débit auto du crédit
- Storage: URLs signées Supabase
Endpoints API
| Méthode | Endpoint | Description |
|---|---|---|
| POST | /api/v1/tts/ | TTS synchrone (texte court) |
| WS | /api/v1/tts/stream | TTS WebSocket temps réel |
| GET | /api/v1/voices/ | Liste vos voix privées |
| GET | /api/v1/tts/history | Historique TTS |
| GET | /api/v1/community/models | 100k+ voix communauté |
https://api.hadra-ai.com/api/v1Scripts prêts à l'emploi
"""
Client Python pour l'API HadraAI
Installez: pip install httpx
"""
import os
import httpx
API_KEY = os.getenv("HADRA_API_KEY", "VOTRE_CLE_API")
BASE_URL = "https://api.hadra-ai.com/api/v1"
def get_client():
return httpx.Client(base_url=BASE_URL, headers={"X-API-Key": API_KEY}, timeout=30.0)
# ═══════════════════════════════════════════════════════════════
# 1. LISTER VOS VOIX PRIVÉES
# ═══════════════════════════════════════════════════════════════
def list_my_voices():
"""Récupère vos voix clonées avec leurs IDs."""
with get_client() as client:
resp = client.get("/voices/")
resp.raise_for_status()
voices = resp.json()["voices"]
for v in voices:
print(f"ID: {v['voice_id']} | Titre: {v['title']}")
return voices
# ═══════════════════════════════════════════════════════════════
# 2. CHERCHER DANS LES VOIX COMMUNAUTAIRES
# ═══════════════════════════════════════════════════════════════
def search_community_voices(query: str = "", page: int = 1):
"""Recherche dans les 100k+ voix communautaires."""
with get_client() as client:
resp = client.get(f"/community/models?search={query}&page={page}&page_size=10")
resp.raise_for_status()
models = resp.json()["models"]
for m in models:
print(f"ID: {m['voice_id']} | {m['title']} by {m['author_nickname']}")
return models
# ═══════════════════════════════════════════════════════════════
# 3. GÉNÉRER DE L'AUDIO TTS
# ═══════════════════════════════════════════════════════════════
def generate_tts(text: str, voice_id: str = None, auto_emotions: bool = False):
"""Génère de l'audio TTS."""
with get_client() as client:
resp = client.post("/tts/", json={
"text": text,
"voice_id": voice_id,
"format": "mp3",
"auto_emotions": auto_emotions,
})
resp.raise_for_status()
return resp.json()
if __name__ == "__main__":
# Lister vos voix
print("=== Vos voix clonées ===")
voices = list_my_voices()
# Chercher une voix communautaire
print("\n=== Voix communautaires ===")
search_community_voices("french")
# Générer TTS avec votre première voix
if voices:
result = generate_tts("Bonjour!", voice_id=voices[0]["voice_id"], auto_emotions=True)
print(f"\nAudio URL: {result['audio_url']}")
Dépendances: pip install httpx httpx-ws
Paramètres TTS
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
| text * | string | — | Texte à synthétiser (requis) |
| voice_id | string | default | ID de la voix clonée (voir section "Vos voix") |
| format | string | mp3 | mp3, wav, pcm, opus |
| speed | float | 1.0 | Vitesse (0.5 – 2.0) |
| volume | float | 0.0 | Volume dB (-20 à +20) |
| temperature | float | 0.7 | Variabilité (0.1 – 1.5) |
| auto_emotions | boolean | false | Analyse IA + tags d'émotion FishAudio (mode expressif) |
| normalize | boolean | true | Normalisation audio. Quand auto_emotions=true, la normalisation est forcée à false côté backend. |
| latency | string | balanced | normal, balanced, low |