NeuralSphere-Labs/VocalChat
1
1import streamlit as st2import torch3from transformers import AutoModelForSequenceClassification, AutoTokenizer4from huggingface_hub import inference_api5import speech_recognition as sr6import pyttsx37import diffusers8 9# Set up speech recognition and synthesis10r = sr.Recognizer()11engine = pyttsx3.init()12 13# Set up the Hugging Face Hub model and tokenizer14model_name = "distilbert-base-uncased-finetuned-sst-2-english"15model = AutoModelForSequenceClassification.from_pretrained(model_name)16tokenizer = AutoTokenizer.from_pretrained(model_name)17 18# Set up the Serverless Inference API19inference_api_token = HF_TOKEN20inference_api = inference_api.InferenceApi(token=inference_api_token)21 22# Set up the Diffusers library23diffusers_device = torch.device("cuda" if torch.cuda.is_available() else "cpu")24diffusers_model = diffusers.DDPMPipeline.from_pretrained("ByteDance/SDXL-Lightning")25 26def recognize_speech():27 with sr.Microphone() as source:28 print("Say something!")29 audio = r.listen(source)30 try:31 text = r.recognize_google(audio, language="en-US")32 return text33 except sr.UnknownValueError:34 print("Sorry, I didn't catch that. Try again!")35 return None36 37def respond_to_text(text):38 inputs = tokenizer.encode_plus(39 text,40 add_special_tokens=True,41 max_length=512,42 return_attention_mask=True,43 return_tensors='pt'44 )45 outputs = inference_api.predict(model_name, inputs)46 logits = outputs.logits47 _, predicted = torch.max(logits, dim=1)48 response = tokenizer.decode(predicted[0], skip_special_tokens=True)49 return response50 51def generate_image(prompt):52 image = diffusers_model(prompt, num_inference_steps=50, device=diffusers_device)53 return image54 55def speak_text(text):56 engine.say(text)57 engine.runAndWait()58 59st.title("Chat with LLM and Generate Images")60 61chat_input = st.text_input("Type or speak something:")62if chat_input:63 response = respond_to_text(chat_input)64 st.write("LLM Response:", response)65 speak_text(response)66 67generate_image_button = st.button("Generate Image")68if generate_image_button:69 prompt = st.text_input("Enter a prompt for the image:")70 image = generate_image(prompt)71 st.image(image, use_column_width=True)72 73mic_button = st.button("Speak")74if mic_button:75 text = recognize_speech()76 if text:77 response = respond_to_text(text)78 st.write("LLM Response:", response)79 speak_text(response)