Tutoriel
Utiliser l’API d’ElevenLabs en NodeJS
Dans ce tutoriel, vous allez découvrir que générer des voix avec ElevenLabs directement depuis l‘API est super simple !
Commençons par la première étape la moins fun mais indispensable pour la suite du tutoriel, la configuration du projet.
Configurer le projet
Récupérer sa clé d’API
Avant toute chose, il faut savoir que chaque génération d’audio sur ElevenLabs utilise des crédits de la plateforme.
Mais bonne nouvelle, le plan gratuit fournis 10 000 crédits par mois (soit environs 10 minutes d’audio)
Et si besoin, vous pouvez prendre un abonnement avec quelques euros pour récupérer plus de crédits supplémentaires (30 000 crédits pour 5$) !
Pour commencer à utiliser vos tokens, il faut récupérer votre clé d’API. Pour se faire, rendez-vous sur : https://elevenlabs.io/app/settings/api-keys
Dans le menu de gauche, cliquez sur My Account, puis sur Api Keys
Vous pourrez alors cliquer sur le bouton “Create API Key”, choisir un nom et et copier la clé qui vous aura été générée.
Stocker sa clé
Pensez bien à stocker votre clé dans un fichier de configuration appelé .env
, à l’intérieur de votre dossier projet, comme ceci :
ELEVENLABS_API_KEY=sk_XXXXXXXXXXXX
Ne partagez jamais cette clé, et ne l’ajoutez jamais dans un dépôt Git (ajoutez .env à votre .gitignore)
Créer les bases du script
Maintenant que nous avons notre clé d’API dans le fichier .env
de notre projet, nous allons pouvoir installer les dépendances.
Exécutez la commande
npm install --save dotenv elevenlabs
dans votre terminal.
Ensuite, il faudra créer un fichier index.js
et y coller le code suivant :
const { ElevenLabsClient, play } = require("elevenlabs");
const fs = require("fs");
const dotenv = require("dotenv");
dotenv.config();
const client = new ElevenLabsClient({ apiKey: process.env.ELEVENLABS_API_KEY });
const voiceId = "a5n9pJUnAhX4fn7lx3uo";
Vous l’aurez compris, ce script permet simplement de récupérer la clé d’API d’ElevenLabs et d’initialiser le SDK avec cette dernière !
Tout le reste du tutoriel se passera dans ce fichier index.js
.
L’identifiant de la voix correspond à cette voix-là, mais vous pouvez choisir la votre directement sur : https://elevenlabs.io/app/voice-library
Utiliser le SDK
Pour notre tutoriel nous allons utiliser la méthode generate
du SDK :
// Fonction principale (pour utiliser async/await)
async function main() {
// On génère le flux audio
const audio = await client.generate({
voice: voiceId,
text: "Vous ne passerez pas !",
model_id: "eleven_multilingual_v2",
output_format: "mp3_44100_128"
});
// On créé un flux d'écriture vers un fichier
const writeStream = fs.createWriteStream("out.mp3", { flush: true });
// On redirige chaque paquet du flux audio, vers le flux d'écriture du fichier
audio.pipe(writeStream);
// Lorsque le flux d'audio se termine, le flux de fichier se ferme
writeStream.on('finish', () => {
console.log(`File written successfully`);
});
// En cas d'erreur
writeStream.on('error', (error) => {
console.error(`An error occurred while writing the file`);
});
}
// Appel de la fonction principale pour déclencher le script
main();
Résultat
Si tout s’est bien passé, devriez voir apparaitre un fichier out.mp3
dans le dossier de votre projet !
Essayez de le lancer pour vérifier qu’il contient bien l’audio de votre texte.
Attention : La génération peut parfois avoir quelques légers bugs en fonction de la phrase d’entrée (notamment en français), il faudra parfois relancer la génération plusieurs fois d’affilée pour avoir une version sans défaut !
À noter
Le SDK propose également une méthode play
, comme indiqué dans la documentation officielle.
Elle permet de jouer l’audio en temps-réel à partir du stream, sans avoir à sauvegarder de fichier, ce qui est très pratique pour beaucoup d’usage.
Néanmoins cette méthode nécessite d’avoir les paquets MPV et FFmpeg d’installés sur votre machine.
Code complet
Voici le code complet du fichier index.js utilisé lors de ce tutoriel :
const { ElevenLabsClient, play } = require("elevenlabs");
const fs = require("fs");
const dotenv = require("dotenv");
dotenv.config();
const client = new ElevenLabsClient({ apiKey: process.env.ELEVENLABS_API_KEY });
const voiceId = "a5n9pJUnAhX4fn7lx3uo";
// Fonction principale (pour utiliser async/await)
async function main() {
// On génère le flux audio
const audio = await client.generate({
voice: voiceId,
text: "Vous ne passerez pas !",
model_id: "eleven_multilingual_v2",
output_format: "mp3_44100_128"
});
// On créé un flux d'écriture vers un fichier
const writeStream = fs.createWriteStream("out.mp3", { flush: true });
// On redirige chaque paquet du flux audio, vers le flux d'écriture du fichier
audio.pipe(writeStream);
// Lorsque le flux d'audio se termine, le flux de fichier se ferme
writeStream.on('finish', () => {
console.log(`File written successfully`);
});
// En cas d'erreur
writeStream.on('error', (error) => {
console.error(`An error occurred while writing the file`);
});
}
// Appel de la fonction principale pour déclencher le script
main();
Et voilà, vous savez désormais utiliser l’API d’ElevenLabs en NodeJS !
Pour lire la suite de ce tutoriel, vous devez posséder un compte gratuit