Maskinoversættelse · Engelsk original
Stemmeaktivitetsdetektion - Silero VAD
To VAD modeller er tilgængelige: Pyannote segmentering til offline batch-behandling med høj nøjagtighed, og Silero VAD for streaming lav- latency detektering. Begge kører helt on- enhed.
Pyannote (Offline)
Pyannote segmentation-3.0 giver høj nøjagtighed VAD ved hjælp af en PyanNet arkitektur. Det behandler tale i 10- anden glidende vinduer med et 1-andet trin, derefter aggregater overlappende forudsigelser og anvender hysterese udjævning.
Arkitektur
| Fase | Detaljer |
|---|---|
| SincNet | 40 indlærte bandpass filtre (80 i alt: 40 cos + 40 synd) |
| BiLSTM | 4 lag, skjult = 128, torettet (256-dim udgang) |
| Lineær | 2 lineære lag med LeakyRedu (negativ _ hældning = 0,01) |
| Output | 7- class softmax med hysterese efter forarbejdning |
Model størrelse: ~ 1,49M parametre, ~ 5,7 MB på disk.
Standardtærskelværdier
- Start:
0.767- Sandsynligheden for hvilken tale der detekteres - Offset:
0.377- Sandsynligheden for, under hvilken tale slutter
CLI-brug
# 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 er en letvægts streaming model, der behandler 512-prøve stykker (32 ms at 16 kHz). 23x real- tid i release mode, hvilket gør det egnet til live audio applikationer.
Opdeling efter motor: MLX og CoreML er nu både standard til Silero v6.2.1 eksport: aufklarer/Silero-VAD-v6.2.1-MLX og aufklarer/Silero-VAD-v6.2.1-CoreML. Begge holde den samme 32 ms streaming API.
Arkitektur
| Fase | Detaljer |
|---|---|
| STFT | Conv1d (1 til 258-kanaler), ret- only refleksions pad of 64 |
| Encoder | 4x Conv1d + RELU |
| LSTM | Skjult størrelse 128, stat båret på tværs stykker |
| AfkoderStencils | Conv1d (128 til 1) på LSTM skjult tilstand, sigmoid output |
Model størrelse: ~ 309K parametre, ~ 1,2 MB på disk.
Streaming af statsmaskine
streaming VAD processor bruger en 4- state maskine til at producere ren tale segmenter:
- tavshed - ingen tale opdaget
- indeståendetale - tærskelværdi for indsættelse, der er overskredet, og som venter på en minimumsvarighed
- tale - bekræftet tale segment i gang
- pendingSilence - forskudt tærskel, der er overskredet, og som afventer minimumsvarighed
Standardtærskelværdier
- Start:
0.5 - Offset:
0.35 - Mindste talevarighed:
0.25s - Minimumsvarighed for tavshed:
0.1s
CLI-brug
# 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
Indstillinger
| Valgmulighed | Gælder for | Varebeskrivelse |
|---|---|---|
--onset | Begge dele | Sandsynlighedstærskel for taledebut |
--offset | Begge dele | Tærsklen for talesondering af sandsynlighedsgrænser |
--min-speech | Streaming | Mindste talesegmentvarighed (sekunder) |
--min-silence | Streaming | Mindste stilhed varighed til ende segment (sekunder) |
--engine | Streaming | Inferensmotor: mlx eller coreml |
--json | Begge dele | JSON outputformat |
Til realtidsanvendelser, brug speech vad-stream med Silero VAD. Pyannote modellen kræver den fulde lydfil og er bedre egnet til offline batch behandling, hvor nøjagtighed er prioritet.
En VAD hører kun stilhed, så det kan ikke se en færdig sætning fra en pause midt-sætning. Vedlæg Smart Turn v3.2 til StreamingVADProcessor - eller løbe speech vad-stream --smart-turn - for at bekræfte hver pause, før segmentet slutter: en færdig sætning slutter svinget med det samme, en midtpunktspause bliver ved med at lytte.
Model Downloads
| Model | Backend | Størrelse | 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 | aufklarer / Pyanete- 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")
}
}
Fås også den Android, og Linux & Windows gennem talekerne (ONNX Runtime).