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.

elevenlabs.jpg

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