| """Base class for all voice classes.""" |
| import abc |
| from threading import Lock |
|
|
| from autogpt.config import AbstractSingleton |
|
|
|
|
| class VoiceBase(AbstractSingleton): |
| """ |
| Base class for all voice classes. |
| """ |
|
|
| def __init__(self): |
| """ |
| Initialize the voice class. |
| """ |
| self._url = None |
| self._headers = None |
| self._api_key = None |
| self._voices = [] |
| self._mutex = Lock() |
| self._setup() |
|
|
| def say(self, text: str, voice_index: int = 0) -> bool: |
| """ |
| Say the given text. |
| |
| Args: |
| text (str): The text to say. |
| voice_index (int): The index of the voice to use. |
| """ |
| with self._mutex: |
| return self._speech(text, voice_index) |
|
|
| @abc.abstractmethod |
| def _setup(self) -> None: |
| """ |
| Setup the voices, API key, etc. |
| """ |
| pass |
|
|
| @abc.abstractmethod |
| def _speech(self, text: str, voice_index: int = 0) -> bool: |
| """ |
| Play the given text. |
| |
| Args: |
| text (str): The text to play. |
| """ |
| pass |
|
|