Train custom wake words in seconds, deploy everywhere. Highly accurate, lightweight engine runs on any platform - embedded, mobile, web, desktop, or server.
1o = pvporcupine.create(2 access_key=access_key,3 keyword_paths=keyword_paths)4
5while True:6 keyword_index =7 o.process(audio_frame())8 if keyword_index >= 0:9 // Detection callback
1let o = new Porcupine(2 accessKey,3 keywordPaths,4 sensitivities);5
6while (true) {7 let keywordIndex =8 o.process(audioFrame());9 if (keywordIndex >= 0) {10 // Detection callback11 }12}
1PorcupineManagerCallback2callback =3new PorcupineManagerCallback() {4 @Override5 public void6 invoke(int keywordIndex) {7 // Detection callback8 }9}10
11PorcupineManager o =12new PorcupineManager.Builder()13 .setAccessKey(accessKey)14 .setKeywordPath(keywordPath)15 .build(16 appContext,17 callback);18
19o.start()
1let o = try PorcupineManager(2 accessKey,3 keywordPath: keywordPath,4 onDetection: { keywordIndex in5 // Detection callback6 })7
8try o.start()
1const {2 keywordDetection,3 isLoaded,4 isListening,5 error,6 init,7 start,8 stop,9 release,10} = usePorcupine();11
12await init(13 accessKey,14 keywords,15 model16);17
18await start();19
20useEffect(() => {21 if (keywordDetection !== null) {22 // Handle keyword detection23 }24}, [keywordDetection])
1PorcupineManager o =2await PorcupineManager3 .fromKeywordPaths(4 accessKey,5 keywordPaths,6 (keywordIndex) => {7 // Detection callback8 });9
10await o.start()
1let o = await PorcupineManager2 .fromKeywordPaths(3 accessKey,4 keywordPaths,5 (keywordIndex) => {6 // Detection callback7 });8
9await o.start()
1PorcupineManager o =2PorcupineManager3 .FromKeywordPaths(4 accessKey,5 keywordPaths,6 (keywordIndex) => {7 // Detection callback8 });9
10o.start();
1Porcupine o =2 Porcupine.FromKeywordPaths(3 accessKey,4 keywordPaths);5
6while (true)7{8 int keywordIndex =9 o.Process(Audio());10 if (keywordIndex >= 0)11 {12 // Detection callback13 }14}
1Porcupine o =2 new Porcupine.Builder()3 .setAccessKey(accessKey)4 .setKeywordPath(keywordPath)5 .build();6
7while (true) {8 int keywordIndex =9 o.process(audioFrame());10 if (keywordIndex >= 0) {11 // Detection callback12 }13}
1pv_porcupine_t *porcupine = NULL;2pv_porcupine_init(3 access_key,4 model_path,5 num_keywords,6 keyword_paths,7 &sensitivities,8 &porcupine);9
10while (true) {11 pv_porcupine_process(12 porcupine,13 audio_frame(),14 &keyword_index);15 if (keyword_index >= 0) {16 // Detection callback17 }18}
Porcupine Wake Word is an advanced wake word detection engine that enables developers to create custom voice activation triggers for applications.
"Hey Siri", "Alexa", and "OK Google" are the most widely known wake words and Big Tech forces enterprises to use them instead of branded wake words. Legacy vendors hide their old technology behind "talk to sales" and offer mediocre custom wake words only after months of engagements and iteration. Porcupine Wake Word is what a wake word detection engine should be: lightweight, accurate, and production-ready.
A wake word is a unique phrase that activates dormant applications. For example, Amazon, Apple, and Google devices wake up when they detect Alexa, Hey Siri, and OK Google. Wake word, trigger word, hotword, and wake-up word are used interchangeably.
Wake Word Detection is one of the applications of Keyword Spotting (KWS) technology. It detects (spots) phrases (keywords) in audio streams and conversations. Voice activation is the most common use case for wake word detection.
Trigger Word Detection, Hotword Detection, and Wake Word Detection are interchangeable terms. For example, NASA uses the terms hot word recognition in one project and wake word detection in another, despite using the same product: Porcupine Wake Word Detection. Google predominantly uses hotword detection but doesn’t offer custom hotwords.
A wake word detection engine is a binary classifier that recognizes pre-defined phrases. During training, the detection engine learns the desired wake word and how to differentiate it, so when integrated into software listens to the environment to detect that keyword.
First and foremost, it should be accurate with low FAR and FRR. Secondly, it should run locally on the device to achieve affordable, power-efficient, and private hands-free experiences. Lastly, it has to be resource-efficient and fast as wake word detection engines listen to conversations in the environment. That’s why using other solutions, such as automatic speech recognition for wake word detection, is not a good idea.
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.
Picovoice doesn’t gather or require customer data, thanks to transfer and self-supervised learning algorithms in Porcupine Wake Word.
No. Training a branded wake word on the self-service Picovoice Console does not even require any coding skills. Simply type your desired wake word and get a working model in seconds.
Developers use wake word detection and keyword spotting for various use cases and applications, such as:
Picovoice docs, blog, Medium posts, and GitHub are great resources to learn about voice AI, Picovoice technology, and how to start using wake words. Enterprise customers get dedicated support specific to their applications from Picovoice Product & Engineering teams. While Picovoice customers reach out to their contacts, prospects can also purchase Enterprise Support before committing to any paid plan.
Porcupine Wake Word 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 replace "Alexa" and "Hey Google". In practice, Amazon and Google policies determine what developers can use.
Training a custom wake word on Picovoice Console takes less than ten seconds and is free even under the Free Plan and Free Trial. Picovoice does not require a commercial engagement to train enterprise-grade custom wake words. After downloading your platform-optimized wake word, integrate it into your product with one of the Porcupine Wake Word SDKs.
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.
Porcupine Wake Word supports English, French, German, Italian, Japanese, Korean, Chinese (Mandarin), Portuguese, and Spanish.
Engage with the Picovoice Consulting team to get a custom language model trained for your use case.