diff --git a/libs/langchain/langchain/agents/load_tools.py b/libs/langchain/langchain/agents/load_tools.py index 0329552289f..714abf0f3bf 100644 --- a/libs/langchain/langchain/agents/load_tools.py +++ b/libs/langchain/langchain/agents/load_tools.py @@ -285,6 +285,7 @@ def _get_dataforseo_api_search(**kwargs: Any) -> BaseTool: def _get_dataforseo_api_search_json(**kwargs: Any) -> BaseTool: return DataForSeoAPISearchResults(api_wrapper=DataForSeoAPIWrapper(**kwargs)) + def _get_eleven_labs_text2speech() -> BaseTool: return ElevenLabsText2SpeechTool() @@ -344,9 +345,7 @@ _EXTRA_OPTIONAL_TOOLS: Dict[str, Tuple[Callable[[KwArg(Any)], BaseTool], List[st _get_dataforseo_api_search_json, ["api_login", "api_password", "aiosession"], ), - "eleven_labs_text2speech": ( - _get_eleven_labs_text2speech, ["eleven_api_key"] - ) + "eleven_labs_text2speech": (_get_eleven_labs_text2speech, ["eleven_api_key"]), } diff --git a/libs/langchain/langchain/tools/eleven_labs/__init__.py b/libs/langchain/langchain/tools/eleven_labs/__init__.py index 1823918ea9d..077acb1e4e6 100644 --- a/libs/langchain/langchain/tools/eleven_labs/__init__.py +++ b/libs/langchain/langchain/tools/eleven_labs/__init__.py @@ -1,8 +1,5 @@ """Eleven Labs Services Tools.""" -from langchain.tools.eleven_labs.text2speech import ( - ElevenLabsText2SpeechTool -) - +from langchain.tools.eleven_labs.text2speech import ElevenLabsText2SpeechTool __all__ = [ElevenLabsText2SpeechTool] diff --git a/libs/langchain/langchain/tools/eleven_labs/text2speech.py b/libs/langchain/langchain/tools/eleven_labs/text2speech.py index fdace351f9b..e59652fb19b 100644 --- a/libs/langchain/langchain/tools/eleven_labs/text2speech.py +++ b/libs/langchain/langchain/tools/eleven_labs/text2speech.py @@ -12,23 +12,22 @@ class ElevenLabsText2SpeechTool(BaseTool): In order to set this up, follow instructions at: https://docs.elevenlabs.io/welcome/introduction """ - + name: str = "eleven_labs_text2speech" description: str = ( "A wrapper around Eleven Labs Text2Speech. " "Useful for when you need to convert text to speech. " - "It supports multiple languages, including English, German, Polish, Spanish, Italian, French, Portuguese, and Hindi. " + "It supports multiple languages, including English, German, Polish, " + "Spanish, Italian, French, Portuguese, and Hindi. " ) - + @root_validator(pre=True) def validate_environment(cls, values: Dict) -> Dict: """Validate that api key exists in environment.""" - _ = get_from_dict_or_env( - values, "eleven_api_key", "ELEVEN_API_KEY" - ) - + _ = get_from_dict_or_env(values, "eleven_api_key", "ELEVEN_API_KEY") + return values - + def _text2speech(self, text: str) -> str: try: from elevenlabs import generate @@ -38,14 +37,12 @@ class ElevenLabsText2SpeechTool(BaseTool): "elevenlabs is not installed. " "Run `pip install elevenlabs` to install." ) - - speech = generate(text=text, model='eleven_multilingual_v1') - with tempfile.NamedTemporaryFile( - mode="bx", suffix=".wav", delete=False - ) as f: + + speech = generate(text=text, model="eleven_multilingual_v1") + with tempfile.NamedTemporaryFile(mode="bx", suffix=".wav", delete=False) as f: f.write(speech) return f.name - + def _run(self, query: str) -> str: """Use the tool.""" try: @@ -58,7 +55,7 @@ class ElevenLabsText2SpeechTool(BaseTool): """Play the text as speech.""" try: from elevenlabs import play - + except ImportError: raise ImportError( "elevenlabs is not installed. " @@ -68,19 +65,20 @@ class ElevenLabsText2SpeechTool(BaseTool): speech = f.read() play(speech) - + def stream(self, query: str) -> None: """Stream the text as speech.""" - + try: - from elevenlabs import stream, generate - + from elevenlabs import generate, stream + except ImportError: raise ImportError( "elevenlabs is not installed. " "Run `pip install elevenlabs` to install." ) - speech_stream = generate(text=query, model='eleven_multilingual_v1', stream=True) + speech_stream = generate( + text=query, model="eleven_multilingual_v1", stream=True + ) stream(speech_stream) - \ No newline at end of file