-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.py
51 lines (39 loc) · 1.37 KB
/
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import asyncio
import os
import time
from dotenv import load_dotenv
from llm import LanguageModelProcessor
from tts import TextToSpeech
from stt import SpeechToText
load_dotenv()
class ConversationManager:
transcription_response = ""
# Init
stt = SpeechToText()
llm = LanguageModelProcessor()
tts = TextToSpeech()
# stt = SpeechToText(model='whisper')
# llm = LanguageModelProcessor(type='groq', model='mixtral-8x7b-32768')
# tts = TextToSpeech(model='edgeTTS', voice='en-IE-EmilyNeural')
def __init__(self):
pass
async def main(self):
def handle_full_sentence(full_sentence):
self.transcription_response = full_sentence
# Init
llm_response = self.llm.process('Hello! Who are you?')
await self.tts.process(text=llm_response)
while True:
# Listening with STT
await self.stt.process(handle_full_sentence)
if "goodbye" in self.transcription_response.lower():
break
# Processing with LLM
llm_response = self.llm.process(self.transcription_response)
# Speaking with TTS
await self.tts.process(text=llm_response)
self.transcription_response = ""
if __name__ == "__main__":
print(f'Running ConversationManager...')
manager = ConversationManager()
asyncio.run(manager.main())