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 |
|