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.12.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.12-cp314-cp314-win_amd64.whl (10.5 MB view details)

Uploaded CPython 3.14Windows x86-64

omnivad-0.2.12-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.12-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.12-cp314-cp314-macosx_11_0_arm64.whl (6.7 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.14macOS 10.15+ x86-64

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

Uploaded CPython 3.13Windows x86-64

omnivad-0.2.12-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.12-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.12-cp313-cp313-macosx_11_0_arm64.whl (6.7 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 10.13+ x86-64

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

Uploaded CPython 3.12Windows x86-64

omnivad-0.2.12-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.12-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.12-cp312-cp312-macosx_11_0_arm64.whl (6.7 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.12macOS 10.13+ x86-64

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

Uploaded CPython 3.11Windows x86-64

omnivad-0.2.12-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.12-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.12-cp311-cp311-macosx_11_0_arm64.whl (6.7 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.11macOS 10.9+ x86-64

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

Uploaded CPython 3.10Windows x86-64

omnivad-0.2.12-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.12-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.12-cp310-cp310-macosx_11_0_arm64.whl (6.7 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

omnivad-0.2.12-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.12.tar.gz.

File metadata

  • Download URL: omnivad-0.2.12.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.12.tar.gz
Algorithm Hash digest
SHA256 fb7c0b2104f9212fb4b1b2bc27b70528fd16ab660245b11e56af2555375d55b1
MD5 49c099a28ab15c34410cc2222a0b1296
BLAKE2b-256 323a5c56fc27c4c48e61b7258f33993db7e50814ce6bbc528728f242a296d734

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.12.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.12-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: omnivad-0.2.12-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.12-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 d9627e8fec900ba3e7c693621f3ca8a86466a7018b357c80d1a505b7b21046bc
MD5 7b3a106c3b2c556851fffc8b2ef242a4
BLAKE2b-256 e388faa6153e84facd62ef03db3ed090261a468fd0cada3ba6ee05c44d7a1ff0

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.12-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.12-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.12-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1c559b3b168fdcc53ea3c55bf4e81dfa52d253c9f6c77a0ce45daa0f48e68189
MD5 6f15cd6823cfb2f4fd1d4b235a142cdd
BLAKE2b-256 50e61139fca967df904b7c7195359615b5a73f387de751f812954700096f5255

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.12-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.12-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.12-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 39f352aa712917ee6161b557118b22536049e6d7676b8fff6ffb41d53c2804e0
MD5 14071c9726b2d84be5ab59c374907ce6
BLAKE2b-256 4d807889b44178f55b5af3d117dbd81c0318f97b8ff1879577978fd33e0edaa3

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.12-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.12-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.12-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b68fdc57014720556be327bbfa2159e26e5ec85128dda9bcc2d2a8ffc4dfb46b
MD5 7e5303d9401382233bbe53f658533f09
BLAKE2b-256 da43789f63a4b57b6d0d115b5991f1fbe15a5840bae443817caa69ff7a7af2cf

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.12-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.12-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.12-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 f377e2633e54f14016aa395789e6060ac1dfcdca93c477dd658b6a8fcaa3b030
MD5 c15417dcbb23ad841c7aa85eada5b34d
BLAKE2b-256 f7cff8db3c5aaba3b0c2e7d8468609852ed9678a64303eb5011aef366725d982

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.12-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.12-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: omnivad-0.2.12-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.12-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 550cbef1aa9277680aab3758001e68484eee1d5cbaf2e4b7d5efe9f1599db8fd
MD5 d0bc9ad75fccc8e4b7d91415d102d4e7
BLAKE2b-256 66a8cc633ad6087800adce3e0e872cd8e18a9ba4943b67834700b5b74fcc33f6

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.12-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.12-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.12-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7ff2501d9921fdb33ae8e8c6b8711a4009f28e2120473faf32fd803a5d266016
MD5 086cf6bc227ea27ddd5e3d0e064ecdc1
BLAKE2b-256 39e7b71c8b485fa9653143d81a5899a58a5e14113cc642e5389b598da9ff0be4

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.12-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.12-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.12-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5810bacd94fbb44fc523ea1fba4f5a63f39a610e31ee0e6d0cd92f8779844ecd
MD5 36c4e179109ad59b10423c7e4f732f8b
BLAKE2b-256 4d61c5a1fc184b63d77eadbc6a351127132e1bf64ffb77cceb89e3230774c928

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.12-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.12-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.12-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 31e37c5f19a67ff4bf18c79ac28a51dd12fddf5314b5e6ff47819179f2e6cc95
MD5 13bc94f7ca1d49e0034555260cfa459a
BLAKE2b-256 7f73abb89b10693e5c68d123a518bc0f144d494a709dfc22ea48938fd22c1677

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.12-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.12-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.12-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 f58c9f872dd8ae433f709323a9c318c7d2f9a30f8cc601f361dfeda7d48abf5f
MD5 12300096dce4d896494c4cb5a5bfcf90
BLAKE2b-256 60f465af80ae55efef71d6ea5b80b52c0142987d4b207be4c989cf2816e3f5d1

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.12-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.12-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: omnivad-0.2.12-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.12-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 9794e7b1c22871c4e624537255c94b0ff82bb0291c13fabe16cd7bd011c2dc2d
MD5 5cb0fa5bcfd3ccd6c1421b12ae37c0d6
BLAKE2b-256 fd8916558e04e024d21f70261320a7589cad8b76cd441443fe569e86f3f9099c

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.12-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.12-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.12-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c4ec1ad3e60392ebc067258f499dc9b760308ebbefb72e7a785174792fe4fb7c
MD5 5d381bebc63b453d1873b64f58a5d8bd
BLAKE2b-256 391cf432c29763a1b07c503e327781b42d334760879bc7d6c5a2621582a3b74f

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.12-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.12-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.12-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b99eb8f409e28b6de90bb66810a02e0c837a7be222385335b6902067aa06935a
MD5 844065963f5a77b6827187fa2212b140
BLAKE2b-256 172080025942610161bfadf5792de49da1128310800113b73262e41baed8817e

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.12-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.12-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.12-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 77d4cd9b3922d9c4b0affd6de424eb2bb00d5050b0f8e0d9bd31f2580b3b9f88
MD5 6cf55d2e912454d68a1b99684f697194
BLAKE2b-256 758610a1e244bae402634c24a87b40926e8fc494e408769980fa28fc4e2085ad

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.12-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.12-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.12-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 8dbf599d1aa94143c8677da6ededb37ed3175e6584ad91f64c1bf2a43a1c5cb0
MD5 aca71d6c311b747bca968cf6d1634510
BLAKE2b-256 c61c8512f2ceef7c1232b929003fedaf827399e2bb8f6cf447f9f6bc8eaecf2e

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.12-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.12-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: omnivad-0.2.12-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.12-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 ba6be1963025b070f1131436eae9c9d251b2321f434308df1048f8d79edb40ee
MD5 b675a88236ca94f80ffe2bfdbbb4acaa
BLAKE2b-256 92780e266c5e94f74727f765e51fcecac8eb16665c811d5eb762b202c9a82011

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.12-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.12-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.12-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 128b5d9c5b7f69efeccc19a4d847708b65f0e543e98ec5d3c09332fef490cf98
MD5 54aa2fc5b71672a2ec66863d9a4c0462
BLAKE2b-256 479c56e8090669b7b683bd67222d054966760ab9eaa18605fe80098e51316537

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.12-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.12-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.12-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7954cd836b574bc22de31e6dd0d1d45866d159dfe9888aedc6c57b1c1ca5abc9
MD5 aae4f20e16bba5038c5a73069b088b54
BLAKE2b-256 1a86dfe10b859a1590d7ed06d6f71ffb34d67fa5edb203aa47053f7e40d5349e

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.12-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.12-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.12-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 18759114eb0e046e0aeb52c18f48539730622cc039ce444e2198e33d337617cc
MD5 9e1edc7ef315afc38b52fb222f53b8eb
BLAKE2b-256 8bbd72090d07b0521becce9691122d21f7e477fb3dba6c3c63839de03d3e1d82

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.12-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.12-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.12-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 5b3c06791fac84033d65bf9b0739032176f33eda990c59c0250c50368ad3b53e
MD5 b46aa9cf712085426436c4ab44890f33
BLAKE2b-256 6d2897fcb54078040f1e4e79237fcc26991a5b99913ad989e371f6726772639a

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.12-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.12-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: omnivad-0.2.12-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.12-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 940ee0f80ff1dddef374c5f357c4ce89aa183b9a07fe0a0b4f86f2fa0bbc3b77
MD5 9b89abec38c20dd801d5678c3e7d200b
BLAKE2b-256 3ef348ade7bcd70c3e94faea6b5904e7f734aab6ec926599802af1cee85f8ebf

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.12-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.12-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.12-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6bc516cc5c315968b03161e1fdb17776ad2b8492a18a1da23c26654e655d0fe5
MD5 9106c46f7f7c8629a6e34c6f839a002d
BLAKE2b-256 025fa0c5431593b8cd8c91c86e3e0fc7db5cf9d696c74f6ad3d8eaa768338b62

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.12-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.12-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.12-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 758ae7ee74c13a21e153010c738b3282b95201ad5861f835118d3d007203959b
MD5 bb7e41fa7529879056b667c1e3d8522a
BLAKE2b-256 0dde94238673e8fcd708e70bde301cd0ff96e82203438e0992e31495ddd1b306

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.12-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.12-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.12-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 10878863d70a8277912b45e3dd5855afbe0346d70c9de0dd4bf6bea0b9e58276
MD5 4b90dc8a6848b41a47b44d9febbacf7d
BLAKE2b-256 2e5f38656d80392a0d6eff73b167c2102f66346dc2a2c6b53002c46e705b1522

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.12-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.12-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for omnivad-0.2.12-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 23484dd735e117aabb5f9ca248b8f5b0a6c5e8d8759301b90b6d78936850dcaf
MD5 3559547d9a913b500cc3e7ecf8ff4a66
BLAKE2b-256 ed7bc87fa7ccee969055d94a991d538565f962d9ff2d510adea9d78ca9dac395

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnivad-0.2.12-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