Introduction
ElevenLabs propose une API de synthèse vocale parmi les plus performantes du marché. En 2026, les intégrations expertes nécessitent une gestion fine des flux audio, des limites de taux et du clonage instantané. Ce tutoriel vous guide pas à pas pour construire une couche TypeScript robuste, prête pour la production.
Prérequis
- Node.js 20+
- Compte ElevenLabs avec clé API Pro
- Connaissances avancées TypeScript et gestion des flux
- Axios ou fetch natif
Initialisation du projet
npm init -y
npm install axios dotenv
npm install --save-dev @types/node typescript
npx tsc --initInitialise un projet TypeScript et installe les dépendances nécessaires pour consommer l'API ElevenLabs de façon typée.
Configuration de la clé API
import dotenv from 'dotenv';
dotenv.config();
export const ELEVENLABS_API_KEY = process.env.ELEVENLABS_API_KEY!;
export const BASE_URL = 'https://api.elevenlabs.io/v1';Charge la clé API depuis les variables d'environnement. Toujours stocker les secrets hors du code source.
Client API typé
import axios from 'axios';
import { ELEVENLABS_API_KEY, BASE_URL } from '../config/elevenlabs';
const client = axios.create({
baseURL: BASE_URL,
headers: {
'xi-api-key': ELEVENLABS_API_KEY,
'Content-Type': 'application/json',
},
});
export default client;Crée un client Axios réutilisable et typé pour toutes les requêtes vers ElevenLabs.
Génération TTS basique
import client from '../lib/elevenlabsClient';
export async function generateSpeech(text: string, voiceId: string): Promise<Buffer> {
const response = await client.post(
`/text-to-speech/${voiceId}`,
{ text, model_id: 'eleven_multilingual_v2' },
{ responseType: 'arraybuffer' }
);
return Buffer.from(response.data);
}Fonction complète qui retourne un Buffer audio MP3. Utilise le modèle multilingue v2 pour une qualité optimale.
Streaming audio en temps réel
import client from '../lib/elevenlabsClient';
export async function* streamSpeech(text: string, voiceId: string) {
const response = await client.post(
`/text-to-speech/${voiceId}/stream`,
{ text, model_id: 'eleven_multilingual_v2' },
{ responseType: 'stream' }
);
for await (const chunk of response.data) {
yield chunk;
}
}Implémente le streaming chunk par chunk pour réduire la latence perçue dans les applications temps réel.
Bonnes pratiques
- Toujours valider les limites de caractères avant appel
- Implémenter un système de retry avec backoff exponentiel
- Stocker les voice_id en base de données plutôt que dans le code
- Utiliser des webhooks pour les tâches longues
- Monitorer la consommation de crédits via l'endpoint /user
Erreurs courantes à éviter
- Oublier de gérer le code 429 (rate limit) ElevenLabs
- Ne pas fermer les flux audio correctement en streaming
- Utiliser des voix clonées sans consentement explicite
- Ignorer les différences de latence entre les régions
Pour aller plus loin
Découvrez nos formations avancées sur l'intégration d'IA vocale : https://learni-group.com/formations