Skip to main content

OmniVAD — Cross-platform Voice Activity Detection and Audio Event Detection (based on FireRedVAD)

Project description

OmniVAD

PyPI npm License

English | 中文

Cross-platform toolkit for FireRedVAD — SOTA voice activity detection and audio event detection.

Three models, one toolkit, runs everywhere:

Model What it does Output
VAD Speech detection (non-stream) Speech timestamps
Stream-VAD Real-time speech detection (frame-by-frame) Per-frame speech probability
AED Audio event detection (non-stream) Speech / Singing / Music timestamps

All models are based on DFSMN architecture, ~2.2MB each (~588K params), support 100+ languages.

Packages

Python (omnivad/)

PyPI package with native C bindings (ncnn). Models bundled in wheel.

pip install omnivad

CLI:

omnivad audio.wav                        # VAD + AED → audio.TextGrid
omnivad audio.wav -o out.json            # Output as JSON
omnivad audio.wav -o out.srt             # Output as SRT
omnivad audio.wav -o out.vtt             # Output as WebVTT
omnivad audio.wav -f srt                 # Format flag (textgrid/json/srt/vtt)
omnivad audio.wav -m vad                 # VAD only
omnivad audio.wav -m aed                 # AED only (speech/singing/music)
omnivad long.wav --chunk 600 --overlap 2 # Chunked processing for large audio
python -m omnivad audio.wav              # Also works

Python API:

from omnivad import OmniVAD, OmniStreamVAD, OmniAED
import numpy as np

vad = OmniVAD()

# File path — auto-loads as float32 [-1,1]
result = vad.detect("audio.wav")
# {'duration': 2.24, 'timestamps': [(0.26, 1.82)]}

# Float32 array [-1.0, 1.0] — from soundfile, torchaudio, librosa
result = vad.detect(float32_array)

# Int16 array — from raw WAV, microphone PCM
result = vad.detect(np.array([...], dtype=np.int16))

# Large audio — chunked processing with overlap
# overlap_seconds must be smaller than chunk_seconds
result = vad.detect("long.wav", chunk_seconds=600, overlap_seconds=2)

# Stream VAD — real-time, feed 160 samples (10ms) at a time
# Accepts float32 in [-1, 1] (Web Audio, soundfile, torch) or int16 PCM
svad = OmniStreamVAD()
frame = None
while frame is None:
    frame = svad.process(pcm_160)  # np.float32 or np.int16
# StreamResult(time=0.420s, confidence=0.95, is_speech=True)

# FastClone — share model weights, minimal memory per stream
clone = svad.clone()  # instant, ~0 memory overhead
clone.process(pcm_160)  # fully independent state

# AED — speech + singing + music
aed = OmniAED()
events = aed.detect("audio.wav")
# {'duration': 22.0, 'events': {'speech': [...], 'singing': [...], 'music': [...]}}

Platforms: macOS (arm64/x86_64), Linux (x86_64/aarch64), Windows (x86_64)

C/C++ Native Library (native/)

Unified C API with ncnn backend. Single header, single library.

#include "omnivad.h"

int err = OMNI_OK;

// VAD — whole audio to speech segments
OmniVadHandle vad = omni_vad_create("vad.omnivad", &err);
omni_vad_detect_int16(vad, pcm, num_samples, &config, &segments, &count);
// segments[0] = { start: 0.44, end: 1.82 }

// Stream VAD — real-time, 10ms per frame
// Two entries: omni_stream_vad_process (float [-1,1]), _int16 (int16 PCM)
OmniStreamVadHandle svad = omni_stream_vad_create("stream-vad.omnivad", 0.5f, &err);
omni_stream_vad_process(svad, float_160_samples, 160, &result);   // FP32
omni_stream_vad_process_int16(svad, pcm_160_samples, 160, &result); // int16

// FastClone — share model weights across streams
OmniStreamVadHandle clone = omni_stream_vad_clone(svad, &err);
omni_stream_vad_process_int16(clone, other_pcm, 160, &result);  // independent state

// AED — speech + singing + music detection
OmniAedHandle aed = omni_aed_create("aed.omnivad", &err);
omni_aed_detect_int16(aed, pcm, num_samples, &config, &segments, &count);
// segments[0] = { start: 0.09, end: 12.32, cls: OMNI_AED_MUSIC }

Build:

# Prerequisites: cmake, ncnn (brew install ncnn)
cd native
cmake -B build && cmake --build build -j$(nproc)

# Test
./build/test_all ../models/ audio.wav

Platforms: macOS (arm64/x86_64), Linux (x86_64/aarch64), Windows (x86_64), Android (armeabi-v7a/arm64-v8a)

TypeScript/JavaScript (packages/omnivad/)

Works in both browser and Node.js via ncnn WebAssembly. Zero dependencies, models bundled.

import { OmniVAD, OmniStreamVAD, OmniAED } from 'omnivad';

// Non-stream VAD — models loaded automatically from bundled WASM
const vad = await OmniVAD.create();
const result = vad.detect(audioFloat32Array);  // Float32Array [-1.0, 1.0]
// { duration: 2.32, timestamps: [[0.44, 1.82]] }

