Terjemahan mesin · Versi asli bahasa Inggris
Deteksi Aktivitas Suara - Silero VAD
Dua model VAD tersedia: Pyannote segmentasi untuk pemrosesan batch offline dengan akurasi tinggi, dan Silero VAD untuk streaming pendeteksi low-latency. Keduanya dijalankan sepenuhnya on- perangkat.
Pyannote (Offline)
Pyannote segmentation-3.0 menyediakan akurasi tinggi VAD menggunakan arsitektur PyanNet. Proses ini memproses pidato dalam 10-second geser jendela dengan sebuah 1-langkah kedua, kemudian mengumpulkan overlapping prediksi dan berlaku histeresis smooling.
Arsitektur
| Tahap | Rincian |
|---|---|
| SincNet | Filter di Bandpass 40 belajar (80 total: 40 cos + 40 dosa) |
| BiLSTM | 4 lapis, tersembunyi = 128, bidirectional (keluaran 256-dim) |
| Linear | 2 lapisan linear dengan LeakyRLU (negatif _ slope = 0.01) |
| Keluaran | 7-class softmax dengan postingan hysteresis-processing |
Ukuran model: ~ 1.49M parameter, ~ 5.7 MB pada disk.
Ambang Bawaan
- Onset:
0.767- Kemungkinan di atas mana pidato terdeteksi - Ofset:
0.377- Kemungkinan di bawah ini yang pidato berakhir
Penggunaan CLI
# Offline VAD
.build/release/speech vad recording.wav
# JSON output
.build/release/speech vad recording.wav --json
# Custom thresholds
.build/release/speech vad recording.wav --onset 0.6 --offset 0.3
Silero VAD (Streaming)
Silero VAD adalah sebuah model streaming ringan yang proses 512-sample potongan (32 ms di 16 KHz). lt berjalan di 23x real-time dalam mode rilis, membuatnya cocok untuk aplikasi audio hidup.
Pembagian latar: MLX dan CoreML kini keduanya telah baku ke ekspor Silero v6.2.1: aufklarer/Silero-VAD-v6.2.1-MLX dan aufklarer/Silero-VAD-v6.2.1-CoreMLKeduanya menjaga 32 yang sama streaming API.
Arsitektur
| Tahap | Rincian |
|---|---|
| STFT | Conv1d (1 ke saluran 258), benar-benar hanya pad refleksi dari 64 |
| Enkoder | 4x Conv1d + ReLU |
| LSTM | Ukuran tersembunyi 128, negara membawa seluruh potongan |
| Decoder | Conv1d (128 ke 1) pada LSTM negara tersembunyi, keluaran sigmoid |
Ukuran model: ~ 309K parameter, ~ 1.2 MB pada disk.
Mesin Keadaan Streaming
Streaming VAD prosesor menggunakan sebuah mesin negara 4- untuk menghasilkan segmen pidato bersih:
- diam - Tidak ada pidato terdeteksi
- pendingSpeech - onset threshold crossed, waiting for minimum speech durasi
- pidato - dikonfirmasi segmen pidato dalam proses
- PendingSilence - batas ofset menyeberangi, menunggu durasi keheningan minimum
Ambang Bawaan
- Onset:
0.5 - Ofset:
0.35 - Durasi pidato minimum:
0.25s - Durasi keheningan minimum:
0.1s
Penggunaan CLI
# Streaming VAD
.build/release/speech vad-stream recording.wav
# Custom thresholds
.build/release/speech vad-stream recording.wav --onset 0.6 --offset 0.3
# Minimum durations
.build/release/speech vad-stream recording.wav --min-speech 0.5 --min-silence 0.2
# Choose engine
.build/release/speech vad-stream recording.wav --engine coreml
Opsi
| Opsi | Applies To | Deskripsi |
|---|---|---|
--onset | Keduanya | Pidato onset Ambang probabilitas |
--offset | Keduanya | Kalimat ofset kemungkinan threshold |
--min-speech | Streaming | Durasi segmen pidato minimum (detik) |
--min-silence | Streaming | Durasi keheningan minimum untuk mengakhiri segmen (detik) |
--engine | Streaming | Inferensi mesin: mlx atau coreml |
--json | Keduanya | Format keluaran JSON |
Untuk aplikasi real-time, gunakan speech vad-stream dengan Silero VAD. Model Pyannote memerlukan berkas audio penuh dan lebih cocok untuk pemrosesan batch offline dimana akurasi adalah prioritas.
Sebuah VAD hanya mendengar keheningan, sehingga tidak dapat membedakan kalimat selesai dari jeda tengah kalimat. Lampirkan Smart Turn v3.2 ke StreamingVADProcessor - atau lari speech vad-stream --smart-turn - untuk mengkonfirmasi setiap jeda sebelum segmen berakhir: sebuah kalimat selesai mengakhiri gilirannya segera, jeda pertengahan kalimat terus mendengarkan.
Unduhan Model
| Model | Backend | Ukuran | HuggingFace |
|---|---|---|---|
| Silero-VAD-v6.2.1 | MLX | ~ 1.2 MB | aufklarer / Silero-VAD-v6.2.1-MLX |
| Silero-VAD-v6.2.1 | CoreML | ~ 1.2 MB | aufklarer / Silero-VAD-v6.2.1-CoreML |
| Pyannote-Segmentation-3.0 | MLX | - 5.7 MB | Aufklacer / Pynotte- segmentation - MLX |
Swift API
import SpeechVAD
// Offline VAD (Pyannote)
let pyannote = try await PyannoteVADModel.fromPretrained()
let segments = pyannote.detectSpeech(audio: samples, sampleRate: 16000)
for segment in segments {
print("\(segment.startTime)s - \(segment.endTime)s")
}
// Streaming VAD (Silero)
let silero = try await SileroVADModel.fromPretrained()
let processor = StreamingVADProcessor(model: silero, config: .sileroDefault)
for event in processor.process(samples: audioBuffer) {
switch event {
case .speechStarted(let time):
print("Speech started at \(time)s")
case .speechEnded(let segment):
print("Speech: \(segment.startTime)s - \(segment.endTime)s")
}
}
Juga tersedia di Android, dan pada Linux & Windows melalui Speech Core (ONNX Runtime).