Update app.py
Browse files
app.py
CHANGED
@@ -4,6 +4,7 @@ import torchaudio
|
|
4 |
from transformers import Wav2Vec2FeatureExtractor, Wav2Vec2ForSequenceClassification
|
5 |
from queue import Queue
|
6 |
import threading
|
|
|
7 |
|
8 |
# Check for device
|
9 |
device = "cuda" if torch.cuda.is_available() else "cpu"
|
@@ -39,7 +40,6 @@ def audio_processing_thread():
|
|
39 |
audio_chunk, sampling_rate = audio_queue.get()
|
40 |
emotion = inference_chunk(audio_chunk, sampling_rate)
|
41 |
results_queue.put(emotion)
|
42 |
-
print(f"Processed Emotion: {emotion}") # Debugging: Show the processed emotion
|
43 |
|
44 |
processing_thread = threading.Thread(target=audio_processing_thread, daemon=True)
|
45 |
processing_thread.start()
|
@@ -60,25 +60,24 @@ def real_time_inference_live(microphone_audio):
|
|
60 |
if audio_chunk.size(0) > 0:
|
61 |
audio_queue.put((audio_chunk, sampling_rate))
|
62 |
|
63 |
-
#
|
64 |
while not results_queue.empty():
|
65 |
emotion = results_queue.get()
|
66 |
emotions.append(emotion)
|
67 |
-
print(f"Emotion Detected: {emotion}") # Debugging: Show detected emotion in live output
|
68 |
|
69 |
return "\n".join(emotions)
|
70 |
|
71 |
with gr.Blocks() as demo:
|
72 |
gr.Markdown("# Live Emotion Detection from Audio")
|
73 |
|
74 |
-
audio_input = gr.Audio(streaming=True, label="Real-Time Audio Input", type="numpy"
|
75 |
-
emotion_output = gr.Textbox(label="
|
76 |
|
77 |
def stream_audio_live(audio):
|
78 |
return real_time_inference_live(audio)
|
79 |
|
80 |
audio_input.stream(stream_audio_live, outputs=emotion_output)
|
81 |
|
82 |
-
gr.Markdown("This application
|
83 |
|
84 |
-
demo.launch(share=True)
|
|
|
4 |
from transformers import Wav2Vec2FeatureExtractor, Wav2Vec2ForSequenceClassification
|
5 |
from queue import Queue
|
6 |
import threading
|
7 |
+
import numpy as np
|
8 |
|
9 |
# Check for device
|
10 |
device = "cuda" if torch.cuda.is_available() else "cpu"
|
|
|
40 |
audio_chunk, sampling_rate = audio_queue.get()
|
41 |
emotion = inference_chunk(audio_chunk, sampling_rate)
|
42 |
results_queue.put(emotion)
|
|
|
43 |
|
44 |
processing_thread = threading.Thread(target=audio_processing_thread, daemon=True)
|
45 |
processing_thread.start()
|
|
|
60 |
if audio_chunk.size(0) > 0:
|
61 |
audio_queue.put((audio_chunk, sampling_rate))
|
62 |
|
63 |
+
# Retrieve results from the results queue
|
64 |
while not results_queue.empty():
|
65 |
emotion = results_queue.get()
|
66 |
emotions.append(emotion)
|
|
|
67 |
|
68 |
return "\n".join(emotions)
|
69 |
|
70 |
with gr.Blocks() as demo:
|
71 |
gr.Markdown("# Live Emotion Detection from Audio")
|
72 |
|
73 |
+
audio_input = gr.Audio(streaming=True, label="Real-Time Audio Input", type="numpy")
|
74 |
+
emotion_output = gr.Textbox(label="Detected Emotions", lines=10)
|
75 |
|
76 |
def stream_audio_live(audio):
|
77 |
return real_time_inference_live(audio)
|
78 |
|
79 |
audio_input.stream(stream_audio_live, outputs=emotion_output)
|
80 |
|
81 |
+
gr.Markdown("This application processes audio in 5-second chunks and detects emotions in real-time.")
|
82 |
|
83 |
+
demo.launch(share=True)
|