Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: mudler/parakeet.cpp
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v0.2.0
Choose a base ref
...
head repository: mudler/parakeet.cpp
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v0.3.0
Choose a head ref
  • 3 commits
  • 25 files changed
  • 5 contributors

Commits on Jun 12, 2026

  1. feat(capi): ABI v5 - surface <EOU> vs <EOB> distinction across the C …

    …boundary (#24)
    
    The streaming C API conflated end-of-utterance and backchannel: the feed
    eou_out flag and the JSON "eou" field were 1 for either token, so a voice
    agent could not tell "the user yielded the turn" (<EOU>, respond) from
    "the user acknowledged while listening" (<EOB>, do not treat as a turn).
    
    - parakeet_capi_stream_feed's *eou_out is now an event bitmask
      (PARAKEET_EVENT_EOU | PARAKEET_EVENT_EOB) instead of an any-event 0/1
    - the streaming JSON documents carry separate "eou"/"eob" 0/1 flags plus
      an "events" array ({"type":"eou"|"eob","frame","t"}) with per-event
      timestamps
    - new parakeet_capi_stream_drain_events / parakeet_capi_free_events
      expose typed per-event records (token, is_eob, encoder_frame,
      time_sec) on the flat API; the queue is shared with the JSON entry
      points
    - StreamingSession gains a non-draining events() peek; the C layer
      watermarks the queue to attribute events to one feed pass (a feed can
      span several encoder chunks, which last_chunk_had_eou() cannot express)
    - decoder reset-on-<EOU>/<EOB> is deliberately unchanged (matches NeMo's
      reference driver); the distinction is a downstream turn-taking signal
    - tests: both C-API stream tests gain a two-utterance-clip phase (shared
      builder in tests/stream_clips.hpp, same construction as
      gen_stream_reset_baseline.py) asserting the typed mid-stream <EOU> and
      exact flag/mask agreement with the drained queue
    
    Verified against mudler/parakeet-cpp-gguf realtime_eou_120m-v1-f16: all
    61 ctest targets pass; the two-utterance clip yields the mid-stream
    <EOU> at t=7.84s with mask=PARAKEET_EVENT_EOU.
    
    Assisted-by: Claude:claude-fable-5 [Claude Code]
    richiejp authored Jun 12, 2026
    Configuration menu
    Copy the full SHA
    503d7ec View commit details
    Browse the repository at this point in the history
  2. build(cuda): enable GGML_CUDA_GRAPHS on CUDA builds (#26)

    ggml leaves GGML_CUDA_GRAPHS off by default. Turning it on lets the CUDA
    backend capture and replay the compute graph, a small but free speedup
    (about 1% measured on a GB10: 1.4% on tdt-1.1b, 0.4% on tdt-0.6b-v3, and
    never negative across interleaved runs).
    
    Enable it whenever we forward CUDA so every CUDA build (docker, release,
    local) inherits it. The runtime kill-switch GGML_CUDA_DISABLE_GRAPHS=1
    still disables it for A/B testing.
    
    Co-authored-by: Ettore Di Giacinto <[email protected]>
    Co-authored-by: Claude Opus 4.8 <[email protected]>
    3 people authored Jun 12, 2026
    Configuration menu
    Copy the full SHA
    b8012f1 View commit details
    Browse the repository at this point in the history

Commits on Jun 17, 2026

  1. OpenAI-compatible HTTP server + docker image (#8)

    * feat(server): OpenAI-compatible transcription server example
    
    Squashed rebase of the worktree-openai-server branch (PR #8) onto current
    master. Adds examples/server (httplib-based POST /v1/audio/transcriptions),
    model resolver/fetcher, OpenAI response formatter, and unit + e2e tests.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
    
    * feat(docker): publish a dedicated parakeet-server image
    
    Split the Dockerfile into a shared build stage plus two runtime targets:
    runtime (cli, default, unchanged) and runtime-server (entrypoint
    parakeet-server --host 0.0.0.0, EXPOSE 8080, curl for alias fetch). The
    docker workflow now builds and publishes both ghcr images, cli and server,
    for each (variant, arch); the server build reuses the cli build stage so
    ggml compiles once per job.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
    
    * docs: document the OpenAI server and docker images; point to LocalAI for production
    
    Add an OpenAI-compatible server section to the main README (build, curl and
    OpenAI-client usage) and extend the Docker section to cover the new
    parakeet.cpp-server image alongside the cli. Note LocalAI as the production
    path in both the main README and examples/server/README.md.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
    
    * ci: add server-e2e job driving the real parakeet-server over HTTP
    
    Builds parakeet-server and runs tests/server_e2e.sh (PARAKEET_SERVER_E2E=1):
    fetches the ~125 MB tdt_ctc-110m-q4_k model by alias, starts the server, and
    hits POST /v1/audio/transcriptions with a real WAV in json/text/verbose_json
    (plus word timestamps), checking the transcription and the 400 paths. Runs on
    pull_request and workflow_dispatch, like closed-loop; no NeMo/Python venv.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
    
    ---------
    
    Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>
    mudler and claude authored Jun 17, 2026
    Configuration menu
    Copy the full SHA
    1055fb6 View commit details
    Browse the repository at this point in the history
Loading