UNPKG

elevenlabs-node

Version:

This is an open source Eleven Labs NodeJS package for converting text to speech using the Eleven Labs API

357 lines (277 loc) 13.8 kB
<p align="center"> <img width="100px" src="https://i.imgur.com/w06EN2l.jpg" align="center" alt="Eleven Labs" /> <h2 align="center">Eleven Labs Node</h2> <p align="center">Eleven Labs NodeJS package for converting text to speech!</p> </p> <p align="center"> <a href="https://github.com/FelixWaweru/elevenlabs-node/graphs/contributors"> <img alt="GitHub Contributors" src="https://img.shields.io/github/contributors/FelixWaweru/elevenlabs-node" /> </a> <a href="https://github.com/FelixWaweru/elevenlabs-node/issues"> <img alt="Issues" src="https://img.shields.io/github/issues/FelixWaweru/elevenlabs-node?color=0088ff" /> </a> <a href="https://github.com/FelixWaweru/elevenlabs-node/pulls"> <img alt="GitHub pull requests" src="https://img.shields.io/github/issues-pr/FelixWaweru/elevenlabs-node?color=0088ff" /> </a> <br /> <br /> <a href="https://github.com/FelixWaweru/elevenlabs-node/actions/workflows/npm-publish.yml"> <img alt="NPM Package Build" src="https://github.com/FelixWaweru/elevenlabs-node/actions/workflows/npm-publish.yml/badge.svg" /> </a> <br /> <br /> <a> <img src="https://img.shields.io/badge/Node.js-43853D?style=for-the-badge&logo=node.js&logoColor=white"/> </a> <a> <img src="https://img.shields.io/badge/JavaScript-323330?style=for-the-badge&logo=javascript&logoColor=F7DF1E"/> </a> </p> <p align="center"> <a href="https://github.com/FelixWaweru/elevenlabs-node/issues/new/choose">Report Bug</a> · <a href="https://github.com/FelixWaweru/elevenlabs-node/issues/new/choose">Request Feature</a> </p> </p> <p align="center">Drop us a on GitHub to <a href="https://ko-fi.com/whyweru">help</a> the project improve!</p> <p align="center"> <a href="https://github.com/FelixWaweru/elevenlabs-node/stargazers"> <img alt="Stars" src="https://img.shields.io/github/stars/FelixWaweru/elevenlabs-node.svg" /> </a> </p> # About This is an open source Eleven Labs NodeJS package for converting text to speech using the [Eleven Labs API](https://api.elevenlabs.io/docs#/). ## Features | <div style="width:290px">Function</div> | Parameters | Endpoint | | --------------------------------------- | --------------------------------------------------------------------------- | -------------------------------------- | | `textToSpeech` | ({voiceId, fileName, textInput, stability, similarityBoost, modelId, style, speakerBoost}) | `/v1/text-to-speech/{voice_id}` | | `textToSpeechStream` | ({voiceId, textInput, stability, similarityBoost, modelId, responseType, style, speakerBoost}) | `/v1/text-to-speech/{voice_id}/stream` | | `editVoiceSettings` | ({voiceId, stability, similarityBoost}) | `/v1/voices/{voice_id}/settings/edit` | | `getVoiceSettings` | ({voiceId}) | `/v1/voices/{voice_id}/settings` | | `deleteVoice` | ({voiceId}) | `/v1/voices/{voice_id}` | | `getVoice` | ({voiceId}) | `/v1/voices/{voice_id}` | | `getVoices` | N/A | `/v1/voices` | | `getModels` | N/A | `/v1/models` | | `getUserInfo` | N/A | `/v1/user` | | `getUserSubscription` | N/A | `/v1/user/subscription` | | `getDefaultVoiceSettings` | N/A | `/v1/voices/settings/default` | ## Parameters | <div style="width:290px">Variable</div> | Description | Type | | --------------------------------------- | --------------------------------------------------------------------------- | -------------------------------------- | | `fileName` | Name and file path for your audio file e.g (`./gen/hello`) | `String` | | `textInput` | Text to be converted into audio e.g (`Hello`) | `String` | | `stability` | Stability for Text to Speech default (`0`) | `Float` | | `similarityBoost` | Similarity Boost for Text to Speech default (`0`) | `Float` | | `voiceId` | ElevenLabs Voice ID e.g (`pNInz6obpgDQGcFmaJgB`) | `String` | | `modelId` | ElevenLabs Model ID e.g (`elevenlabs_multilingual_v2`) | `String` | | `responseType` | Streaming response type e.g (`stream`) | `String` | | `speakerBoost` | Speaker Boost for Text to Speech e.g (`true`) | `Boolean` | | `style` | Style Exaggeration for Text to Speech (0-100) default (`0`) | `Integer` | ## Requirements - [NodeJS](https://nodejs.org/en/download/) ## Get Started To install the Elevenlabs package, run the following command: ```shell npm install elevenlabs-node ``` ## Setup Setup the ElevenLabs configurations for your project. | <div style="width:290px">Variable</div> | Description | Default | | --------------------------------------- | --------------------------------------------------------------------------- | -------------------------------------- | | `apiKey` | (`Required`) Your API key from Elevenlabs | N/A | | `voiceId` | (`Optional`) A Voice ID from Elevenlabs | Adam (`pNInz6obpgDQGcFmaJgB`) | ```javascript const ElevenLabs = require("elevenlabs-node"); const voice = new ElevenLabs( { apiKey: "0e2c037kl8561005671b1de345s8765c", // Your API key from Elevenlabs voiceId: "pNInz6obpgDQGcFmaJgB", // A Voice ID from Elevenlabs } ); ``` ## Usage ### Text To Speech Generating an audio file from text. ```javascript const ElevenLabs = require("elevenlabs-node"); const voice = new ElevenLabs( { apiKey: "0e2c037kl8561005671b1de345s8765c", // Your API key from Elevenlabs voiceId: "pNInz6obpgDQGcFmaJgB", // A Voice ID from Elevenlabs } ); voice.textToSpeech({ // Required Parameters fileName: "audio.mp3", // The name of your audio file textInput: "mozzy is cool", // The text you wish to convert to speech // Optional Parameters voiceId: "21m00Tcm4TlvDq8ikWAM", // A different Voice ID from the default stability: 0.5, // The stability for the converted speech similarityBoost: 0.5, // The similarity boost for the converted speech modelId: "elevenlabs_multilingual_v2", // The ElevenLabs Model ID style: 1, // The style exaggeration for the converted speech speakerBoost: true // The speaker boost for the converted speech }).then((res) => { console.log(res); }); ``` ### Text To Speech Stream Generating an audio stream from text. ```javascript const ElevenLabs = require("elevenlabs-node"); const fs = require("fs-extra"); const voice = new ElevenLabs( { apiKey: "0e2c037kl8561005671b1de345s8765c", // Your API key from Elevenlabs voiceId: "pNInz6obpgDQGcFmaJgB", // A Voice ID from Elevenlabs } ); const voiceResponse = voice.textToSpeechStream({ // Required Parameters textInput: "mozzy is cool", // The text you wish to convert to speech // Optional Parameters voiceId: "21m00Tcm4TlvDq8ikWAM", // A different Voice ID from the default stability: 0.5, // The stability for the converted speech similarityBoost: 0.5, // The similarity boost for the converted speech modelId: "elevenlabs_multilingual_v2", // The ElevenLabs Model ID style: 1, // The style exaggeration for the converted speech responseType: "stream", // The streaming type (arraybuffer, stream, json) speakerBoost: true // The speaker boost for the converted speech }).then((res) => { res.pipe(fs.createWriteStream(fileName)); }); ``` ### Edit Voice Settings Editing voice settings. ```javascript const ElevenLabs = require("elevenlabs-node"); const voice = new ElevenLabs( { apiKey: "0e2c037kl8561005671b1de345s8765c", // Your API key from Elevenlabs } ); const voiceResponse = voice.editVoiceSettings({ // Required Parameters voiceId: "pNInz6obpgDQGcFmaJgB", // The ID of the voice you want to edit stabilityBoost: 0.5, // The Stability Boost for the voice similarityBoost: 0.5, // The Similarity Boost for the voice }).then((res) => { console.log(res); }); ``` ### Get Voice Settings Getting voice settings. ```javascript const ElevenLabs = require("elevenlabs-node"); const voice = new ElevenLabs( { apiKey: "0e2c037kl8561005671b1de345s8765c", // Your API key from Elevenlabs } ); const voiceResponse = voice.getVoiceSettings({ // Required Parameters voiceId: "pNInz6obpgDQGcFmaJgB" // The ID of the voice you want to get }).then((res) => { console.log(res); }); ``` ### Delete Voice Delete voice. ```javascript const ElevenLabs = require("elevenlabs-node"); const voice = new ElevenLabs( { apiKey: "0e2c037kl8561005671b1de345s8765c", // Your API key from Elevenlabs } ); const voiceResponse = voice.deleteVoice({ // Required Parameters voiceId: "pNInz6obpgDQGcFmaJgB" // The ID of the voice you want to delete }).then((res) => { console.log(res); }); ``` ### Get Voice Getting voice details. ```javascript const ElevenLabs = require("elevenlabs-node"); const voice = new ElevenLabs( { apiKey: "0e2c037kl8561005671b1de345s8765c", // Your API key from Elevenlabs } ); const voiceResponse = voice.getVoice({ // Required Parameters voiceId: "pNInz6obpgDQGcFmaJgB" // The ID of the voice you want to get }).then((res) => { console.log(res); }); ``` ### Get Voices Getting all voice details. ```javascript const ElevenLabs = require("elevenlabs-node"); const voice = new ElevenLabs( { apiKey: "0e2c037kl8561005671b1de345s8765c", // Your API key from Elevenlabs } ); const voiceResponse = voice.getVoices().then((res) => { console.log(res); }); ``` ### Get Models Getting all model details. ```javascript const ElevenLabs = require("elevenlabs-node"); const voice = new ElevenLabs( { apiKey: "0e2c037kl8561005671b1de345s8765c", // Your API key from Elevenlabs } ); const voiceResponse = voice.getModels().then((res) => { console.log(res); }); ``` ### Get User Info Getting user info associated with the API Key. ```javascript const ElevenLabs = require("elevenlabs-node"); const voice = new ElevenLabs( { apiKey: "0e2c037kl8561005671b1de345s8765c", // Your API key from Elevenlabs } ); const voiceResponse = voice.getUserInfo().then((res) => { console.log(res); }); ``` ### Get User Subscription Getting user subscription info associated with the API Key. ```javascript const ElevenLabs = require("elevenlabs-node"); const voice = new ElevenLabs( { apiKey: "0e2c037kl8561005671b1de345s8765c", // Your API key from Elevenlabs } ); const voiceResponse = voice.getUserSubscription().then((res) => { console.log(res); }); ``` ### Get Default Voice Settings Getting default voice settings. ```javascript const ElevenLabs = require("elevenlabs-node"); const voice = new ElevenLabs( { apiKey: "0e2c037kl8561005671b1de345s8765c", // Your API key from Elevenlabs } ); const voiceResponse = voice.getDefaultVoiceSettings().then((res) => { console.log(res); }); ``` ## Contributing Contributions are welcome :) Read our [CONTRIBUTING.md](https://github.com/FelixWaweru/elevenlabs-node/blob/main/docs/CONTRIBUTING.md) to learn more.