Porcupine Wake Word

Build always-listening yet private voice applications

Train production-ready models in seconds

Start Building for FreeWork with an expert
Loading...

  • Hot Pink
  • Lime Green
  • Deep Sky Blue

  • Knallpink
  • Limettengrün
  • Himmelblau

  • Rosado Fuerte
  • Lima Verde
  • Celeste Profundo

  • Rose Vif
  • Vert Citron
  • Bleu Ciel Foncé

  • Rosa Caldo
  • Verde Lime
  • Azzurro

  • 桃色
  • 萌黄
  • 空色

  • 핫 핑크
  • 라임 그린
  • 깊은 하늘색

  • Rosa Choque
  • Verde Limão
  • Azul Celeste
Loading...

  • Hot Pink
  • Lime Green
  • Deep Sky Blue

  • Knallpink
  • Limettengrün
  • Himmelblau

  • Rosado Fuerte
  • Lima Verde
  • Celeste Profundo

  • Rose Vif
  • Vert Citron
  • Bleu Ciel Foncé

  • Rosa Caldo
  • Verde Lime
  • Azzurro

  • 桃色
  • 萌黄
  • 空色

  • 핫 핑크
  • 라임 그린
  • 깊은 하늘색

  • Rosa Choque
  • Verde Limão
  • Azul Celeste
Picovoice is a leader in the field of wake word detection. We are extremely impressed with how easy it is to get a wake word and how well it performs. We have tried other alternatives, but they do not perform as well.
Monica Lam
Professor of Computer Science,
Stanford University

Train Custom Wake Words Instantly

Train branded wake words and always-listening custom voice commands on Picovoice Console, no machine learning or coding skills required. Type the phrase to train a production-grade keyword model in seconds. Test instantly within your browser.

Start Building
Picovoice Console User Interface to train platform-optimized always-listening voice commands and wake words instantly
Start Building

Build with Picovoice SDKs in Minutes

Reduce time-to-market and eliminate engineering risks with the Picovoice SDK of your choice, including Python, Flutter and React. Add only a few lines of code, and let Picovoice SDK take care of audio capture and voice recognition.

o = pvporcupine.create(
access_key=access_key,
keyword_paths=keyword_paths)
while True:
keyword_index =
o.process(audio_frame())
if keyword_index >= 0:
// Detection callback
Build with Python
let o = new Porcupine(
accessKey,
keywordPaths,
sensitivities);
while (true) {
let keywordIndex =
o.process(audioFrame());
if (keywordIndex >= 0) {
// Detection callback
}
}
Build with NodeJS
PorcupineManagerCallback
callback =
new PorcupineManagerCallback() {
@Override
public void
invoke(int keywordIndex) {
// Detection callback
}
}
PorcupineManager o =
new PorcupineManager.Builder()
.setAccessKey(accessKey)
.setKeywordPath(keywordPath)
.build(
appContext,
callback);
o.start()
Build with Android
let o = try PorcupineManager(
accessKey,
keywordPath: keywordPath,
onDetection: { keywordIndex in
// Detection callback
})
try o.start()
Build with iOS
const {
keywordDetection,
isLoaded,
isListening,
error,
init,
start,
stop,
release,
} = usePorcupine();
init(
accessKey,
keywords,
model
);
useEffect(() => {
if (keywordDetection !== null) {
// Keyword detection
}
}, [keywordDetection])
Build with React
PorcupineManager o =
await PorcupineManager
.fromKeywordPaths(
accessKey,
keywordPaths,
(keywordIndex) => {
// Detection callback
});
await o.start()
Build with Flutter
let o = await PorcupineManager
.fromKeywordPaths(
accessKey,
keywordPaths,
(keywordIndex) => {
// Detection callback
});
await o.start()
Build with React Native
PorcupineManager o =
PorcupineManager
.FromKeywordPaths(
accessKey,
keywordPaths,
(keywordIndex) => {
// Detection callback
});
o.start();
Build with Unity
constructor(
private o: PorcupineService) {
this.keywordSubscription =
o.keywordDetection$.subscribe(
d => {
// Detection callback
}
)
}
async ngOnInit() {
await this.o.init(
accessKey,
keywords,
model
)
}
Build with Angular
{
data() {
const {
state,
init,
start,
stop,
release
} = usePorcupine();
init(
accessKey,
keywords,
model
);
return {
s: state,
start,
stop,
release
}
},
watch: {
"s.keywordDetection":
function (o) {
if (o !== null) {
// Detection callback
}
}
}
}
Build with Vue
Porcupine o =
Porcupine.FromKeywordPaths(
accessKey,
keywordPaths);
while (true)
{
int keywordIndex =
o.Process(Audio());
if (keywordIndex >= 0)
{
// Detection callback
}
}
Build with .NET
Porcupine o =
new Porcupine.Builder()
.setAccessKey(accessKey)
.setKeywordPath(keywordPath)
.build();
while (true) {
int keywordIndex =
o.process(audioFrame());
if (keywordIndex >= 0) {
// Detection callback
}
}
Build with Java
o := Porcupine{
AccessKey: accessKey,
KeywordPaths: keywordPaths}
o.Init()
for {
keywordIndex, err :=
o.Process(AudioFrame())
if keywordIndex >= 0 {
// Detection callback
}
}
Build with Go
let o: Porcupine =
PorcupineBuilder
::new_with_keyword_paths(
keyword_paths
)
.init()
.expect("");
loop {
if let Ok(keyword_index) =
o.process(&audio_frame()) {
if keyword_index >= 0 {
// Detection callback
}
}
}
Build with Rust
pv_porcupine_t *porcupine = NULL;
pv_porcupine_init(
access_key,
model_path,
num_keywords,
keyword_paths,
&sensitivities,
&porcupine);
while (true) {
pv_porcupine_process(
porcupine,
audio_frame(),
&keyword_index);
if (keyword_index >= 0) {
// Detection callback
}
}
Build with C