// Also accepts Int16Array (raw PCM)
const result2 = vad.detect(pcmInt16Array);

// Stream VAD — frame-by-frame or full-audio batch mode
const svad = await OmniStreamVAD.create();
// processFrame() accepts Float32Array [-1, 1] or Int16Array — dispatch by dtype
const frame = svad.processFrame(float32_160);  // null until enough audio is buffered
const full = svad.detectFull(audioFloat32Array);
// { probabilities: Float32Array(...), numFrames: 98, duration: 1.0 }

// AED — speech + singing + music
const aed = await OmniAED.create();
const events = aed.detect(audioFloat32Array);
// { duration: 22.0, events: { speech: [...], singing: [...], music: [...] }, ratios: { ... } }

Build:

cd packages/omnivad
pnpm install && pnpm build
# Output: dist/index.js + dist/index.cjs + dist/index.d.ts + dist/wasm/*

Thread Safety

Component Shared handle Independent handles Notes
OmniVAD Safe Safe ncnn::Net is read-only; each call creates a local Fbank and Extractor
OmniAED Safe Safe Same architecture as VAD
OmniStreamVAD Unsafe Safe Mutable internal state (audio_buffer, cache, frame_offset)

Guidelines:

  • OmniVAD and OmniAED instances can be safely shared across threads for concurrent inference. The Python workers parameter in detect(..., workers=N) already uses this pattern.
  • OmniStreamVAD instances must not be shared across threads. Create one instance per thread for parallel streaming.
  • Handle creation (omni_*_create) should be done sequentially — ncnn's model loading is not designed for highly concurrent initialization.
  • Never call close() / destroy() on a handle while another thread is using it.

Running thread-safety tests:

# Python
pytest tests/test_thread_safety.py -v

# C++ (requires ncnn)
./native/build/test_thread_safety models/ tests/data/hello_en.wav [threads] [repeats]

Audio Input

High-level APIs accept 16kHz mono audio only. Two formats, same convention across all 3 model types and all 3 layers (C / Python / TypeScript):

  • float32 / Float32Array in [-1, 1] (Web Audio, soundfile, torch)
  • int16 / Int16Array PCM (WAV, microphone)

Wrappers dispatch by dtype to the matching C entry — never scale or convert in Python/JS. All scaling lives in the C library: the f32 entry multiplies by 32768.0f, the _int16 entry casts to float.

Method FP32 entry int16 entry
OmniVAD.detect / detect_probs omni_vad_detect[_probs] omni_vad_detect[_probs]_int16
OmniAED.detect / detect_probs omni_aed_detect[_probs] omni_aed_detect[_probs]_int16
OmniStreamVAD.process omni_stream_vad_process omni_stream_vad_process_int16
OmniStreamVAD.detect_full omni_stream_vad_detect_full omni_stream_vad_detect_full_int16

For exact contracts see native/include/omnivad.h.

Audio Pipeline

16kHz PCM → Fbank (80-dim, 25ms window, 10ms shift) → CMVN → DFSMN → Sigmoid → Post-processing → Segments
                     Povey window                        μ/σ    ~2.2MB   [0,1]    4-state machine
                     pre-emphasis 0.97                                            merge/split/extend

Streaming VAD — OmniStreamVAD

For long audio (live streams, hours-long recordings, real-time captioning), OmniStreamVAD processes audio frame-by-frame and emits segment-boundary events on the same call that confirms the boundary — bit-identical to upstream FireRedVAD's FireRedStreamVad.

Each successful process() call returns a result with both per-frame probabilities AND segment-boundary flags:

Field Meaning
confidence raw model probability [0, 1]
smoothed_prob causal moving-average over smooth_window_size frames
is_speech smoothed_prob >= threshold
is_speech_start True on the frame that confirms a new SPEECH segment
is_speech_end True on the frame that confirms a SPEECH segment end
frame_idx 1-based frame index (multiply by 0.01 for seconds)
speech_start_frame 1-based segment start (when is_speech_start)
speech_end_frame 1-based segment end (when is_speech_end)

Configuration (defaults match upstream FireRedVAD)

Parameter Default Meaning
threshold 0.5 Speech activation threshold
smooth_window_size 5 Causal moving-average window (frames)
pad_start_frame 5 Extend confirmed segment START backward by N frames
min_speech_frame 8 Min continuous speech frames to confirm START (~80ms)
max_speech_frame 2000 Force-split when SPEECH-state count hits this (~20s)
min_silence_frame 20 Min continuous silence frames to confirm END (~200ms)

Python

from omnivad import OmniStreamVAD
import numpy as np

vad = OmniStreamVAD()                              # upstream defaults
pcm = np.fromfile("speech.pcm", dtype=np.int16)

for i in range(0, len(pcm), 160):                  # 10ms chunks
    result = vad.process(pcm[i : i + 160])
    if result is None:
        continue
    if result.is_speech_start:
        print(f"START @ {result.speech_start_frame * 0.01:.2f}s")
    if result.is_speech_end:
        print(f"END   @ {result.speech_end_frame * 0.01:.2f}s")

