Голосовые системы

CODEMAP

Карта кода для file ASR + diarization stack.

Main Flow

  • src/webui/server.py
  • HTTP upload handler для /api/file-transcribe
  • запускает in-process file job runner
  • инжектит NATS/meta config в /whisper-diarization
  • в режиме WEBUI_PAGE_MODE=diagnostics отдает /status/ и /status/api/diagnostics

  • src/webui/diagnostics.py

  • backend probes для voice-chat services, NATS, LinTO HTTP и diarization sidecar-ов
  • агрегирует ok/degraded/fail
  • запускает optional smoke checks при smoke=1

  • src/stt_whisper_to_nats.py

  • live ASR bridge
  • file worker
  • orchestration ASR chunk loop
  • coarse diarization stage events
  • merge final ASR + diarization result

  • src/diarization.py

  • HTTP client для DIARIZATION_HTTP_URL
  • serialization form fields
  • parsing final diarization JSON
  • friendly pipeline-not-ready errors

  • src/model_transport.py

  • общий streaming HTTP CONNECT transport для LinTO и diarization multipart
  • isolated proxy session, cancellation cleanup и отсутствие direct fallback

  • src/pyannote_diarization_server.py

  • pyannote sidecar runtime
  • /healthz
  • /diarize
  • Hugging Face gated-model startup checks
  • NATS progress publisher
  • hook bridge from pyannote.audio to diar_* subjects

  • src/sherpa_onnx_diarization_server.py

  • real sherpa-onnx sidecar runtime
  • downloads/loads segmentation and embedding ONNX models
  • exposes the same /healthz and /diarize JSON contract as pyannote

  • src/sortformer_diarization_server.py

  • real NVIDIA NeMo Sortformer sidecar runtime
  • windowed long-file handling for files beyond the model's practical context
  • exposes the same /healthz and /diarize JSON contract as pyannote

Browser / UI

  • src/webui/static/index.html
  • shared layout for /whisper-trasncription, /whisper-diarization, and case pages
  • status area
  • dedicated speaker-separation progress card

  • src/webui/static/app.js

  • browser NATS subscriptions
  • upload flow
  • status log rendering
  • читает requested_diarization / run_diarization прямо из file state events и snapshot
  • live diarization progress card updates
  • final plain/speaker text rendering

  • src/webui/static/nats_ws_client.js

  • lightweight NATS-over-WebSocket client для browser

  • src/webui/static/diagnostics.html и src/webui/static/diagnostics_app.js

  • отдельная страница /status/
  • render grouped diagnostics JSON
  • browser-side NATS WebSocket check через /ws

  • src/webui/static/styles.css

  • page styling
  • progress-card / progress-bar styles
  • diagnostics tables and status badges

Shared Runtime Helpers

  • src/webui/file_mode.py
  • FileModeSettings
  • NATS subject builders
  • file job storage
  • durable file state payload merge
  • audio normalization
  • chunking helpers
  • transcript builder

  • src/pyannote_healthcheck.py

  • container health probe для pyannote sidecar

Build / Packaging

  • docker/diarization-base/Dockerfile
  • CUDA/PyTorch/TorchCodec base image
  • pyannote import smoke test

  • docker/diarization/Dockerfile

  • thin runtime image for sidecar
  • healthcheck entrypoint

  • docker/sherpa-onnx/Dockerfile

  • sherpa-onnx sidecar image

  • docker/sortformer/Dockerfile

  • NeMo Sortformer sidecar image

  • docker/docker-compose.yml

  • local composition for worker + pyannote sidecar
  • env parity for NATS + diarization progress

Deploy Wiring

  • stack/stack.drs
  • project-owned legacy CPU stack py_faster_whisper
  • stt_whisper_to_nats, pyannote_diarization, sherpa_onnx_diarization, sortformer_diarization
  • pyannote DEVICE=cpu; PYANNOTE_HF_TOKEN comes from a protected CI/CD variable
  • stack/otlp.drs
  • shared logging, telemetry and network overlay applied before stack/stack.drs

  • ../rag-stack/stack/llm-models.drs

  • production env wiring
  • stt_whisper_to_nats
  • NATS progress prefixes and revision
  • ../rag-stack/stack/diarization-models.drs
  • pyannote_diarization_shared
  • pyannote_diarization_isolated
  • sherpa_onnx_diarization
  • sortformer_diarization

Tests

  • tests/test_diarization.py
  • diarization helpers
  • file worker progress publish tests
  • pyannote progress hook/publisher tests
  • diarization HTTP client tests

  • tests/test_pyannote_healthcheck.py

  • healthcheck probe tests

Исходник

Скачать Markdown · К материалам исследования