You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
RedditVideoMakerBot/TTS/elevenlabs.py

47 lines
1.3 KiB

2 years ago
import random
from elevenlabs import generate, save
from utils import settings
class elevenlabs:
def __init__(self):
self.max_chars = 5000
self.voices = ["Adam", "Antoni", "Arnold", "Bella", "Domi", "Elli", "Josh", "Rachel", "Sam"]
def run(
self,
text: str,
filepath: str,
random_voice=False,
):
voice_name = settings.config["settings"]["tts"]["elevenlabs_voice_name"]
if voice_name == "":
voice_name = "Bella"
raise ValueError(
"set elevenlabs name value to a valid value, switching to default voice (Bella)"
)
if random_voice:
voice_name = self.randomvoice()
if settings.config["settings"]["tts"]["elevenlabs_api_key"]:
api_key = settings.config["settings"]["tts"]["elevenlabs_api_key"]
else:
api_key = None
print("You didn't set an Elevenlabs API key! Trying without API key, but you'll probably hit an error.")
2 years ago
audio = generate(
api_key=api_key,
text=text,
voice=voice_name,
model="eleven_monolingual_v1"
)
save(
audio=audio,
filename=f"{filepath}"
)
def randomvoice(self):
return random.choice(self.voices)