Deploy a Unified Voice Experience Anywhere

Elevate user experience across all channels while remaining platform agnostic. Add always-listening custom voice commands and wake words to your existing platforms without worrying about future expansions.

Grow with no limits

Grow user engagement with unlimited voice interactions without worrying about unbounded API costs. Scale globally with Picovoice’s multilingual support for English, French, German, Italian, Japanese, Korean, Portuguese, Spanish, and more.

Start with the Free Tier

English

German
Deutsch

Spanish
Español

French
Français

Italian
Italiano

Japanese
日本語

Korean
한국어

Portuguese
Português

Mandarin
普通话

Dutch
Nederlands

Russian
Русский

Hindi
हिन्दी

Polish
Język polski

Vietnamese
Tiếng Việt

Swedish
Svenska

Arabic
اَلْعَرَبِيَّةُ

Start with the Free Tier

Why Porcupine Wake Word?

Highly accurate — backed by open-source benchmark, not PowerPoint

When it comes to accuracy, make a decision based on data, not claims. Every voice AI vendor claims their technology is “revolutionary” and has “the highest wake word response accuracy”, with no rigorous or reproducible scientific proof. Instead, we published an open-source wake word benchmark to back that Porcupine functions robustly across various accents and in the presence of noise and reverberations.

Lightweight — Runs locally on microcontrollers or even offline in web browsers.

Always-listening keyword spotting requires voice data to be processed on-device. Otherwise, it risks user privacy, drains the battery, incurs unbounded costs, and gives a poor user experience. Porcupine always processes voice data offline, even within your browser. Go to the Lamp Demo and turn off the internet connection. It keeps working, right?

Loading...

  • Hot Pink
  • Lime Green
  • Deep Sky Blue

  • Knallpink
  • Limettengrün
  • Himmelblau

  • Rosado Fuerte
  • Lima Verde
  • Celeste Profundo

  • Rose Vif
  • Vert Citron
  • Bleu Ciel Foncé

  • Rosa Caldo
  • Verde Lime
  • Azzurro

  • 桃色
  • 萌黄
  • 空色

  • 핫 핑크
  • 라임 그린
  • 깊은 하늘색

  • Rosa Choque
  • Verde Limão
  • Azul Celeste

Scalable — Supports multilingual voice user interfaces.

Porcupine Wake Word Engine can detect many keywords and phrases concurrently with no added CPU footprint, even in many languages.

Try the Smart Lamp demo that contains 24 wake words from eight different languages. The demo works within the web browser and detects multiple wake words.

