llama-index
48 строк · 1.2 Кб
1"""ElevenLabs TTS."""
2
3from typing import Any, Optional
4
5from llama_index.legacy.tts.base import BaseTTS
6
7
8class ElevenLabsTTS(BaseTTS):
9"""ElevenLabs TTS.
10
11Args:
12api_key (Optional[str]): API key for ElevenLabs TTS.
13
14"""
15
16def __init__(self, api_key: Optional[str] = None) -> None:
17super().__init__()
18
19self.api_key = api_key
20
21def generate_audio(self, text: str, voice: Optional[str] = None) -> Any:
22"""Generate audio.
23
24NOTE: return type is Any, but it should be any object that can be fed
25as `data` into IPython.display.Audio(). This includes numpy array, list,
26unicode, str or bytes
27
28Args:
29text (str): text to be turned into audio.
30voice (Optional[str]): voice in which audio is generated.
31"""
32import_err_msg = "`elevenlabs` package not found, \
33please run `pip install elevenlabs`"
34
35try:
36import elevenlabs
37except ImportError:
38raise ImportError(import_err_msg)
39
40if self.api_key:
41elevenlabs.set_api_key(self.api_key)
42
43if voice:
44audio = elevenlabs.generate(text, voice=voice)
45else:
46audio = elevenlabs.generate(text)
47
48return audio
49