aboutsummaryrefslogtreecommitdiff
path: root/autogpt/speech/eleven_labs.py
diff options
context:
space:
mode:
Diffstat (limited to 'autogpt/speech/eleven_labs.py')
-rw-r--r--autogpt/speech/eleven_labs.py91
1 files changed, 0 insertions, 91 deletions
diff --git a/autogpt/speech/eleven_labs.py b/autogpt/speech/eleven_labs.py
deleted file mode 100644
index 815f698c6..000000000
--- a/autogpt/speech/eleven_labs.py
+++ /dev/null
@@ -1,91 +0,0 @@
-"""ElevenLabs speech module"""
-from __future__ import annotations
-
-import os
-from typing import TYPE_CHECKING
-
-import requests
-from playsound import playsound
-
-if TYPE_CHECKING:
- from autogpt.config import Config
-from .base import VoiceBase
-
-PLACEHOLDERS = {"your-voice-id"}
-
-
-class ElevenLabsSpeech(VoiceBase):
- """ElevenLabs speech class"""
-
- def _setup(self, config: Config) -> None:
- """Set up the voices, API key, etc.
-
- Returns:
- None: None
- """
-
- default_voices = ["ErXwobaYiN019PkySvjV", "EXAVITQu4vr4xnSDxMaL"]
- voice_options = {
- "Rachel": "21m00Tcm4TlvDq8ikWAM",
- "Domi": "AZnzlk1XvdvUeBnXmlld",
- "Bella": "EXAVITQu4vr4xnSDxMaL",
- "Antoni": "ErXwobaYiN019PkySvjV",
- "Elli": "MF3mGyEYCl7XYWbV9V6O",
- "Josh": "TxGEqnHWrfWFTfGW9XjX",
- "Arnold": "VR6AewLTigWG4xSOukaG",
- "Adam": "pNInz6obpgDQGcFmaJgB",
- "Sam": "yoZ06aMxZJJ28mfd3POQ",
- }
- self._headers = {
- "Content-Type": "application/json",
- "xi-api-key": config.elevenlabs_api_key,
- }
- self._voices = default_voices.copy()
- if config.elevenlabs_voice_id in voice_options:
- config.elevenlabs_voice_id = voice_options[config.elevenlabs_voice_id]
- if config.elevenlabs_voice_2_id in voice_options:
- config.elevenlabs_voice_2_id = voice_options[config.elevenlabs_voice_2_id]
- self._use_custom_voice(config.elevenlabs_voice_id, 0)
- self._use_custom_voice(config.elevenlabs_voice_2_id, 1)
-
- def _use_custom_voice(self, voice, voice_index) -> None:
- """Use a custom voice if provided and not a placeholder
-
- Args:
- voice (str): The voice ID
- voice_index (int): The voice index
-
- Returns:
- None: None
- """
- # Placeholder values that should be treated as empty
- if voice and voice not in PLACEHOLDERS:
- self._voices[voice_index] = voice
-
- def _speech(self, text: str, voice_index: int = 0) -> bool:
- """Speak text using elevenlabs.io's API
-
- Args:
- text (str): The text to speak
- voice_index (int, optional): The voice to use. Defaults to 0.
-
- Returns:
- bool: True if the request was successful, False otherwise
- """
- from autogpt.logs import logger
-
- tts_url = (
- f"https://api.elevenlabs.io/v1/text-to-speech/{self._voices[voice_index]}"
- )
- response = requests.post(tts_url, headers=self._headers, json={"text": text})
-
- if response.status_code == 200:
- with open("speech.mpeg", "wb") as f:
- f.write(response.content)
- playsound("speech.mpeg", True)
- os.remove("speech.mpeg")
- return True
- else:
- logger.warn("Request failed with status code:", response.status_code)
- logger.info("Response content:", response.content)
- return False