Spaces:
Sleeping
Sleeping
Commit
·
a3ec320
1
Parent(s):
91b17d7
Check point 4
Browse files
app.py
CHANGED
|
@@ -10,12 +10,13 @@ import torchaudio
|
|
| 10 |
from scipy.spatial.distance import cosine
|
| 11 |
from RealtimeSTT import AudioToTextRecorder
|
| 12 |
from fastapi import FastAPI, APIRouter
|
| 13 |
-
from fastrtc import Stream, AsyncStreamHandler
|
| 14 |
import json
|
| 15 |
import asyncio
|
| 16 |
import uvicorn
|
| 17 |
from queue import Queue
|
| 18 |
import logging
|
|
|
|
| 19 |
|
| 20 |
# Set up logging
|
| 21 |
logging.basicConfig(level=logging.INFO)
|
|
@@ -705,8 +706,7 @@ def initialize_system():
|
|
| 705 |
stream = Stream(
|
| 706 |
handler=handler,
|
| 707 |
modality="audio",
|
| 708 |
-
mode="send-receive"
|
| 709 |
-
stream_name="audio_stream" # Match the stream_name in WebRTC component
|
| 710 |
)
|
| 711 |
|
| 712 |
# Mount the stream to the FastAPI app
|
|
@@ -780,7 +780,6 @@ def create_interface():
|
|
| 780 |
# Replace standard Audio with WebRTC component
|
| 781 |
audio_component = WebRTC(
|
| 782 |
label="Audio Input",
|
| 783 |
-
stream_name="audio_stream",
|
| 784 |
modality="audio",
|
| 785 |
mode="send-receive"
|
| 786 |
)
|
|
@@ -912,6 +911,21 @@ def create_interface():
|
|
| 912 |
# Auto-refresh status every 2 seconds
|
| 913 |
status_timer = gr.Timer(2)
|
| 914 |
status_timer.tick(refresh_status, outputs=[status_output])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 915 |
|
| 916 |
return interface
|
| 917 |
|
|
|
|
| 10 |
from scipy.spatial.distance import cosine
|
| 11 |
from RealtimeSTT import AudioToTextRecorder
|
| 12 |
from fastapi import FastAPI, APIRouter
|
| 13 |
+
from fastrtc import Stream, AsyncStreamHandler
|
| 14 |
import json
|
| 15 |
import asyncio
|
| 16 |
import uvicorn
|
| 17 |
from queue import Queue
|
| 18 |
import logging
|
| 19 |
+
from gradio_webrtc import WebRTC
|
| 20 |
|
| 21 |
# Set up logging
|
| 22 |
logging.basicConfig(level=logging.INFO)
|
|
|
|
| 706 |
stream = Stream(
|
| 707 |
handler=handler,
|
| 708 |
modality="audio",
|
| 709 |
+
mode="send-receive"
|
|
|
|
| 710 |
)
|
| 711 |
|
| 712 |
# Mount the stream to the FastAPI app
|
|
|
|
| 780 |
# Replace standard Audio with WebRTC component
|
| 781 |
audio_component = WebRTC(
|
| 782 |
label="Audio Input",
|
|
|
|
| 783 |
modality="audio",
|
| 784 |
mode="send-receive"
|
| 785 |
)
|
|
|
|
| 911 |
# Auto-refresh status every 2 seconds
|
| 912 |
status_timer = gr.Timer(2)
|
| 913 |
status_timer.tick(refresh_status, outputs=[status_output])
|
| 914 |
+
|
| 915 |
+
# Connect the WebRTC component to our processing function
|
| 916 |
+
def process_webrtc_audio(audio_data):
|
| 917 |
+
if audio_data is not None and diarization_system.is_running:
|
| 918 |
+
try:
|
| 919 |
+
# Feed audio to our diarization system
|
| 920 |
+
diarization_system.feed_audio(audio_data)
|
| 921 |
+
except Exception as e:
|
| 922 |
+
logger.error(f"Error processing WebRTC audio: {e}")
|
| 923 |
+
return get_conversation()
|
| 924 |
+
|
| 925 |
+
audio_component.stream(
|
| 926 |
+
fn=process_webrtc_audio,
|
| 927 |
+
outputs=[conversation_output]
|
| 928 |
+
)
|
| 929 |
|
| 930 |
return interface
|
| 931 |
|