Spaces:
Sleeping
Sleeping
Commit
·
7177b58
1
Parent(s):
26f9517
Revert portg
Browse files
app.py
CHANGED
|
@@ -816,7 +816,7 @@ async def get_conversation_api():
|
|
| 816 |
|
| 817 |
|
| 818 |
# API endpoint to control recording
|
| 819 |
-
@router.post("/api/control/{
|
| 820 |
async def control_recording(action: str):
|
| 821 |
"""API endpoint to control recording (start/stop/clear/initialize)"""
|
| 822 |
if action == "start":
|
|
@@ -918,8 +918,8 @@ def create_app():
|
|
| 918 |
mode="send-receive"
|
| 919 |
)
|
| 920 |
|
| 921 |
-
#
|
| 922 |
-
|
| 923 |
|
| 924 |
print("FastRTC stream configured successfully!")
|
| 925 |
|
|
@@ -930,65 +930,16 @@ def create_app():
|
|
| 930 |
return app
|
| 931 |
|
| 932 |
|
|
|
|
|
|
|
| 933 |
# Main entry point
|
| 934 |
if __name__ == "__main__":
|
| 935 |
# Create the app
|
| 936 |
app = create_app()
|
| 937 |
-
|
| 938 |
-
|
| 939 |
-
|
| 940 |
-
|
| 941 |
-
|
| 942 |
-
|
| 943 |
-
def find_available_port(start_port=7860, max_tries=10):
|
| 944 |
-
"""Find an available port starting from start_port"""
|
| 945 |
-
for port_offset in range(max_tries):
|
| 946 |
-
port = start_port + port_offset
|
| 947 |
-
try:
|
| 948 |
-
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
| 949 |
-
sock.bind(('0.0.0.0', port))
|
| 950 |
-
sock.close()
|
| 951 |
-
return port
|
| 952 |
-
except OSError:
|
| 953 |
-
continue
|
| 954 |
-
# If no ports are available, return a default and let the server handle the error
|
| 955 |
-
return start_port
|
| 956 |
-
|
| 957 |
-
available_port = find_available_port(port)
|
| 958 |
-
if available_port != port:
|
| 959 |
-
print(f"Port {port} is in use, using port {available_port} instead.")
|
| 960 |
-
port = available_port
|
| 961 |
-
|
| 962 |
-
print(f"""
|
| 963 |
-
🎤 Real-time Speaker Diarization Server
|
| 964 |
-
=====================================
|
| 965 |
-
|
| 966 |
-
Starting server on: http://{host}:{port}
|
| 967 |
-
|
| 968 |
-
Features:
|
| 969 |
-
- Real-time speech recognition
|
| 970 |
-
- Speaker diarization with color coding
|
| 971 |
-
- FastRTC low-latency audio streaming
|
| 972 |
-
- Web interface for easy interaction
|
| 973 |
-
|
| 974 |
-
Make sure to:
|
| 975 |
-
1. Set HF_TOKEN environment variable for TURN server access
|
| 976 |
-
2. Allow microphone access in your browser
|
| 977 |
-
3. Use a modern browser for best performance
|
| 978 |
-
|
| 979 |
-
API Endpoints:
|
| 980 |
-
- GET /health - Health check
|
| 981 |
-
- GET /api/conversation - Get current conversation
|
| 982 |
-
- POST /api/control/{{action}} - Control recording (start/stop/clear/initialize)
|
| 983 |
-
- WS /stream/webrtc - FastRTC WebRTC endpoint
|
| 984 |
-
|
| 985 |
-
""")
|
| 986 |
-
|
| 987 |
-
# Run the server
|
| 988 |
-
uvicorn.run(
|
| 989 |
-
app,
|
| 990 |
-
host=host,
|
| 991 |
-
port=port,
|
| 992 |
-
log_level="info",
|
| 993 |
-
access_log=True
|
| 994 |
)
|
|
|
|
| 816 |
|
| 817 |
|
| 818 |
# API endpoint to control recording
|
| 819 |
+
@router.post("/api/control/{action}")
|
| 820 |
async def control_recording(action: str):
|
| 821 |
"""API endpoint to control recording (start/stop/clear/initialize)"""
|
| 822 |
if action == "start":
|
|
|
|
| 918 |
mode="send-receive"
|
| 919 |
)
|
| 920 |
|
| 921 |
+
# Add FastRTC endpoints
|
| 922 |
+
app.mount("/stream", stream)
|
| 923 |
|
| 924 |
print("FastRTC stream configured successfully!")
|
| 925 |
|
|
|
|
| 930 |
return app
|
| 931 |
|
| 932 |
|
| 933 |
+
|
| 934 |
+
|
| 935 |
# Main entry point
|
| 936 |
if __name__ == "__main__":
|
| 937 |
# Create the app
|
| 938 |
app = create_app()
|
| 939 |
+
interface = create_interface()
|
| 940 |
+
# Simple launch - HF Spaces will handle host/port automatically
|
| 941 |
+
interface.launch(
|
| 942 |
+
share=False, # Not needed in HF Spaces
|
| 943 |
+
server_name="0.0.0.0", # Required for HF Spaces
|
| 944 |
+
# Don't specify server_port - let HF Spaces handle it
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 945 |
)
|