sohojoe's picture
create respond to prompt actor
bcea2ea
raw
history blame
5.57 kB
import asyncio
import time
import traceback
from chat_pipeline import ChatPipeline
from clip_transform import CLIPTransform
from chat_service import ChatService
from dotenv import load_dotenv
from speech_service import SpeechService
from concurrent.futures import ThreadPoolExecutor
from audio_stream_processor import AudioStreamProcessor
from streaming_chat_service import StreamingChatService
def time_sentance_lenghts():
load_dotenv()
print ("Initializing Chat")
# audio_processor = AudioStreamProcessor()
user_speech_service0 = SpeechService(voice_id="Adam")
prompts = [
"hello, i am a long sentance, how are you today? Tell me about your shadow self?",
"a shorter sentance",
"Jung believed that the process of self-discovery and personal growth involves confronting and integrating the shadow self into the conscious mind.",
"By doing so, we become more self-aware and more fully actualized individuals.",
]
print ("Timing prompts\n")
for prompt in prompts:
start_time = time.time()
start_stream_time = time.time()
stream = user_speech_service0.stream(prompt)
audio = b""
for chunk in stream:
if chunk is not None:
audio += chunk
end_stream_time = time.time()
from elevenlabs import play
start_speech_time = time.time()
play(audio)
end_speech_time = time.time()
end_time = time.time()
total_time = (end_time - start_time)
stream_time = (end_stream_time - start_stream_time)
speech_time = (end_speech_time - start_speech_time)
stream_multiple = speech_time / stream_time
print(f"Stream time: {stream_time:.4f}, Acutual audio time: {speech_time:.4f}, a multiple of {stream_multiple:.2f}. for prompt: {prompt}")
print ("\nChat success")
def test_sentance_lenghts():
load_dotenv()
print ("Initializing Chat")
audio_processor = AudioStreamProcessor()
user_speech_service0 = SpeechService(voice_id="Adam")
user_speech_service1 = SpeechService(voice_id="Adam")
user_speech_service2 = SpeechService(voice_id="Adam")
user_speech_service3 = SpeechService(voice_id="Adam")
prompts = [
"hello, i am a long sentance, how are you today? Tell me about your shadow self?",
"a shorter sentance",
"Jung believed that the process of self-discovery and personal growth involves confronting and integrating the shadow self into the conscious mind.",
"By doing so, we become more self-aware and more fully actualized individuals.",
]
first = True
stream1 = user_speech_service1.stream(prompts[1])
stream0 = user_speech_service0.stream(prompts[0])
time.sleep(5)
stream2 = user_speech_service2.stream(prompts[2])
stream3 = user_speech_service3.stream(prompts[3])
audio_processor.add_audio_stream(stream0)
audio_processor.add_audio_stream(stream1)
audio_processor.add_audio_stream(stream2)
audio_processor.add_audio_stream(stream3)
audio_processor.close()
from elevenlabs import generate, play
speech0 = generate(prompts[0], voice="Adam")
speech1 = generate(prompts[1], voice="Adam")
speech2 = generate(prompts[2], voice="Adam")
speech3 = generate(prompts[3], voice="Adam")
play(speech0)
play(speech1)
play(speech2)
play(speech1)
play(speech3)
play(speech1)
# for prompt in prompts:
# stream = user_speech_service.stream(prompt)
# if first:
# first = False
# time.sleep(5)
# audio_processor.add_audio_stream(stream)
audio_processor.close()
print ("Chat success")
def run_debug_code():
load_dotenv()
# print ("Initializing CLIP templates")
# clip_transform = CLIPTransform()
# print ("CLIP success")
print ("Initializing Chat")
# chat_service = ChatService()
audio_processor = AudioStreamProcessor()
chat_service = StreamingChatService(audio_processor, voice_id="2OviOUQc1JsQRQgNkVBj") # Chales003
user_speech_service = SpeechService(voice_id="Adam")
# user_speech_service.print_voices() # if you want to see your custom voices
prompts = [
"hello, how are you today?",
"tell me about your shadow self?",
"hmm, interesting, tell me more about that.",
"wait, that is so interesting, what else?",
]
for prompt in prompts:
print ("")
print (f'prompt: "{prompt}"')
stream = user_speech_service.stream(prompt)
audio_processor.add_audio_stream(stream)
print ("")
print (f'response:')
response = chat_service.respond_to(prompt)
audio_processor.close()
print ("Chat success")
async def run_pipeline():
load_dotenv()
try:
chat_pipeline = ChatPipeline()
await chat_pipeline.start()
prompts = [
"hello, how are you today?",
"tell me about your shadow self?",
"hmm, interesting, tell me more about that.",
"wait, that is so interesting, what else?",
]
for prompt in prompts:
await chat_pipeline.enqueue(prompt)
await chat_pipeline.wait_until_all_jobs_idle()
except KeyboardInterrupt:
print("Pipeline interrupted by user")
except Exception as e:
traceback.print_exc()
print(f"An error occurred: {e}")
if __name__ == '__main__':
# time_sentance_lenghts()
# test_sentance_lenghts()
# run_debug_code()
asyncio.run(run_pipeline())