Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
The official Python API for ElevenLabs text-to-speech software. Eleven brings the most compelling, rich and lifelike voices to creators and developers in just a few lines of code.
Check out the HTTP API documentation.
pip install elevenlabs
Eleven Multilingual v2 (eleven_multilingual_v2
)
Eleven Turbo v2.5 (eleven_turbo_v2_5
)
For more detailed information about these models and others, visit the ElevenLabs Models documentation.
from elevenlabs import play
from elevenlabs.client import ElevenLabs
client = ElevenLabs(
api_key="YOUR_API_KEY", # Defaults to ELEVEN_API_KEY
)
audio = client.generate(
text="Hello! 你好! Hola! नमस्ते! Bonjour! こんにちは! مرحبا! 안녕하세요! Ciao! Cześć! Привіт! வணக்கம்!",
voice="Brian",
model="eleven_multilingual_v2"
)
play(audio)
🎧 Try it out! Want to hear our voices in action? Visit the ElevenLabs Voice Lab to experiment with different voices, languages, and settings.
List all your available voices with voices()
.
from elevenlabs.client import ElevenLabs
client = ElevenLabs(
api_key="YOUR_API_KEY", # Defaults to ELEVEN_API_KEY
)
response = client.voices.get_all()
audio = client.generate(text="Hello there!", voice=response.voices[0])
print(response.voices)
For information about the structure of the voices output, please refer to the official ElevenLabs API documentation for Get Voices.
Build a voice object with custom settings to personalize the voice style, or call
client.voices.get_settings("your-voice-id")
to get the default settings for the voice.
from elevenlabs import Voice, VoiceSettings, play
from elevenlabs.client import ElevenLabs
client = ElevenLabs(
api_key="YOUR_API_KEY", # Defaults to ELEVEN_API_KEY
)
audio = client.generate(
text="Hello! My name is Brian.",
voice=Voice(
voice_id='nPczCjzI2devNBz1zQrb',
settings=VoiceSettings(stability=0.71, similarity_boost=0.5, style=0.0, use_speaker_boost=True)
)
)
play(audio)
Clone your voice in an instant. Note that voice cloning requires an API key, see below.
from elevenlabs.client import ElevenLabs
from elevenlabs import play
client = ElevenLabs(
api_key="YOUR_API_KEY", # Defaults to ELEVEN_API_KEY
)
voice = client.clone(
name="Alex",
description="An old American male voice with a slight hoarseness in his throat. Perfect for news", # Optional
files=["./sample_0.mp3", "./sample_1.mp3", "./sample_2.mp3"],
)
audio = client.generate(text="Hi! I'm a cloned voice!", voice=voice)
play(audio)
Stream audio in real-time, as it's being generated.
from elevenlabs.client import ElevenLabs
from elevenlabs import stream
client = ElevenLabs(
api_key="YOUR_API_KEY", # Defaults to ELEVEN_API_KEY
)
audio_stream = client.generate(
text="This is a... streaming voice!!",
stream=True
)
stream(audio_stream)
Note that generate
is a helper function. If you'd like to access
the raw method, simply use client.text_to_speech.convert_as_stream
.
Stream text chunks into audio as it's being generated, with <1s latency. Note: if chunks don't end with space or punctuation (" ", ".", "?", "!"), the stream will wait for more text.
from elevenlabs.client import ElevenLabs
from elevenlabs import stream
client = ElevenLabs(
api_key="YOUR_API_KEY", # Defaults to ELEVEN_API_KEY
)
def text_stream():
yield "Hi there, I'm Eleven "
yield "I'm a text to speech API "
audio_stream = client.generate(
text=text_stream(),
voice="Brian",
model="eleven_multilingual_v2",
stream=True
)
stream(audio_stream)
Note that generate
is a helper function. If you'd like to access
the raw method, simply use client.text_to_speech.convert_realtime
.
Use AsyncElevenLabs
if you want to make API calls asynchronously.
import asyncio
from elevenlabs.client import AsyncElevenLabs
eleven = AsyncElevenLabs(
api_key="MY_API_KEY" # Defaults to ELEVEN_API_KEY
)
async def print_models() -> None:
models = await eleven.models.get_all()
print(models)
asyncio.run(print_models())
We support 32 languages and 100+ accents. Explore all languages.
While we value open-source contributions to this SDK, this library is generated programmatically. Additions made directly to this library would have to be moved over to our generation code, otherwise they would be overwritten upon the next generated release. Feel free to open a PR as a proof of concept, but know that we will not be able to merge it as-is. We suggest opening an issue first to discuss with us!
On the other hand, contributions to the README are always very welcome!
FAQs
Unknown package
We found that elevenlabs demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.