Awtomatikong salin · Orihinal sa Ingles

Pagtukoy sa mga salitang pampagana / keyword

Ang SpeechWakeWord Ang module ay nagpapatakbo ng on-device keyword spotter: nagrerehistro ka ng isang listahan ng mga parirala, itinutulak ang audio clusters in, at tumatanggap ng mga pag-aanalisa. Batay sa dumadaloy na Ziptainter transducer (3.49M params, Apache-2.0), na tinipon sa CoreML na may INT8 palettization.

Ingles lamang

Ang shipd checkpoint ay ang gigaspeech KWS pinong-tune.Ang mga non-English keywords ay nangangailangan ng hiwalay na icefall small-tune at re-export.

Arkitektura

Bagsag Mga Detalye
funkKaldi-compatible (25 ms / 10 ms, Povey window, 80 ml bins, high_freq=-400, walang CMVN)
Mang - aakit6-stage causal Zipformer2 (128-dim), 45 mel frames sa → 8 frames out (40 ms / frame) — 3.3 MB INT8
Decoder Walang - estadong transducer, BPE-500 vocab, kontekstong sukat 2 — 525 KB FP16
SumaliLinear + tanh output projection — 160 KB INT8
DecodeModified beam search (beam=4) sa isang Aho-Corasick ContextGraph ng mga user keywords

Nakapaloob na sukat sa disk: EX4 MB kabuuan (encoder.mlmodelc + decoder.mlmodelc + joiner.mlmodelc). Runtime memory: i6 MB kabilang ang mga cache ng estadong reciever.

Pag - aasikaso

Masalimuot Halaga Mga Noble
RTF (CPU + Neural Engine)0.0426× real-time sa M-series
Gunitain (12 mga susing salita)88%LibriSpeech test-malinis, 158 positibong mga kasabihan
Huwad na mga Positibo / Sabi0.2760 negatibong mga kasabihan
CoreML INT8 vs PyTorch FP3299% Kasunduan sa Pagmimisyon

Naka-sign na mga default: acThreshold=0.15, contextScore=0.5, numTrailingBlanks=1. Ang Per-keyword ay nananaig.

Paggamit ng CLI

Ang plain-phrase form (PEGIGO BPE — ay gumaganang mahusay para sa mga karaniwang salita):

speech wake recording.wav --keywords "hey soniqo"

speech wake recording.wav --keywords "hey soniqo:0.15:0.5" "cancel"

Pre-tokenized form (sherpa-onnx style — inirerekomenda kapag alam mo ang eksaktong pagkabulok ng modelo ay sinanay):

# Format: "phrase|piece1 piece2 ...:threshold:boost"
speech wake recording.wav \
    --keywords "LIGHT UP|▁ L IGHT ▁UP:0.25:2.0"

# Multiple keywords + JSON output
speech wake recording.wav \
    --keywords "LIGHT UP|▁ L IGHT ▁UP:0.25:2.0" \
               "LOVELY CHILD|▁LOVE LY ▁CHI L D:0.25:2.0" \
    --json

O isang talaksang susi, isang ipinasok sa bawat linya (# para sa mga komento):

speech wake recording.wav --keywords-file keywords.txt

Swift API

import SpeechWakeWord

// Load the model with your keyword list.
let detector = try await WakeWordDetector.fromPretrained(
    keywords: [
        KeywordSpec(phrase: "hey soniqo", acThreshold: 0.15, boost: 0.5),
        KeywordSpec(phrase: "cancel")
    ]
)

// Streaming: push chunks, consume detections as they fire.
let session = try detector.createSession()
for chunk in micAudioChunks {                   // Float32 @ 16 kHz
    for detection in try session.pushAudio(chunk) {
        print("[\(detection.time(frameShiftSeconds: 0.04))s] \(detection.phrase)")
    }
}

// Batch: single shot over a full buffer.
let detections = try detector.detect(audio: samples, sampleRate: 16000)

keywordspec

Larangan Kahulugan
phrasePapakitang parirala, e.g. "hey soniqo". Ginagamit din bilang pinagmumulan ng sakim na BPE STORY kapag nil ang tokens.
acThresholdMagtakda ng akustikong probabilidad na kailangan sa dobleng haba. 0 → Gumamit ng naka-ayos na default (0.15).
boost Ang Per-token na konteksto ay nagpapalakas. ang mga positibong pagpapahalaga ay gumagawa sa parirala na mas madaling mag-udyok. 0 → Gumamit ng naka-ayos na default (0.5).
tokens Ang optional experience BPE na talaan ng piraso. Kapag hindi-nil, tinitingnan ng detector ang bawat piraso sa tokens.txt at nilalampasan ang sakim na BPE regulator.
Kailan gagamitin ang pre-tokenized tokens

Ang bokabularyo ng icefall KWS ay Itaas na BPE. Ang sakim na pagkukuwenta ng isang parirala ay maaaring pumili ng isang naiibang BPE flag mula sa isa na sinanay na maglabas ng modelo — "LIGHT UP" Mga sakim-encode to ▁LI GHT ▁UP ngunit ang pagsasanay ay naglalaho ▁ L IGHT ▁UP. Kapag ang pag-aalsa sa TTS-synthessed o malinis na pagbasa ng pananalita ay nawawala sa mga halatang posporo, subukan ang sherpa-onnx-style pre-tokenized form.

Modelong mga Pagpapababa ng Pabigat

Huwaran Mga Param LakiHuggingFace
KWS-Zipformer-3M3.49M°4 MB Aufklarer/KWS-Zipformer-3M-CoreML-INT8

Pagsasama ng mga tubo

Inilalantad ng module ang isang WakeWordProvider protocol na salamin StreamingVADProvider, kaya't ang isang voice pipeline ay maaaring pumarada sa aksesyon sa VAD, shoat-word, o pareho. WakeWordStreamingAdapter Ibalot ang isang kargadong detector + isang sesyon sa isang magagamit na bagay na tagapaglaan.

let adapter = try WakeWordStreamingAdapter(detector: detector)
// pipeline.configure(wakeWord: adapter)

Pinagmumulan