CoolFace
Apppublic

NeuralSphere-Labs/VocalChat

sourceHugging Faceapache-2.0updated 2y agoView on Hugging Face
1likes
app.py79 linesDownload Raw Back to root
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)