leduclinh aufklarer commited on
Commit
e5bee32
·
0 Parent(s):

Duplicate from aufklarer/Silero-VAD-v5-MLX

Browse files

Co-authored-by: Ivan <[email protected]>

Files changed (4) hide show
  1. .gitattributes +35 -0
  2. README.md +68 -0
  3. config.json +29 -0
  4. model.safetensors +3 -0
.gitattributes ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: mit
3
+ tags:
4
+ - mlx
5
+ - voice-activity-detection
6
+ - silero
7
+ - vad
8
+ - streaming
9
+ - apple-silicon
10
+ base_model: snakers4/silero-vad
11
+ library_name: mlx
12
+ pipeline_tag: voice-activity-detection
13
+ ---
14
+
15
+ # Silero VAD v5 — MLX
16
+
17
+ MLX-compatible weights for [Silero VAD v5](https://github.com/snakers4/silero-vad), converted from the official JIT model.
18
+
19
+ ## Model
20
+
21
+ Silero VAD v5 is a lightweight (~309K params) voice activity detection model that processes 512-sample chunks (32ms @ 16kHz) with sub-millisecond latency. It outputs a speech probability between 0 and 1 for each chunk, with LSTM state carried across chunks for streaming operation.
22
+
23
+ **Architecture:** STFT → 4×Conv1d+ReLU encoder → LSTM(128) → Conv1d decoder → sigmoid
24
+
25
+ ## Usage (Swift / MLX)
26
+
27
+ ```swift
28
+ import SpeechVAD
29
+
30
+ // Load model
31
+ let vad = try await SileroVADModel.fromPretrained()
32
+
33
+ // Streaming: process 512-sample chunks
34
+ let prob = vad.processChunk(samples) // → 0.0...1.0
35
+
36
+ // Batch: detect speech segments in complete audio
37
+ let segments = vad.detectSpeech(audio: samples, sampleRate: 16000)
38
+ for seg in segments {
39
+ print("Speech: \(seg.startTime)s - \(seg.endTime)s")
40
+ }
41
+ ```
42
+
43
+ Part of [qwen3-asr-swift](https://github.com/nicklama/qwen3-asr-swift).
44
+
45
+ ## Conversion
46
+
47
+ ```bash
48
+ python3 scripts/convert_silero_vad.py --upload
49
+ ```
50
+
51
+ Converts the official Silero VAD v5 JIT model via `torch.hub`, transposes Conv1d weights for MLX channels-last format, sums LSTM biases (`bias_ih + bias_hh`), and saves as safetensors.
52
+
53
+ ## Weight Mapping
54
+
55
+ | JIT Key | MLX Key | Shape |
56
+ |---------|---------|-------|
57
+ | `_model.stft.forward_basis_buffer` | `stft.weight` | [258, 256, 1] |
58
+ | `_model.encoder.{i}.reparam_conv.weight` | `encoder.{i}.weight` | varies |
59
+ | `_model.encoder.{i}.reparam_conv.bias` | `encoder.{i}.bias` | varies |
60
+ | `_model.decoder.rnn.weight_ih` | `lstm.Wx` | [512, 128] |
61
+ | `_model.decoder.rnn.weight_hh` | `lstm.Wh` | [512, 128] |
62
+ | `_model.decoder.rnn.bias_ih + bias_hh` | `lstm.bias` | [512] |
63
+ | `_model.decoder.decoder.2.weight` | `decoder.weight` | [1, 1, 128] |
64
+ | `_model.decoder.decoder.2.bias` | `decoder.bias` | [1] |
65
+
66
+ ## License
67
+
68
+ The original Silero VAD model is released under the [MIT License](https://github.com/snakers4/silero-vad/blob/master/LICENSE).
config.json ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "model_type": "silero_vad_v5",
3
+ "sample_rate": 16000,
4
+ "chunk_size": 512,
5
+ "context_size": 64,
6
+ "filter_length": 256,
7
+ "hop_length": 128,
8
+ "encoder_channels": [
9
+ 129,
10
+ 128,
11
+ 64,
12
+ 64,
13
+ 128
14
+ ],
15
+ "encoder_kernel_sizes": [
16
+ 3,
17
+ 3,
18
+ 3,
19
+ 3
20
+ ],
21
+ "encoder_strides": [
22
+ 1,
23
+ 2,
24
+ 2,
25
+ 1
26
+ ],
27
+ "lstm_hidden_size": 128,
28
+ "lstm_num_layers": 1
29
+ }
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:704e4211eab4177b88dd7f2f0746f53cc737d49711d34c4a34d00950bb78201b
3
+ size 1237580