aboutsummaryrefslogtreecommitdiff
path: root/autogpts/autogpt/autogpt/speech/say.py
diff options
context:
space:
mode:
Diffstat (limited to 'autogpts/autogpt/autogpt/speech/say.py')
-rw-r--r--autogpts/autogpt/autogpt/speech/say.py24
1 files changed, 20 insertions, 4 deletions
diff --git a/autogpts/autogpt/autogpt/speech/say.py b/autogpts/autogpt/autogpt/speech/say.py
index be4ad5d85..04ab3a4bc 100644
--- a/autogpts/autogpt/autogpt/speech/say.py
+++ b/autogpts/autogpt/autogpt/speech/say.py
@@ -1,6 +1,7 @@
""" Text to speech module """
from __future__ import annotations
+import os
import threading
from threading import Semaphore
from typing import Literal, Optional
@@ -20,11 +21,23 @@ _QUEUE_SEMAPHORE = Semaphore(
class TTSConfig(SystemConfiguration):
speak_mode: bool = False
- provider: Literal[
- "elevenlabs", "gtts", "macos", "streamelements"
- ] = UserConfigurable(default="gtts")
elevenlabs: Optional[ElevenLabsConfig] = None
streamelements: Optional[StreamElementsConfig] = None
+ provider: Literal[
+ "elevenlabs", "gtts", "macos", "streamelements"
+ ] = UserConfigurable(
+ default="gtts",
+ from_env=lambda: os.getenv("TEXT_TO_SPEECH_PROVIDER")
+ or (
+ "macos"
+ if os.getenv("USE_MAC_OS_TTS")
+ else "elevenlabs"
+ if os.getenv("ELEVENLABS_API_KEY")
+ else "streamelements"
+ if os.getenv("USE_BRIAN_TTS")
+ else "gtts"
+ ),
+ ) # type: ignore
class TextToSpeechProvider:
@@ -45,7 +58,10 @@ class TextToSpeechProvider:
thread.start()
def __repr__(self):
- return f"{self.__class__.__name__}(provider={self._voice_engine.__class__.__name__})"
+ return "{class_name}(provider={voice_engine_name})".format(
+ class_name=self.__class__.__name__,
+ voice_engine_name=self._voice_engine.__class__.__name__,
+ )
@staticmethod
def _get_voice_engine(config: TTSConfig) -> tuple[VoiceBase, VoiceBase]: