Spaces:
Sleeping
Sleeping
Commit History
-
chore: merge master → dev/video-fer (live camera FER mode)
New from master: - Live camera page with real-time browser-side FER - use-fer.ts / use-streaming-transcription.ts hooks - Sidebar /live link, warmup route, next.config.ts updates Dockerfile downloads emotion_model_web.onnx from GitHub at build time (HF Xet restriction prevents pushing binary via git).a85acb5 -
fix: route video files through async polling to restore FER display
Split processing by file type: - Video → /api/transcribe-diarize polling → full FER data - Audio → /api/transcribe-stream SSE → live tokens651926c -
fix: route /api/transcribe-stream to Next.js for SSE
Add nginx location block for /api/transcribe-stream → Next.js (3030) with proxy buffering disabled for SSE token streaming. Also merges master changes: evoxtral-rl model, RL scripts, docs.63fe495 -
chore: merge master → dev/video-fer (SSE transcribe-stream)
Changes from master: - Switch to evoxtral-rl model - RL training pipeline, technical report (docs only, PDF excluded) - Updated README and model card From dev/video-fer: - FER LFS pointer detection and auto-download - Streaming emotion/valence/arousal from bracket tags - Inline bracket badges with seek-on-click - Async job polling in proxy (fallback for local inference)aa15e90
-
fix: detect Git LFS pointer in FER model, auto-download real binary
If Docker COPY models/ copies a Git LFS pointer instead of the actual ONNX binary, _init_fer() now: 1. Logs file size + first bytes for diagnosis 2. Detects LFS pointer (file <10KB starting with "version https://git-lfs") 3. Downloads the real binary from HF Space resolve URL 4. Loads the downloaded binary instead Also adds onnxruntime version logging and full traceback on load failure.d0d44f6 -
fix: pin onnxruntime==1.24.2 + cache-bust Dockerfile for FER
468f785 -
fix: async job polling for timeout + FER ONNX ort>=1.19.0
cc028c9 -
docs: update README with Studio features and API format
a01a078 -
chore: merge master + streaming emotions, inline badges, hidden scrollbar
fb8075d -
feat: streaming valence/arousal + inline bracket badges + hidden scrollbar
b9eb9d3 -
feat: char-level text highlight + click-to-seek + inline bracket badges
0bc965a -
feat: ElevenLabs-style transcript highlight + timeline playhead
3ce15e9 -
feat: bidirectional timeline ↔ transcript sync with scroll highlight
8d76fde -
fix: remove play/pause overlay from RightPanel video preview
f900ec0 -
feat: per-second FER timeline for live emotion panel
5fa0792 -
fix: restore output:standalone in next.config.ts for Docker build
bf603d6 -
feat: add delete button to recent sessions in sidebar
644ceff -
fix: prevent double API call on upload; replace frontend with redesigned UI
4f4f496 -
feat: replace frontend with redesigned Ethos Studio UI + update READMEs
c4c4f17 -
fix: extend proxy timeouts for CPU inference (30/60 min)
bcf82e9 -
fix: correct FER model path and STT error propagation
1057f87 -
fix: add required language= arg to apply_transcription_request()
4ee7e7e -
debug: add /debug-inference endpoint to smoke-test local model
ef7f038 -
fix: use bfloat16 on CPU to halve memory usage (~6 GB vs ~12 GB)
float32 exceeded HF Spaces 16 GiB limit. bfloat16 supported on PyTorch CPU since 1.12.64b796f -
chore: update web/package-lock.json for Node 22
b7f8db8 -
refactor: restructure repo into api/ proxy/ web/ training/ docs/
- model/voxtral-server/ -> api/ - demo/server/ -> proxy/ - demo/ -> web/ - src/ + scripts/ -> training/ - .context/ + model_card/ -> docs/ - Dockerfile and supervisord.conf paths updated - README rewrittena265585 -
feat: local Voxtral inference + FER ImageNet norm fix
c631126 -
fix: ImageNet normalization in FER preprocessing
ffde148 -
fix: RefObject<HTMLVideoElement|null> for React 19 TS build
f7f447d -
fix: RefObject type for React 19 (TS build fix)
f37f11d -
feat: add video FER pipeline with full-stack support
0a64934 -
chore: sync master to HF Spaces (skip binary history)
0b6ab33 -
docs: update READMEs for evoxtral external API proxy
- Root README: switch model ref to YongkangZOU/evoxtral-lora (Modal), update architecture diagram to show external API, remove GPU requirement - Model README: rewrite to reflect proxy architecture, document expression tag emotion parsing, update health/env variable fields Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>a80f74e -
fix: always convert audio to WAV before forwarding to evoxtral API
The external Modal API doesn't support WebM/OGG/M4A formats. Convert all uploads to 16kHz mono WAV via ffmpeg before calling the API. For transcribe-diarize, the converted WAV is reused for VAD segmentation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>e31fc14 -
feat: switch to external evoxtral Modal API (no local model)
- Replace local VoxtralForConditionalGeneration+PEFT inference with HTTP calls to https://yongkang-zou1999--evoxtral-api-evoxtralmodel-web.modal.run - Remove torch, transformers, peft, accelerate, mistral-common from requirements.txt - Add httpx for async HTTP client - Parse inline expression tags ([laughs], [sighs], etc.) from transcription to derive emotion/valence/arousal per segment - Remove model weight caching from Dockerfile (no local weights needed) - Server startup is now instant (no model loading) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>8e1d7bd -
fix: bypass apply_chat_template, use processor(audio) directly
f07c505 -
fix: remove add_generation_prompt (not supported by MistralCommonTokenizer)
29a067f -
fix: pin transformers==4.54.0 to avoid mm_load_kwargs bug
61ec5bb -
debug: expose /api/debug-inference via Node proxy
fbb0f59 -
debug: add /debug-inference endpoint
09b4141 -
debug: add traceback logging + fix dtype cast + add_generation_prompt
3d75979 -
debug: add detailed timing logs to _transcribe
06979e1 -
feat: switch to Voxtral-Mini-3B-2507 + evoxtral-lora adapter
- Load base model (VoxtralForConditionalGeneration) then apply PeftModel LoRA from YongkangZOU/evoxtral-lora - Inference uses apply_chat_template conversation format - Add peft>=0.18.0 to requirements; bump transformers to >=4.54.0 - Extract _transcribe() helper; update warm-up accordingly Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>04ce75c -
fix: use bfloat16 on CPU to halve memory usage (16GB→8GB)
d0f985d -
fix: remove resemblyzer dep (unused, webrtcvad needs gcc)
7c6cdec -
feat: add HuggingFace Spaces Docker deployment
- Dockerfile: python:3.11-slim + Node 22, builds all 3 layers - nginx.conf: routes /api/* and /health to Node proxy (3000), everything else to Next.js standalone (3030); listens on 7860 - supervisord.conf: manages model + server + frontend + nginx - .dockerignore: excludes node_modules, .venv, .next, .env.local - next.config.ts: enable standalone output for Docker - README.md: add HF Spaces YAML frontmatter (sdk: docker, port: 7860) NEXT_PUBLIC_API_URL="" at build time → relative /api/* URLs → nginx proxies to Node → Node proxies to Python model. Model weights cached in /data/models (HF Spaces persistent storage). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>cb1bd97 -
Merge pull request #3 from aytoast/feat/model
lgy1159Unverified signaturerefactor: replace speaker clustering with VAD sentence segmentationf55ad8e -
docs: update READMEs to reflect single-speaker VAD segmentation
Remove speaker diarization, num_speakers, pyannote/HF_TOKEN references. All segments are SPEAKER_00; segmentation is VAD-based by sentence boundaries. diarization_method is now "vad". Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>ed75654 -
fix: distribute text by sentence boundaries instead of character proportion
Split transcript at punctuation marks before assigning to VAD segments, so sentences are never cut mid-phrase. Falls back to character-level for text without punctuation. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>ca55dbc -
refactor: replace speaker clustering with VAD sentence segmentation
Single-speaker mode: segments by silence (0.3s threshold), each segment gets independent emotion analysis. Removes resemblyzer/MFCC clustering. Also fixes MPS device (float16), adds warm-up, and CJK text distribution. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>4c097b5