# Or get [(start_sec, end_sec), ...] in one call:
segments = OmniStreamVAD().detect_segments("speech.wav")

TypeScript

import { OmniStreamVAD } from "omnivad";

const vad = await OmniStreamVAD.create();
for (let i = 0; i + 160 <= pcm.length; i += 160) {
    const result = vad.processFrame(pcm.subarray(i, i + 160));
    if (!result) continue;
    if (result.isSpeechStart) {
        console.log(`START @ ${(result.speechStartFrame * 0.01).toFixed(2)}s`);
    }
    if (result.isSpeechEnd) {
        console.log(`END   @ ${(result.speechEndFrame * 0.01).toFixed(2)}s`);
    }
}

Pairing with merge_chunks

OmniStreamVAD emits raw VAD segments. To pack them into Whisper-sized 30s chunks for downstream ASR, feed the emitted [start, end] pairs to merge_chunks (see next section).

Chunking — merge_chunks / mergeChunks

After VAD produces a list of speech (start, end) segments, the chunking utility groups them into duration-bounded chunks suitable for downstream ASR / forced alignment / TTS. It is a pure function with no model dependency — Python uses ctypes, TypeScript uses Emscripten WASM, and C calls the native function directly. All three bindings share a single C implementation in native/src/chunking.cpp.

from omnivad import merge_chunks
chunks = merge_chunks(timestamps, max_chunk_secs=30.0, mode="greedy")
import { mergeChunks } from "omnivad";
const chunks = await mergeChunks(timestamps, { maxChunkSecs: 30.0, mode: "longest_gap" });

Pipeline (5 steps; Steps 1–2 and 4–5 are shared by both modes)

input (sorted segments)
  │
  ├─ Step 1: drop segments with duration < min_speech_secs
  │
  ├─ Step 2: pre-merge consecutive segments with gap < min_silence_secs
  │          (cascades; takes max(end) on overlap)
  │
  ├─ Step 3: pack into chunks  ─┬─ mode = "greedy"
  │                              │     sequential append; split when next
  │                              │     would exceed max_chunk_secs OR gap > max_gap_secs
  │                              │
  │                              └─ mode = "longest_gap"
  │                                    recursive split at the longest gap
  │                                    until every chunk's span ≤ max_chunk_secs
  │
  ├─ Step 4: equal hard-split any chunk still longer than max_chunk_secs
  │          (only triggers when a single segment alone exceeds max_chunk_secs)
  │
  └─ Step 5: apply pad_onset_secs (clamped to ≥ 0) and pad_offset_secs
             output chunks: (start, end, seg_start_idx, seg_count)

Mode comparison

Property greedy (default) longest_gap
Strategy Sequential append until next overflow Recursive split at longest internal gap until each chunk fits max_chunk_secs
Honors max_chunk_secs Yes — hard upper bound Yes — recursion stops when chunk span ≤ max_chunk_secs
Boundary location First overflow point Longest pause inside the over-long span
Honors max_gap_secs Yes — split at first gap > max_gap_secs Yes — recursion also stops only when no internal gap exceeds max_gap_secs
Single seg > max_chunk_secs Step 4 equal hard-split Same — Step 4 fallback
Determinism Deterministic Deterministic; leftmost wins on tie
Recommended for Whisper / whisperX-style ASR (fixed-length input, padded to 30s) Variable-length-input models — forced alignment, TTS, encoder-style ASR. Splits at natural pauses; no fixed-length padding required.

Example with the same input, both modes (max_chunk_secs=20):

Input (max_chunk_secs = 20):
  seg 0 = (0, 5)
  seg 1 = (8, 10)     gap from seg 0 = 3
  seg 2 = (20, 25)    gap from seg 1 = 10   ← longer

greedy
  start cur = (0, 5)
  accept seg 1            → cur = (0, 10)   [length 10 ≤ 20 ✓]
  next seg 2 would_exceed:  25 - 0 = 25 > 20  → SPLIT
  chunks: [(0, 10, 0, 2), (20, 25, 2, 1)]

longest_gap
  span = 25 > 20            → must split
  longest gap = 10 at idx 1 → cut between seg 1 and seg 2
    left  = [seg 0, seg 1]  span = 10 ≤ 20 ✓ → keep
    right = [seg 2]         span = 5  ≤ 20 ✓ → keep
  chunks: [(0, 10, 0, 2), (20, 25, 2, 1)]

(In this minimal example both modes happen to agree. They diverge whenever the longest gap is not the first overflow point.)

seg_start_idx / seg_count semantics

These index into the post-Step-1+Step-2 view of the input — segments dropped by min_speech_secs and pre-merged by min_silence_secs are NOT in the indexing space. Both modes follow this convention.

Defaults

omni_chunk_config_default() (C / default_chunk_config() Python / DEFAULT_CHUNK_CONFIG TS) returns:

field default source
max_chunk_secs 30.0 seconds; matches Whisper's 30s input window
max_gap_secs INFINITY disabled
pad_onset_secs / pad_offset_secs 0.04 / 0.04
min_speech_secs 0.0 pairs with VAD min_speech_frames
min_silence_secs 0.20 matches VAD min_silence_frames=20 @ 10ms shift
mode OMNI_CHUNK_GREEDY backward-compatible