Learn more about Porcupine Wake Word Engine

  • What is Wake Word or Trigger Word or Hotword?

    A wake word is a special phrase that activates dormant applications. For example, most known wake words “Alexa”, “Hey Siri” and “Hey Google” activate Amazon Echo, Apple devices such as Homepods, iPhones, and Macbooks, and Google devices such as Chromecast and Pixel. Wake Words and "trigger words" , “hotwords” or “wake up words” are used interchangeably.

  • What is Wake Word Detection?

    Wake word detection is one of the applications of Keyword Spotting (KWS) technology. It detects (spots) keywords and phrases in audio streams and conversations. It’s mainly used for voice activation, in other words, to activate dormant devices and applications (i.e. wakes them up). There is no difference between Hotword, Hot Word, Trigger Word, Wake Word, and Wake-Up Word. For example, Picovoice’s wake word engine, Porcupine, is used by NASA for several projects. In one project, NASA calls it Hot Word Recognition and in another, Wake Word Detection. Google predominantly uses Hotword Detection.

  • How does a wake word work?

    A wake word detection engine is a binary classifier that recognizes pre-defined phrases. During training, the detector learns the desired wake word vs. others and how to differentiate chosen keywords from others. Wake word detection should run locally on the device to achieve affordable, power-efficient and private hands-free voice experiences. Wake Word Detection engines listen to conversations in the environment. Thus it has to be resource-efficient and fast. That’s why using other solutions, such as automatic speech recognition for wake word detection, is not a good idea.

    If you haven’t, try the Smart Lamp demo offline. Turn off your internet connection before running the demo. Porcupine Wake Word Detection processes voice data within the web browser and can detect multiple wake words in many languages.

  • How should I choose a wake word?

    The performance of the wake word depends on several factors, including the number of phonemes, vowels, and syllables. For more information, check out the guide on choosing a wake word.

  • Does custom wake word training require gathering customer data?

    Picovoice doesn’t rely on nor gathers customer data, thanks to transfer and self-supervised learning algorithms in Porcupine. Design on your terms without worrying about time-to-market, cost, and governance.

  • What can I build with a Wake Word Detection engine?

    Wake word detection ensures privacy, reliability and zero latency of voice-activated products. While the most common use case is activating dormant applications, wake word detection engines enable other use cases, such as moderation and monitoring. Don’t forget to check out Voice Search, Voice Commands and Control, Search by Voice and Speech Analytics use cases to learn more about various voice AI applications.

  • Which platforms does Porcupine Wake Word support?

    1. Microcontrollers: Arm Cortex-M, STM32, Arduino, and i.MX RT
    2. Single Board Computers: Raspberry Pi, NVIDIA Jetson, and BeagleBone
    3. Mobile Devices: Android and iOS
    4. Web Browsers : Chrome, Safari, Firefox, and Edge
    5. Desktop and Servers: Linux, macOS, and Windows
  • How do I get technical support for Porcupine Wake Word?

    Picovoice docs, blogs, Medium posts, and GitHub are great resources to learn about voice recognition, Picovoice engines, and how to start building voice-activated products. Picovoice also offers GitHub community support to all Free Tier users.

  • Can I change “Alexa” or “Hey Google” wake words?

    Porcupine Wake Word Engine empowers developers to train any wake word of choice and always-listening custom commands that could work with Alexa-enabled applications and Google Assistant. Technically, “Jarvis” or other phrases can be created and used to change “Alexa” and “Hey Google” wake words. After training custom wake words to change Alexa and “Ok Google” engage with Amazon and Google for certification and integration processes.

  • Can I train a custom wake word?

    Training a custom wake word with Porcupine Wake Word Detection takes less than a minute and it is free. Unlike other vendors, Picovoice does not require prior commercial engagement for enterprise-grade wake words.Train your custom wake word now!

  • How can I compare the accuracy and feasibility of other hotword and trigger word detection engines?

    Comparing hotword, trigger word, wake word or wake-up word models the right way is complex. Learn more about the terms, such as FAR, FRR and ROC, used in evaluations and use the open-source benchmark whether your vendor calls it hotword, trigger word, wake word or wake-up word.

  • What should I do if I need support for other languages?

    Engage with Picovoice Sales by providing details about the opportunity, including use cases, requirements, and project details. Someone from the Picovoice team will respond to you.

  • How can I get informed about the updates and upgrades?

    Version changes appear in the Picovoice Newsletter, LinkedIn, and Twitter. Subscribing to GitHub is the best way to get notified of the patch releases. If you enjoy building with Porcupine, don’t forget to give it a star when you’re on GitHub !