Spaces:
Sleeping
Sleeping
Commit
·
a58ada6
1
Parent(s):
7bc4c94
Code fixing
Browse files
app.py
CHANGED
|
@@ -9,11 +9,13 @@ import urllib.request
|
|
| 9 |
import torchaudio
|
| 10 |
from scipy.spatial.distance import cosine
|
| 11 |
from RealtimeSTT import AudioToTextRecorder
|
|
|
|
| 12 |
from fastrtc import Stream, AsyncStreamHandler, ReplyOnPause
|
| 13 |
import json
|
| 14 |
import io
|
| 15 |
import wave
|
| 16 |
import asyncio
|
|
|
|
| 17 |
|
| 18 |
# Simplified configuration parameters
|
| 19 |
SILENCE_THRESHS = [0, 0.4]
|
|
@@ -621,7 +623,7 @@ def setup_fastrtc_handler():
|
|
| 621 |
|
| 622 |
# Create Gradio interface
|
| 623 |
def create_interface():
|
| 624 |
-
with gr.Blocks(title="Real-time Speaker Diarization", theme=gr.themes.Monochrome()) as
|
| 625 |
gr.Markdown("# 🎤 Real-time Speech Recognition with Speaker Diarization")
|
| 626 |
gr.Markdown("This app performs real-time speech recognition with automatic speaker identification and color-coding.")
|
| 627 |
|
|
@@ -639,7 +641,15 @@ def create_interface():
|
|
| 639 |
<script>
|
| 640 |
document.getElementById('start-fastrtc').addEventListener('click', function() {
|
| 641 |
document.getElementById('fastrtc-status').textContent = 'Connecting...';
|
| 642 |
-
// FastRTC will
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 643 |
});
|
| 644 |
</script>
|
| 645 |
</div>
|
|
@@ -790,29 +800,25 @@ def create_interface():
|
|
| 790 |
outputs=[conversation_output, status_output]
|
| 791 |
)
|
| 792 |
|
| 793 |
-
return
|
| 794 |
|
| 795 |
|
| 796 |
-
|
| 797 |
-
|
| 798 |
-
|
| 799 |
-
|
| 800 |
-
|
| 801 |
-
|
| 802 |
-
|
| 803 |
-
|
| 804 |
-
|
| 805 |
-
|
| 806 |
-
stream.mount(app.app)
|
| 807 |
-
|
| 808 |
-
# Launch the app
|
| 809 |
-
app.launch(
|
| 810 |
-
server_name="0.0.0.0",
|
| 811 |
-
server_port=7860,
|
| 812 |
-
share=True
|
| 813 |
-
)
|
| 814 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 815 |
|
| 816 |
if __name__ == "__main__":
|
| 817 |
-
# Run
|
| 818 |
-
|
|
|
|
| 9 |
import torchaudio
|
| 10 |
from scipy.spatial.distance import cosine
|
| 11 |
from RealtimeSTT import AudioToTextRecorder
|
| 12 |
+
from fastapi import FastAPI
|
| 13 |
from fastrtc import Stream, AsyncStreamHandler, ReplyOnPause
|
| 14 |
import json
|
| 15 |
import io
|
| 16 |
import wave
|
| 17 |
import asyncio
|
| 18 |
+
import uvicorn
|
| 19 |
|
| 20 |
# Simplified configuration parameters
|
| 21 |
SILENCE_THRESHS = [0, 0.4]
|
|
|
|
| 623 |
|
| 624 |
# Create Gradio interface
|
| 625 |
def create_interface():
|
| 626 |
+
with gr.Blocks(title="Real-time Speaker Diarization", theme=gr.themes.Monochrome()) as interface:
|
| 627 |
gr.Markdown("# 🎤 Real-time Speech Recognition with Speaker Diarization")
|
| 628 |
gr.Markdown("This app performs real-time speech recognition with automatic speaker identification and color-coding.")
|
| 629 |
|
|
|
|
| 641 |
<script>
|
| 642 |
document.getElementById('start-fastrtc').addEventListener('click', function() {
|
| 643 |
document.getElementById('fastrtc-status').textContent = 'Connecting...';
|
| 644 |
+
// FastRTC will initialize the connection
|
| 645 |
+
fetch('/start-rtc', { method: 'POST' })
|
| 646 |
+
.then(response => response.text())
|
| 647 |
+
.then(data => {
|
| 648 |
+
document.getElementById('fastrtc-status').textContent = 'Connected! Speak now...';
|
| 649 |
+
})
|
| 650 |
+
.catch(error => {
|
| 651 |
+
document.getElementById('fastrtc-status').textContent = 'Connection error: ' + error;
|
| 652 |
+
});
|
| 653 |
});
|
| 654 |
</script>
|
| 655 |
</div>
|
|
|
|
| 800 |
outputs=[conversation_output, status_output]
|
| 801 |
)
|
| 802 |
|
| 803 |
+
return interface
|
| 804 |
|
| 805 |
|
| 806 |
+
# Create FastAPI app and set up routes
|
| 807 |
+
app = FastAPI()
|
| 808 |
+
|
| 809 |
+
# Initialize FastRTC stream
|
| 810 |
+
rtc_stream = setup_fastrtc_handler()
|
| 811 |
+
rtc_stream.mount(app)
|
| 812 |
+
|
| 813 |
+
# Create Gradio interface
|
| 814 |
+
gradio_interface = create_interface()
|
| 815 |
+
app = gr.mount_gradio_app(app, gradio_interface, path="/")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 816 |
|
| 817 |
+
# Add endpoint to start RTC connection
|
| 818 |
+
@app.post("/start-rtc")
|
| 819 |
+
def start_rtc():
|
| 820 |
+
return {"status": "success"}
|
| 821 |
|
| 822 |
if __name__ == "__main__":
|
| 823 |
+
# Run with uvicorn
|
| 824 |
+
uvicorn.run(app, host="0.0.0.0", port=7860)
|