Heads-up — Python convenience defaults differ. The Python kwargs of merge_chunks(...) use zeros for pad_onset_secs, pad_offset_secs, min_silence_secs (so the simplest call gives raw output). To match the canonical defaults, use the values returned by default_chunk_config(). See tests/test_chunking.py::test_python_convenience_defaults_differ_from_canonical.

Whisper / WhisperX-style ASR pipeline

OmniVAD (whole-audio, batch) + merge_chunks(mode="greedy") is the 1:1 equivalent of WhisperX's Binarize(max_duration=chunk_size) + greedy packing. Use this recipe when feeding chunks into Whisper-family ASR models that expect a fixed 30s input window:

from omnivad import OmniVAD, merge_chunks

vad = OmniVAD()                              # threshold=0.4 default — safer for Whisper
result = vad.detect("long-audio.wav")        # whole-audio batch VAD

chunks = merge_chunks(
    timestamps=result["timestamps"],
    max_chunk_secs=30.0,                     # Whisper's input window
    mode="greedy",                           # WhisperX behavior
    pad_onset_secs=0.04,
    pad_offset_secs=0.04,
    min_silence_secs=0.20,                   # matches VAD min_silence_frames=20
)
# Each chunk: { start, end, seg_start_idx, seg_count }
# Slice the audio at [start, end] and feed each slice to Whisper.

Notes:

  • Keep the default threshold=0.4. Whisper tolerates extra padding silence but is sensitive to clipped word edges (raising to 0.5 risks dropping weak word-initial/final consonants and triggering hallucinations).
  • Do not use mode="longest_gap" here — that mode targets variable-length-input models (forced alignment, TTS), not WhisperX.
  • For very long audio (>1 hour), pass chunk_seconds=600, overlap_seconds=2 to vad.detect(...) to limit peak memory.

Model Files

Prebuilt .omnivad bundles used by the Python package, TypeScript package, and local examples are already included in this repo under models/.

You only need to download upstream FireRedVAD checkpoints if you want to re-export ONNX or regenerate the native assets yourself.

# Download upstream PyTorch models + export to ONNX
pip install fireredvad
python -m fireredvad.bin.export_onnx --all

# Or download pre-exported ONNX models directly
# fireredvad_vad.onnx              — Non-stream VAD (2.3MB)
# fireredvad_aed.onnx              — Non-stream AED (2.3MB)
# fireredvad_stream_vad_with_cache.onnx — Stream VAD (2.2MB)

# For C/ncnn: convert ONNX → ncnn with pnnx
pip install pnnx
pnnx fireredvad_vad.onnx "inputshape=[1,100,80]"

Local Development

This section covers building OmniVAD from source and consuming the in-tree build from another project on the same machine — the loop you want when hacking on the C/C++ core, the Python wrapper, or the TS bindings.

Prerequisites

Target Required Notes
Python wheel Python 3.10+, CMake 3.15+, a C++14 toolchain pip install -e . runs scikit-build-core, which fetches ncnn automatically via CMake FetchContent.
Standalone C/C++ library CMake 3.15+, a pre-installed ncnn (brew install ncnn or build from source) native/CMakeLists.txt does not fetch ncnn — set -DNCNN_ROOT=... if it isn't on the default search path.
TypeScript bundle Node 18+, pnpm Builds dist/index.{js,cjs,d.ts} only — does not rebuild the WASM.
WASM module emsdk (any recent version) Required only when you change C/C++ code and need a fresh dist/wasm/omnivad.wasm.

Build the Python package (editable install)

pip install -e ".[dev]"

