fix: vad control, session metadata, health endpoint
This commit is contained in:
parent
83edfff9d3
commit
335b4f498c
@ -91,7 +91,25 @@ class HybridWhisperServer:
|
|||||||
def setup_routes(self):
|
def setup_routes(self):
|
||||||
@self.app.route('/health', methods=['GET'])
|
@self.app.route('/health', methods=['GET'])
|
||||||
def health_check():
|
def health_check():
|
||||||
return jsonify({'status': 'healthy', 'service': 'WhisperLive Hybrid Server'})
|
# Get GPU memory from nvidia-smi (GPU 1)
|
||||||
|
import subprocess
|
||||||
|
try:
|
||||||
|
gpu_mem = float(subprocess.check_output(
|
||||||
|
'nvidia-smi --query-gpu=memory.used --format=csv,noheader,nounits -i 1', shell=True
|
||||||
|
).decode().strip()) / 1024.0
|
||||||
|
except Exception:
|
||||||
|
gpu_mem = 0.0
|
||||||
|
|
||||||
|
# Get active WS connections
|
||||||
|
active = len(self.whisper_server.clients) if hasattr(self.whisper_server, 'clients') else 0
|
||||||
|
|
||||||
|
return jsonify({
|
||||||
|
'status': 'healthy',
|
||||||
|
'service': 'WhisperLive Hybrid Server',
|
||||||
|
'model_loaded': self.shared_transcriber is not None,
|
||||||
|
'gpu_memory_used_gb': round(gpu_mem, 1),
|
||||||
|
'active_connections': active
|
||||||
|
})
|
||||||
|
|
||||||
@self.app.route('/', methods=['GET'])
|
@self.app.route('/', methods=['GET'])
|
||||||
def serve_test_form():
|
def serve_test_form():
|
||||||
@ -841,6 +859,7 @@ print(transcription.text)</code></pre>
|
|||||||
language = request.form.get('language', None)
|
language = request.form.get('language', None)
|
||||||
task = request.form.get('task', 'transcribe') # 'transcribe' or 'translate'
|
task = request.form.get('task', 'transcribe') # 'transcribe' or 'translate'
|
||||||
model_size = request.form.get('model', 'base')
|
model_size = request.form.get('model', 'base')
|
||||||
|
use_vad = request.form.get('use_vad', 'true').lower() == 'true'
|
||||||
|
|
||||||
# For now, we'll use the shared transcriber regardless of the requested model size
|
# For now, we'll use the shared transcriber regardless of the requested model size
|
||||||
# In the future, we could create different transcriber instances for different models
|
# In the future, we could create different transcriber instances for different models
|
||||||
@ -865,7 +884,8 @@ print(transcription.text)</code></pre>
|
|||||||
segments, info = self.shared_transcriber.transcribe(
|
segments, info = self.shared_transcriber.transcribe(
|
||||||
temp_path,
|
temp_path,
|
||||||
language=language,
|
language=language,
|
||||||
task=task
|
task=task,
|
||||||
|
vad_filter=use_vad
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
# For other backends, use the server's transcriber
|
# For other backends, use the server's transcriber
|
||||||
@ -1104,6 +1124,14 @@ print(transcription.text)</code></pre>
|
|||||||
if data == "END_OF_AUDIO":
|
if data == "END_OF_AUDIO":
|
||||||
internal.send_binary(b"END_OF_AUDIO")
|
internal.send_binary(b"END_OF_AUDIO")
|
||||||
else:
|
else:
|
||||||
|
# Pass through session_metadata if present in config message
|
||||||
|
try:
|
||||||
|
msg = json.loads(data)
|
||||||
|
session_metadata = msg.get('session_metadata')
|
||||||
|
if session_metadata:
|
||||||
|
logger.info(f"Session metadata received: session_id={session_metadata.get('session_id')}, teacher_id={session_metadata.get('teacher_id')}")
|
||||||
|
except (json.JSONDecodeError, AttributeError):
|
||||||
|
pass
|
||||||
internal.send(data)
|
internal.send(data)
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user