| import sys | |
| from langchain_client import LangchainClient | |
| from tts import TextToSpeech | |
| langchain_client = LangchainClient() | |
| conversation_chain_history = langchain_client.create_model() | |
| tts_client = TextToSpeech() | |
| async def listen_print_loop(responses: object) -> str: | |
| num_chars_printed = 0 | |
| for response in responses: | |
| if not response.results: | |
| continue | |
| result = response.results[0] | |
| if not result.alternatives: | |
| continue | |
| transcript = result.alternatives[0].transcript | |
| overwrite_chars = " " * (num_chars_printed - len(transcript)) | |
| if not result.is_final: | |
| sys.stdout.write(transcript + overwrite_chars + "\r") | |
| sys.stdout.flush() | |
| num_chars_printed = len(transcript) | |
| else: | |
| print(transcript + overwrite_chars) | |
| result = langchain_client.invoke_llm(conversation_chain_history, transcript) | |
| return result, tts_client.text_to_speech(result) |