What this produces:

  • omnivad/libomnivad.{dylib,so,dll} — the shared library actually loaded at runtime by omnivad/_binding.py.
  • omnivad/models/*.omnivad — bundled model files (copied by CMake install(...)).
  • An editable entry in your environment's site-packages pointing back at the source tree.

When you change C/C++ code in native/, re-run pip install -e . to relink the dylib. (CMake's incremental build means this is fast.) Pure Python edits don't need a reinstall.

Build the TypeScript package

cd packages/omnivad
pnpm install
pnpm build          # tsup → dist/index.{js,cjs,d.ts}
pnpm typecheck      # tsc --noEmit

This step does not rebuild the WASM — it consumes whatever's already in dist/wasm/. If you only edited TS, you're done.

Build the WASM module (when you change C/C++)

EMSDK=/path/to/emsdk packages/omnivad/wasm/build.sh

The script writes omnivad.{js,cjs,wasm} directly into packages/omnivad/dist/wasm/. After this, re-run pnpm build only if you also changed TS.

The EMSDK env var must point at your emsdk root (the directory that contains emsdk_env.sh and upstream/emscripten/). The script aborts with a clear error if it's missing.

Consume the in-tree build from another repo

Python — pip install -e <path>

# In the target project's venv:
pip install -e /abs/path/to/OmniVAD-Kit          # editable, picks up your edits
# or, isolated wheel:
pip install /abs/path/to/OmniVAD-Kit             # builds and installs a fresh wheel

pip install -e is what you want for the dev loop — re-running it after a C/C++ edit relinks the dylib in place; pure Python edits are picked up without reinstalling.

TypeScript — three options, pick by use case

Option Command When to use
A. Tarball (closest to npm) cd packages/omnivad && pnpm pack
then in target: pnpm add /abs/path/omnivad-0.2.8.tgz
Verifying what real consumers will install. Clean, no symlink quirks.
B. file: protocol In target package.json: "omnivad": "file:../OmniVAD-Kit/packages/omnivad" In-tree monorepo-style consumption. Re-run pnpm install to pick up rebuilds.
C. Global link cd packages/omnivad && pnpm link --global
then in target: pnpm link --global omnivad
Fast iteration across many projects. Watch for peer/hoist quirks.

For all three, rebuild before testing:

cd packages/omnivad
pnpm build                                       # if only TS changed
EMSDK=/path/to/emsdk wasm/build.sh && pnpm build # if C/C++ changed

Full rebuild after a C/C++ change (cheat sheet)

# From the repo root:
pip install -e .                                       # Python dylib
EMSDK=/path/to/emsdk packages/omnivad/wasm/build.sh    # WASM (.wasm + glue)
( cd packages/omnivad && pnpm build )                  # TS bundle

Standalone C/C++ build (for native tests / embedding)

cd native
cmake -B build -DNCNN_ROOT=/path/to/ncnn   # only if ncnn isn't auto-discovered
cmake --build build -j$(nproc 2>/dev/null || sysctl -n hw.ncpu)
./build/test_all ../models ../tests/data/hello_en.wav

This is independent from the Python wheel build — the wheel uses CMake FetchContent to pull a pinned ncnn, while native/ expects a pre-installed one.

Lint / format

ruff check --fix . && ruff format .                    # Python (line-length 120)
( cd packages/omnivad && pnpm typecheck )              # TypeScript

Testing

# Run the full Python test suite
pip install -e ".[dev]"
pytest tests -v

# Utility scripts (not pytest — require external FireRedVAD models)
python tests/generate_reference.py            # Generate Python reference data
python tests/check_timestamp_accuracy.py      # Strict C vs Python comparison
python tests/vad_to_textgrid.py audio.wav     # Audio → TextGrid + RTF benchmark

Accuracy (C/ncnn vs Python, 5 audio files × 3 models):

Model Timestamp Δ Probability Δ Status
VAD ≤ 0.020s ≤ 0.001 Exact match
AED (singing/music) ≤ 0.010s ≤ 0.013 Exact match
AED (speech) ≤ 0.030s ≤ 0.015 Match (ncnn fp16 edge cases on event.wav)
Stream-VAD (detect_full) ≤ 0.010s ≤ 0.001 Exact match

Project Structure

omnivad/
├── omnivad/                         # Python PyPI package
│   ├── __init__.py                  #   Public API: OmniVAD, OmniStreamVAD, OmniAED
│   ├── cli.py                       #   CLI entry point (omnivad command)
│   ├── _binding.py                  #   ctypes bindings to libomnivad
│   ├── vad.py                       #   OmniVAD (non-stream)
│   ├── stream_vad.py                #   OmniStreamVAD (real-time)
│   └── aed.py                       #   OmniAED (3-class)
├── native/                          # C/C++ library (ncnn backend)
│   ├── include/omnivad.h            #   Unified C API header
│   ├── src/omnivad.cpp              #   Core implementation
│   ├── frontend/                    #   Fbank/FFT/WAV (from FireRedVAD)
│   ├── test/                        #   4 test programs
│   └── CMakeLists.txt
├── packages/omnivad/                # TypeScript npm package
│   ├── src/
│   │   ├── vad.ts                   #   OmniVAD (non-stream)
│   │   ├── stream-vad.ts            #   OmniStreamVAD (real-time)
│   │   ├── aed.ts                   #   OmniAED (3-class)
│   │   ├── wasm-binding.ts          #   Emscripten/WASM bindings
│   │   ├── types.ts                 #   Public TypeScript types
│   │   ├── index.ts                 #   Package exports
│   │   └── wasm.d.ts                #   WASM module declarations
│   ├── package.json
│   └── tsconfig.json
└── tests/                           # Test suite
    ├── test_c_vs_python.py          #   Accuracy: omnivad vs Python reference
    ├── test_determinism.py          #   Repeated-run determinism
    ├── test_edge_cases.py           #   Edge cases: tiny/empty/silence inputs
    ├── smoke_test.py                #   CI smoke test (import + detect)
    ├── test_memory.sh               #   Native memory/leak checks
    ├── check_timestamp_accuracy.py  #   Strict C vs Python comparison (manual)
    ├── check_native.py              #   Native C binary validation (manual)
    ├── generate_reference.py        #   Generate Python reference data
    ├── vad_to_textgrid.py           #   Audio → TextGrid + RTF benchmark
    └── data/                        #   5 test audio files + reference JSON

Performance

RTF (Real-Time Factor) on Apple M-series, lower = faster:

Model RTF Speed
VAD ~0.003 ~330x real-time
Stream-VAD ~0.002 ~500x real-time
AED ~0.002 ~500x real-time

Origin & Attribution

OmniVAD is a cross-platform deployment toolkit built on top of FireRedVAD, developed by Xiaohongshu (小红书). FireRedVAD provides high-quality Voice Activity Detection models and a lightweight Audio Event Detection model that can distinguish speech, singing, and music.

Original paper: FireRedVAD (arXiv:2603.10420)

What FireRedVAD provides: DFSMN-based models (~2.2MB each), Python inference code, PyTorch training, strong VAD benchmark results (FLEURS-VAD-102 F1: 97.57%).

What OmniVAD adds: Unified C API (ncnn backend) for native deployment, TypeScript/JavaScript npm package (ncnn WebAssembly) for browser and Node.js, cross-platform build system, comprehensive test suite with accuracy validation.

License

Apache-2.0 — same as the upstream FireRedVAD.

Credits

  • FireRedVAD — Kaituo Xu, Wenpeng Li, Kai Huang, Kun Liu (Xiaohongshu)
  • ncnn — Tencent
  • Emscripten — WebAssembly toolchain

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

omnivad-0.2.10.tar.gz (8.6 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

omnivad-0.2.10-cp314-cp314-win_amd64.whl (10.5 MB view details)

Uploaded CPython 3.14Windows x86-64

omnivad-0.2.10-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (12.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

omnivad-0.2.10-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (7.9 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

omnivad-0.2.10-cp314-cp314-macosx_11_0_arm64.whl (6.7 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

omnivad-0.2.10-cp314-cp314-macosx_10_15_x86_64.whl (5.4 MB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

omnivad-0.2.10-cp313-cp313-win_amd64.whl (10.4 MB view details)

Uploaded CPython 3.13Windows x86-64

omnivad-0.2.10-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (12.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

omnivad-0.2.10-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (7.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

omnivad-0.2.10-cp313-cp313-macosx_11_0_arm64.whl (6.7 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

omnivad-0.2.10-cp313-cp313-macosx_10_13_x86_64.whl (5.4 MB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

omnivad-0.2.10-cp312-cp312-win_amd64.whl (10.4 MB view details)

Uploaded CPython 3.12Windows x86-64

omnivad-0.2.10-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (12.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

omnivad-0.2.10-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (7.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

omnivad-0.2.10-cp312-cp312-macosx_11_0_arm64.whl (6.7 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

omnivad-0.2.10-cp312-cp312-macosx_10_13_x86_64.whl (5.4 MB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

omnivad-0.2.10-cp311-cp311-win_amd64.whl (10.4 MB view details)

Uploaded CPython 3.11Windows x86-64

omnivad-0.2.10-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (12.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

omnivad-0.2.10-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (7.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

omnivad-0.2.10-cp311-cp311-macosx_11_0_arm64.whl (6.7 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

omnivad-0.2.10-cp311-cp311-macosx_10_9_x86_64.whl (5.3 MB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

omnivad-0.2.10-cp310-cp310-win_amd64.whl (10.4 MB view details)

Uploaded CPython 3.10Windows x86-64

omnivad-0.2.10-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (12.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

omnivad-0.2.10-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (7.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

omnivad-0.2.10-cp310-cp310-macosx_11_0_arm64.whl (6.7 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

omnivad-0.2.10-cp310-cp310-macosx_10_9_x86_64.whl (5.3 MB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

Details for the file omnivad-0.2.10.tar.gz.

File metadata

  • Download URL: omnivad-0.2.10.tar.gz
  • Upload date:
  • Size: 8.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for omnivad-0.2.10.tar.gz
Algorithm Hash digest
SHA256 d2308bb29acf253109ab14bbcf6c58d0d2441aee76806090c9535741859d3f2f
MD5 68ca2482240e0fb36f7fb8976127a17a
BLAKE2b-256 b2591a3a0ef2c35a5c8d3a8a5fb8f247743064282f683dea684f5b203f881eda

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.10.tar.gz:

Publisher: publish.yml on lifeiteng/OmniVAD-Kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnivad-0.2.10-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: omnivad-0.2.10-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 10.5 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for omnivad-0.2.10-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 5b663979809c4a645db71f2462677af3cf6b1c3ff08fa2af726dd81f29f1068f
MD5 6fe8a0f8e2b87299044b0552a7cfcbe6
BLAKE2b-256 2c890f98982a0e3ae2b65e1e3062276b851ecfd293a2ccf6ad474a7aa6f677aa

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.10-cp314-cp314-win_amd64.whl:

Publisher: publish.yml on lifeiteng/OmniVAD-Kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnivad-0.2.10-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.10-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 09637740f9548542a8ecf7761f5287a1bd9a484f3e35462feec49dd2f5d1cdf5
MD5 14d8749679054a680fe3612dd460a5ab
BLAKE2b-256 07478e40a3b9b7f724a7b07fbe49a6f7121a8a1fab2c863675f7e400329ac99c

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.10-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on lifeiteng/OmniVAD-Kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnivad-0.2.10-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.10-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e67094fc7c8682b862aedff4893a5b9300cb2ad337edf1f3e7ff46f8a8398113
MD5 3d747c2575fee79449aab3482e052cf9
BLAKE2b-256 b2f51203277852ebe3c1ed65163476e4ae35c97e0422dc9a4b5aa0b855afd9a4

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.10-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: publish.yml on lifeiteng/OmniVAD-Kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnivad-0.2.10-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.10-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8376bfef70bed7a09d79b8145e9524c39876750187b2a2ebb74bd26e04a76c73
MD5 93e6455df754509c9dfac8064f1a5830
BLAKE2b-256 e543ed3efb21390711e5b22738ca739b6fd569cb31d321e6c3ee6e709f33f193

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.10-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: publish.yml on lifeiteng/OmniVAD-Kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnivad-0.2.10-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.10-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 3390d3d48675e2e71d9d3f3d1ca894b111202bb6c5a452cbf17fa5ec70dee71d
MD5 d5c8488c24f941d9363736a0a7ed0c68
BLAKE2b-256 2f9b3156884ab13cf0e9dbe41c4351cf6e00bc23c8849de173283389bf057db7

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.10-cp314-cp314-macosx_10_15_x86_64.whl:

Publisher: publish.yml on lifeiteng/OmniVAD-Kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnivad-0.2.10-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: omnivad-0.2.10-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 10.4 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for omnivad-0.2.10-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 e71703cbd5200dfbad89e9b45a3eb87bb9f6d8b7d0af5ca5c1f960af8f6cd169
MD5 6bb06d38b27166e91dd0634405350c96
BLAKE2b-256 55cf3a1dbfcf5f094059f6ec83d4f407001d148d02cacc8499099baf231353b7

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.10-cp313-cp313-win_amd64.whl:

Publisher: publish.yml on lifeiteng/OmniVAD-Kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnivad-0.2.10-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.10-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f4f1a64be80804bbc48e74a7a7bd0b234c459c1f38a7e1864ec1af33d0f98241
MD5 16b000a80f9180b0961955e741f83973
BLAKE2b-256 5073c33c91a9483864991f28823f4bcef42f9804b39abe2a83d346ebfbc17fb1

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.10-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on lifeiteng/OmniVAD-Kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnivad-0.2.10-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.10-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 46fc5d00d22d7a03e24cba869edade7d83cb8f74226e10c1fc97ca21903e3e8c
MD5 7f9b6ce7fb68dde55ec85aa1e54dc7e4
BLAKE2b-256 e9a445c7acf9815ec2552ec4c3e62a9f6c54b6806fb1633686e5eb08fe84d971

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.10-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: publish.yml on lifeiteng/OmniVAD-Kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnivad-0.2.10-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.10-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e2ff54b9e5c5d90394604a73e35721e9a0bdd48655ded509d2aeef2130840fab
MD5 dbf3c43af485a3f707852cda3e1a702d
BLAKE2b-256 e6932079607a7fb6422004b4a554127f99c755b10c8e3d45916b0ef0c618f96b

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.10-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: publish.yml on lifeiteng/OmniVAD-Kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnivad-0.2.10-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.10-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 f4750f4f1dda36603c9b9ba26b249d94488bade0b6b601edd9a2da3e9f3e1f61
MD5 0523556c7d592e5e346ae74e6833aab8
BLAKE2b-256 27968c83354d5d4a8c900f43078a4732e3a9355bb267ad5fe7d5410e0f1c9f32

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.10-cp313-cp313-macosx_10_13_x86_64.whl:

Publisher: publish.yml on lifeiteng/OmniVAD-Kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnivad-0.2.10-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: omnivad-0.2.10-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 10.4 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for omnivad-0.2.10-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 5e992e45b64fab069ceaba6d74dbda9f9446a4686de986774c8c370bef1b3dec
MD5 8f9b811e83cab08950b8dd1179d15601
BLAKE2b-256 52ed4109258bd9f51383bc37e398747e114399333f9f67f767a2abd76e5fad54

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.10-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on lifeiteng/OmniVAD-Kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnivad-0.2.10-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.10-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d939440b5d04fdcbaea1163fa8d367190333e651d90632002e1e5044eb563745
MD5 d70c7e07ca791db4feb625009718190b
BLAKE2b-256 4cb63ba8412f4b01504d4ed4bf9758c4e60001d1368ab82c6b948eff31055108

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.10-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on lifeiteng/OmniVAD-Kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnivad-0.2.10-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.10-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1b3f3bf36241c9d83b29690b9ea401b5f39dfcefe633c2257801d94e69585b98
MD5 87f444538200e184e59f2604dc01a764
BLAKE2b-256 c72b9378e981ca25b5ca412417fa4aed39ee89e8ee69c92b11a36923a3dbe1a2

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.10-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: publish.yml on lifeiteng/OmniVAD-Kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnivad-0.2.10-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.10-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3eceb9344e0c813774846deb489baa6aef5a46c56988b7f85b3dde00c4ecb986
MD5 1049bdc9d404a5d274041120fba76bcf
BLAKE2b-256 85a12b5b0b94728ee52ea2a77f676e125def6f3af59ff052671212a06f4d34ba

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.10-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on lifeiteng/OmniVAD-Kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnivad-0.2.10-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.10-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 2c9de7e60940324abf043333d339b5d71ecb50918a7d195acd496f594f923441
MD5 efea1d27fa1b2affea21de82e02760f2
BLAKE2b-256 3d31bba85324d60866a85fd599fdec529ddefaff1f933b6fde188336e2c9f4e0

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.10-cp312-cp312-macosx_10_13_x86_64.whl:

Publisher: publish.yml on lifeiteng/OmniVAD-Kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnivad-0.2.10-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: omnivad-0.2.10-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 10.4 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for omnivad-0.2.10-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 23f26e4fd2ac28ca644f7c581471a5a1b0f962040ce3e590031bdabc56856da6
MD5 117a74b797eeb0aec4aa54c0efe1e94d
BLAKE2b-256 ad923b47ff0095824680e6d70b10dc4654c299c8a6d4f70d322f49bba1b959ee

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.10-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on lifeiteng/OmniVAD-Kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnivad-0.2.10-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.10-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6161b2795eb1b87f74789eb8b098d7321829a0c722aba9165ff44f44df4371e8
MD5 a18c89b8e27422729dd050f4e5c0102a
BLAKE2b-256 af3ff7ae278151446d6ce98f102dfe3d11ce244dee8596be746489479b6a9ae9

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.10-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on lifeiteng/OmniVAD-Kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnivad-0.2.10-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.10-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9b2642a619f878fe699a9cba50340f23d3ac2986e4573873252b3e046ddb5524
MD5 95b4081ac8df238142aa0bef38bf9fd0
BLAKE2b-256 0e6bb873ede0c0e5a4888aa64eac67476e9cca34171c61c4c3c385f6bfdc55b1

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.10-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: publish.yml on lifeiteng/OmniVAD-Kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnivad-0.2.10-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.10-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0075e42579c2acbfe75b71509a26352e243e1d82918cb9196fc3cedc4c9a360c
MD5 e4bbc8fea4de3eac9d65ecba8bded9be
BLAKE2b-256 2eea05b60004093104e924d6517bb89bcd01907696be684dbce8e82852472f9e

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.10-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on lifeiteng/OmniVAD-Kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnivad-0.2.10-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.10-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 fdce0b3475d2bc39b285b94f17e68f893cd5a33ff17ab59549e9a7331c190754
MD5 999d752c5d5c6a4d998bd29b7d648198
BLAKE2b-256 bcfe3a07efcb54b35a39f40350676616cb4a3d7748c9a8b37e1deb7e7cfafdcf

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.10-cp311-cp311-macosx_10_9_x86_64.whl:

Publisher: publish.yml on lifeiteng/OmniVAD-Kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnivad-0.2.10-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: omnivad-0.2.10-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 10.4 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for omnivad-0.2.10-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 143bde99f9473fe8522f8eb935b0626a54bf7bd96c943e44377d2d9496e5e894
MD5 ea824f7adc4d066a1c17dc476ac9036d
BLAKE2b-256 751365e02db155c57c04b07efcf3d3ff25ea6c53d44363c46c0e9f5fb9200e77

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.10-cp310-cp310-win_amd64.whl:

Publisher: publish.yml on lifeiteng/OmniVAD-Kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnivad-0.2.10-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.10-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5050fc7b6323b432ad04d04916eba1572e96e7db28a486bf29dd136ff2f97e01
MD5 9dbc8a7dc14d7bafc7c38231a465afca
BLAKE2b-256 9cda489b72f079da65dcd139aa3959bec805762bcd77f904d6a3d5a944bce459

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.10-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on lifeiteng/OmniVAD-Kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnivad-0.2.10-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.10-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6cf94339b6ec760a5075e159faa8155a3e63ef871e9cf6da70328a1f69dd2a90
MD5 b5fdca81040479d37ba25366d64f713c
BLAKE2b-256 8d50284f121d253685bf03c9b4509b80825421a074c2b57c99f323e18b4f9108

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.10-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: publish.yml on lifeiteng/OmniVAD-Kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnivad-0.2.10-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.10-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5e664082d0be98f741da39c7916489f866c0733716296d261b50d8662a50262e
MD5 119cb99670d0ede59a9b959ab87cb9a0
BLAKE2b-256 fb5d3d3eee5ecd289c40d3e1d51d683d328b27e22863b06d0630beaf957e3d57

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.10-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: publish.yml on lifeiteng/OmniVAD-Kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnivad-0.2.10-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.10-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 faa16e3459bd6eb84515f70fef9781deb20f5825e31b61478c76f0f5d7039e72
MD5 c0ec4c44c81e540cee96e54d08df6d6d
BLAKE2b-256 e0c3e47a339b8209f1077900d2639e527910835366462674a94ad8ce31ff8bec

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.10-cp310-cp310-macosx_10_9_x86_64.whl:

Publisher: publish.yml on lifeiteng/OmniVAD-Kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page