Skip to main content

Porcupine wake word engine.

Project description

Porcupine Wake Word Engine

Made in Vancouver, Canada by Picovoice

Porcupine is a highly-accurate and lightweight wake word engine. It enables building always-listening voice-enabled applications. It is

  • using deep neural networks trained in real-world environments.
  • compact and computationally-efficient making it perfect for IoT.
  • scalable. It can detect multiple always-listening voice commands with no added CPU/memory footprint.
  • self-service. Developers can train custom wake phrases using Picovoice Console.

Compatibility

  • Python 3
  • Runs on Linux (x86_64), Mac (x86_64), Windows (x86_64), Raspberry Pi (all variants), and Beagle Bone.

Installation

pip3 install pvporcupine

Usage

Create an instance of the engine

import pvporcupine

handle = pvporcupine.create(keywords=['picovoice'])

handle is an instance of Porcupine that detects utterances of "Picovoice". keywords input argument is a shorthand for accessing default keyword model files shipped with the package. The list of default keywords can be retrieved by

import pvporcupine

print(pvporcupine.KEYWORDS)

Porcupine can detect multiple keywords concurrently

import pvporcupine

handle = pvporcupine.create(keywords=['bumblebee', 'picovoice'])

To detect non-default keywords use keyword_paths input argument instead

import pvporcupine

keyword_paths = ['/absolute/path/to/keyword/one', '/absolute/path/to/keyword/two', ...]

handle = pvporcupine.create(keyword_paths=keyword_paths)

The sensitivity of the engine can be tuned per keyword using the sensitivities input argument

import pvporcupine

handle = pvporcupine.create(
        keywords=['grapefruit', 'porcupine'],
        sensitivities=[0.6, 0.35])

Sensitivity is the parameter that enables trading miss rate for the false alarm rate. It is a floating number within [0, 1]. A higher sensitivity reduces the miss rate at the cost of increased false alarm rate.

When initialized, the valid sample rate is given by handle.sample_rate. Expected frame length (number of audio samples in an input array) is handle.frame_length. The engine accepts 16-bit linearly-encoded PCM and operates on single-channel audio.

def get_next_audio_frame():
    pass

while True:
    keyword_index = handle.process(get_next_audio_frame())
    if keyword_index >= 0:
        # detection event logic/callback
        pass

When done resources have to be released explicitly

handle.delete()

Demos

pvporcupinedemo provides command-line utilities for processing real-time audio (i.e. microphone) and files using Porcupine. The source code for these utilities is available on Porcupine's GitHub repository:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pvporcupine-1.8.6.tar.gz (1.3 MB view details)

Uploaded Source

Built Distribution

pvporcupine-1.8.6-py3-none-any.whl (1.3 MB view details)

Uploaded Python 3

File details

Details for the file pvporcupine-1.8.6.tar.gz.

File metadata

  • Download URL: pvporcupine-1.8.6.tar.gz
  • Upload date:
  • Size: 1.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.50.0 CPython/3.6.9

File hashes

Hashes for pvporcupine-1.8.6.tar.gz
Algorithm Hash digest
SHA256 977b8fdeff4d09596c001a1afc67f5fa338d770dacfaca3323fe9a7e87723b0c
MD5 04adc4e2d9d489fde534b147ac74239b
BLAKE2b-256 bc0fcdfb04da89c8922892381f15bcaa17f83b4f7bfd956949eb9439be250ded

See more details on using hashes here.

File details

Details for the file pvporcupine-1.8.6-py3-none-any.whl.

File metadata

  • Download URL: pvporcupine-1.8.6-py3-none-any.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.50.0 CPython/3.6.9

File hashes

Hashes for pvporcupine-1.8.6-py3-none-any.whl
Algorithm Hash digest
SHA256 2c8c2e312cd83c25b444dc6dbac3f4a07adeb35a8cb8ef53d5e9d6923d0cea26
MD5 0b08be68e2fa196ddf9b049abfe9b987
BLAKE2b-256 67da027f98d4cf52591549109a37d0bb87150a813b48cd9d83a9abca076b7bf9

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page