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.6.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.6.1
Choose a head ref
  • 5 commits
  • 55 files changed
  • 2 contributors

Commits on Oct 5, 2026

  1. feat: add parakeet_capi_speaker_embed_pcm to return a voice embedding

    A host that keeps voices in its own store had no way to get an
    embedding out of a speaker context: the encoder was only reachable
    through enroll and identify. Add parakeet_capi_speaker_embed_pcm, which
    reuses the helper behind enroll and returns a malloc'd L2-normalized
    vector, and parakeet_capi_free_floats as its documented pair.
    
    Non-16 kHz input is resampled as enroll does. On error the outputs are
    NULL and 0 and the message is on the speaker context. Additive: keeps
    ABI v10, callers probe the symbol.
    
    Assisted-by: Claude:claude-sonnet-5-5 [Claude Code]
    mudler committed Oct 5, 2026
    Configuration menu
    Copy the full SHA
    e0d2d4a View commit details
    Browse the repository at this point in the history
  2. test: cover parakeet_capi_speaker_embed_pcm

    Check argument errors and output reset, dimension against
    parakeet_capi_speaker_dim, determinism, resampling, and that one voice
    scores higher than two different voices. Run it on a standalone encoder
    GGUF and on a bundle voice component, and check the two give the same
    embedding. The model checks skip (77) without the GGUFs.
    
    Assisted-by: Claude:claude-sonnet-5-5 [Claude Code]
    mudler committed Oct 5, 2026
    Configuration menu
    Copy the full SHA
    f36fddc View commit details
    Browse the repository at this point in the history
  3. docs: describe speaker embeddings from the C API

    Document parakeet_capi_speaker_embed_pcm and parakeet_capi_free_floats
    in speaker.md, note in bundle.md that a voice component embeds in the
    same space as the standalone encoder, and add a README entry.
    
    Assisted-by: Claude:claude-sonnet-5-5 [Claude Code]
    mudler committed Oct 5, 2026
    Configuration menu
    Copy the full SHA
    2f9e8ea View commit details
    Browse the repository at this point in the history

Commits on Oct 6, 2026

  1. feat: opt-in VAD run gate for the Ultra/Redux heads, and the real-rec…

    …ording VAD evidence (#96)
    
    * feat: add an opt-in run gate to the VAD segmenter
    
    The Ultra and Redux heads call steady noise speech, but a noise run
    sits on a plateau while a speech run sits high. Add
    SegmenterOpts::run_gate (default 0 = off): a speech run, a stretch of
    frames with p >= threshold found before bridging, is dropped when the
    median of its frame probabilities is below the gate. A median equal to
    the gate keeps the run. The gate acts first, so dropped frames are
    silence for bridging, min_speech, pauses and trim. It works for any
    detector and frame size, in both modes. The streaming event tracker has
    no run median and ignores it.
    
    Expose it as the "run_gate" key (a number in [0, 1)) of the VAD options
    JSON, so the vad functions and the transcribe functions that take VAD
    options accept it, and as --run-gate on `parakeet-cli vad` and
    --vad-run-gate on `transcribe --vad`. A VAD stream refuses a non-zero
    value instead of ignoring it. With the gate off the output is unchanged
    byte for byte.
    
    Tests use synthetic probability streams at 0.08 s and 0.032 s frames
    with exact expected runs, the boundary, bridged gaps, a low median under
    a high peak, the trim, the option parser and CLI errors. A model test
    runs the gate on a clip with a seeded noise stretch for the head slice,
    Ultra, Redux and Silero.
    
    Assisted-by: Claude:claude-sonnet-5-5 [Claude Code]
    
    * docs: the run gate, and the VAD study on real recordings
    
    Describe the run gate in docs/vad.md: the definition of the run median,
    how to use it, what it costs and what it does not do (music still
    triggers a head, and it is not a noise rejector).
    
    Add a Real recordings section to docs/vad-benchmarks.md: 59 recordings
    with human labels and 2.6 h without speech. It reports frame F1 untuned
    and tuned, the reference noise and a collar test, false alarms on audio
    without speech, the audio the decoder receives, word error rate on clean
    talks and on composites with inserted music and noise, the cost of the
    30 s hard cut, and the limits.
    
    Update the guidance. Silero stays the always-on gate, the Redux head
    suits long recordings that are mostly speech, and the gate is opt-in.
    The fusion gain of the synthetic experiment did not hold on real
    recordings (+0.10 and +0.46 F1 points, no word error rate gain), so
    fusion is not built.
    
    Assisted-by: Claude:claude-sonnet-5-5 [Claude Code]
    
    * scripts: add the real-recording VAD study
    
    Add the scripts of the study (data fetch, probability dump, a Python
    replica of the segmenter, frame and decoder scoring, WER reports) and the
    small result tables, with a README on how to rerun them. Paths are
    environment variables. verify_gate.py checks the C++ run gate against the
    Python gate on stored probabilities. No audio, probabilities or models.
    
    Assisted-by: Claude:claude-sonnet-5-5 [Claude Code]
    
    ---------
    
    Co-authored-by: Ettore Di Giacinto <[email protected]>
    localai-org-maint-bot and mudler authored Oct 6, 2026
    Configuration menu
    Copy the full SHA
    9a28a3c View commit details
    Browse the repository at this point in the history

Commits on Oct 7, 2026

  1. fix: use 64-bit seek/tell that MSVC has in the bundle loader (#97)

    fseeko and ftello are POSIX only, so the Windows cpu, cuda and vulkan
    builds of v0.6.0 failed with C3861 in model_loader.cpp and the release
    job was skipped. Wrap them in two small helpers that call _fseeki64 and
    _ftelli64 on Windows and keep fseeko/ftello elsewhere.
    
    Assisted-by: Claude:claude-sonnet-5-5 [Claude Code]
    
    Co-authored-by: Ettore Di Giacinto <[email protected]>
    localai-org-maint-bot and mudler authored Oct 7, 2026
    Configuration menu
    Copy the full SHA
    5c9b0fb View commit details
    Browse the repository at this point in the history
Loading