Commit History

  1. Hand motion continuity to the next chunk from the last SHOWN frame, not the end of the computed chunk⁠

    JasonZhai-9936 +1: Claude Opus 5.5
    0e35357
  2. Stop pre-rendering seconds of idle between TTS chunks of a reply⁠

    JasonZhai-9936 +1: Claude Opus 5.5
    48184a3
  3. Render FLOAT on a high-priority CUDA stream so Breeze tail-chunk generation can't starve it⁠

    JasonZhai-9936 +1: Claude Opus 5.5
    d3a6834
  4. Fix FLOAT streamer crashing during Breeze CUDA-graph warmup⁠

    JasonZhai-9936 +1: Claude Opus 5.5
    ba6b49a
  5. Enable Breeze's CUDA-graph fast path by default (eager was slower than real time on the A100, ~10s gaps between chunks); fall back to eager if graph warmup fails⁠

    JasonZhai-9936 +1: Claude Opus 5.5
    fe31744
  6. Load Breeze TTS after FLOAT instead of concurrently — parallel transformers imports raced in its non-thread-safe lazy module and broke FLOAT's import (no video)⁠

    JasonZhai-9936 +1: Claude Opus 5.5
    b65b72c
  7. Add local Breeze TTS 2 voice cloning (in-process, like FLOAT)⁠

    JasonZhai-9936 +1: Claude Opus 5.5
    e3bc1ff
  8. Raise voice-mode end-of-speech silence timeout from 1.0s to 1.8s — it was cutting users off at natural mid-sentence pauses⁠

    JasonZhai-9936 +1: Claude Opus 5.5
    f8bee88
  9. Revert "Add /api/timeline" — not wanted⁠

    JasonZhai-9936 +1: Claude Opus 5.5
    945c904
  10. Add /api/timeline: compact per-turn latency/sync summary (last 10 turns, ?full=1 for every line) so results can be copied without scraping the Space log viewer⁠

    JasonZhai-9936 +1: Claude Opus 5.5
    059172b
  11. Cut first-response latency and stop A/V lag accumulating across chunks⁠

    JasonZhai-9936 +1: Claude Opus 5.5
    8458b91
  12. Stop counting frame-buffer backpressure as render time — the SLOWER THAN REAL TIME warning fired whenever the buffer was full, i.e. when rendering was actually ahead⁠

    JasonZhai-9936 +1: Claude Opus 5.5
    b84ee66
  13. Copy timeline.py into the image — the Space crashed on startup with ModuleNotFoundError: No module named 'timeline'⁠

    JasonZhai-9936 +1: Claude Opus 5.5
    6b4da85
  14. Add per-turn timeline logging: every stage of a reply (LLM, per-chunk TTS, feature encode, speech render, WS delivery, client audio start/end) logs in order as [T<turn> +<secs>] so sync/latency problems can be read straight from a copied log⁠

    JasonZhai-9936 +1: Claude Opus 5.5
    abc34f2
  15. Remove unused idle1/idle4/idle5 videos⁠

    JasonZhai-9936 +1: Claude Opus 5.5
    8388ff5
  16. Demote idle-chunk render logs to DEBUG so copied logs aren't flooded; keep speech-chunk timings at INFO⁠

    JasonZhai-9936 +1: Claude Opus 5.5
    f4e3788

  1. Fix audio_duration reading bogus placeholder frame counts from Groq's WAV headers, which froze the chat text-reveal for hours and permanently wedged isProcessing (blocking every send after, including post-barge-in auto-submit); clamp the client-side duration defensively too

    JasonZhai-9936
    7deff2a
  2. Cut per-chunk ffprobe subprocess overhead, fix STT audio being dropped after barge-in, debounce VAD silence-timer against ambient noise, trim WS-MIC log spam

    JasonZhai-9936
    edc63ac

  1. Fix barge-in race: discard TTS chunks that finish and try to inject after an interrupt/new message already invalidated them

    JasonZhai-9936
    8e5d564
  2. Auto-fallback to edge-tts when Groq TTS fails; add voice-engine dropdown to pick the provider ahead of time

    JasonZhai-9936
    41f6708
  3. Fix WAV concat crash on Orpheus multi-piece TTS, ensure speech_end fires even when the final chunk fails, recalibrate barge-in threshold

    JasonZhai-9936
    81a267d
  4. Add barge-in: speaking while the avatar responds interrupts it and starts a new turn

    JasonZhai-9936
    b6f2498
  5. Fix voice mode getting permanently stuck muted: don't set awaitingFinal if the finalize message can't actually be sent, add timeout safety nets, clear stale state on mic WS reconnect

    JasonZhai-9936
    b5dbe54
  6. Add raw pre-processing worklet input peak logging; use near-silent instead of exactly-zero gain for the destination keep-alive path

    JasonZhai-9936
    7436bf2
  7. Fix mic capture producing silent PCM: stop forcing AudioContext sampleRate for live mic input, resample to 16kHz in the worklet instead

    JasonZhai-9936
    13295a6
  8. Add mic peak-amplitude logging; disable audio processing constraints that may be gating out speech

    JasonZhai-9936
    87818a4
  9. Add WS-MIC diagnostic logging; fix worklet not being pulled by the audio render graph

    JasonZhai-9936
    b8ee5ad
  10. Add hands-free continuous voice mode with client-side VAD auto-submit

    JasonZhai-9936
    39407cd
  11. Add Groq Orpheus TTS provider, switch Amara to it

    JasonZhai-9936
    c9fb792
  12. Cut avatar response latency: preempt idle frame rendering immediately when speech arrives, cap sentence merging in TTS chunking

    JasonZhai-9936
    3d8aa29
  13. Log per-chunk GPU render timing in the FLOAT generation loop

    JasonZhai-9936
    62e5c7f
  14. Pipeline chat_stream TTS in sentence chunks instead of synthesizing the whole reply upfront

    JasonZhai-9936
    e96768c
  15. Reorder Dockerfile layers so checkpoints copy stays cached across code pushes

    JasonZhai-9936
    14ed692
  16. Switch LLM provider from Cerebras to Groq

    JasonZhai-9936
    e8821d4
  17. uptated edgetts names

    JasonZhai-9936
    33dac3f
  18. uptated edgetts names

    JasonZhai-9936
    697a2b7
  19. initial local commit test

    JasonZhai-9936
    338bd3c

  1. Upload ref.png

    Verified signature
    60f41cc

  1. Update app.py

    Verified signature
    eb15e1f
  2. Update app.py

    Verified signature
    9a501b7
  3. Update app.py

    Verified signature
    cf868ab
  4. Update tts.py

    Verified signature
    c62d458
  5. Update Dockerfile

    Verified signature
    b2534c3
  6. Update app.py

    Verified signature
    35331f3
  7. Update tts.py

    Verified signature
    60f33c5
  8. Upload 3 files

    Verified signature
    1dbb0b6
  9. Upload 3 files

    Verified signature
    536e583
  10. Update app.py

    Verified signature
    3aa2db9
  11. Update tts.py

    Verified signature
    f91cb37
  12. Update app.py

    Verified signature
    a9e691e