pvporcupine
Porcupine wake word engine.
What it is and what it does
Porcupine is a speech recognition engine from Picovoice that detects wake words and voice commands in real-time audio. It uses deep neural networks trained in real-world environments and is optimized for low computational cost, making it suitable for IoT devices, embedded systems, and always-listening applications. The engine can detect multiple keywords simultaneously and supports cross-platform deployment on Linux, macOS, Windows, Raspberry Pi, Android, iOS, and browsers.
You initialize Porcupine with an AccessKey (obtained free from Picovoice Console) and specify keywords to detect—either from a built-in set or custom-trained models. The engine processes audio frames and returns a keyword index when a match is detected. Sensitivity can be tuned per keyword to trade off miss rate against false alarms. The package ships with model files for multiple languages and supports training custom wake word models via API.
Use it for:
- Build smart home devices that wake on a custom voice command without sending audio to the cloud.
- Add voice activation to IoT applications running on Raspberry Pi or embedded Linux systems.
- Implement always-listening voice assistants in mobile apps or web browsers with low latency.
- Detect multiple voice commands in real-time for hands-free control in industrial or automotive settings.
- Train and deploy custom wake words for branded voice interfaces via the Picovoice API.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Porcupine is a lightweight wake word detection engine that identifies spoken keywords in audio streams, enabling always-listening voice applications with minimal computational overhead.
Yes. Porcupine is a production-ready, actively maintained wake word engine with low install friction, permissive licensing, and no known vulnerabilities. It's well-suited for voice-activated applications where on-device detection is preferred. The only prerequisite is obtaining a free AccessKey from Picovoice Console, which is a minor friction point but not a blocker.
Install
pvporcupine on PyPI
pip
pip install pvporcupineuv
uv add pvporcupinepoetry
poetry add pvporcupineInstalling pvporcupine
Before you install
Low install friction with a pure Python wheel distribution. The package is actively maintained with a recent release (50 days ago) and has been in production since 2019. Requires only requests as a runtime dependency.
License in practice
Licensed under Apache Software License (permissive), which allows commercial and private use with minimal restrictions—suitable for most projects without legal concern.
Quickstart
pip install pvporcupine
import pvporcupine
access_key = "YOUR_ACCESS_KEY" # from Picovoice Console
handle = pvporcupine.create(access_key=access_key, keywords=['picovoice'])
while True:
keyword_index = handle.process(audio_frame)
if keyword_index >= 0:
print(f"Detected keyword: {keyword_index}")
handle.delete()
Requires a free Picovoice AccessKey obtained from https://console.picovoice.ai/ to initialize the engine. Python 3.9 or later required.
Verify before relying
- Whether the package's neural network models are updated regularly and how security patches are distributed.
- Latency and accuracy metrics under real-world conditions on different hardware platforms.
- Whether custom-trained models via the API are subject to additional licensing or usage restrictions.
Package facts
| License | not declared (permissive) |
| Python support | supports the current Python release (>=3.9) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 1 — requests |
| Maintenance | actively maintained — 50 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 160,057/month — #10,676 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: pvporcupine-4.0.3-py3-none-any.whl
Keywords: wake word engine, hotword detection, keyword spotting, wake word detection, voice commands
Tags
More Speech packages
Performs speech recognition and transcription…
permissive · top 5,000 on PyPI
gTTSgTTS converts text to speech using Google…
permissive · top 5,000 on PyPI
lhotseLhotse prepares multimodal (speech, audio,…
permissive · top 5,000 on PyPI
piper-ttsPiper TTS is a local neural text-to-speech…
copyleft · top 5,000 on PyPI
funasrFunASR is a speech recognition toolkit that…
permissive · top 15,000 on PyPI
pocketsphinxPocketSphinx provides Python bindings for…
permissive · top 15,000 on PyPI
openwakewordopenWakeWord detects wake words and phrases in…
permissive · top 15,000 on PyPI
wyomingWyoming is a peer-to-peer TCP protocol for…
permissive · top 15,000 on PyPI
realtimesttRealtimeSTT converts speech from microphone or…
permissive · top 15,000 on PyPI
pymicro-vadA self-contained voice activity detector that…
permissive · top 15,000 on PyPI
whisper-timestampedAdds word-level timestamps and confidence…
copyleft · top 15,000 on PyPI
sherpa-onnxSherpa-onnx runs speech recognition,…
permissive · top 15,000 on PyPI
panns-inferenceProvides pretrained neural network models for…
permissive · top 15,000 on PyPI
pyrnnoisePython bindings for RNNoise that perform…
unclear · top 15,000 on PyPI
sherpa-onnx-coresherpa-onnx-core provides pre-built ONNX…
permissive · top 15,000 on PyPI