A wake word engine
is a tiny algorithm designed to continuously analyze an audio stream for a specific wake word
, triggering the activation of your voice assistant as soon as it's detected.
Wake word
is synonymous with the terms trigger word
, hotword
, and wake-up word
.
“Hey Siri”, “Alexa”, and “OK Google” have become some of the most recognizable wake words
due to major tech companies not providing options aside from their own proprietary wake words
. However, businesses often find it preferable to have a custom wake word
that aligns with their own brand identity. Fortunately, Picovoice's Porcupine Wake Word Detection engine enables developers to create and train custom wake words
in seconds, for free.
In this article, we will demonstrate how to add a custom wake word
to a Next.js
application.
Demo Project
1. Project Setup
Create a new Next.js
application:
You will be prompted to configure some basic settings. Feel free to use the default option for each prompt.
Next, install the required dependencies:
Launch the local server to access your page on http://localhost:3000
:
2. Picovoice Console
Sign up for a free Picovoice Console account and copy your AccessKey
from the main dashboard.
Navigate to the Porcupine
page to create your custom wake word
. For detailed step-by-step instructions, refer to the Porcupine Console tutorial or watch the video tutorial.
Once you've created and downloaded your wake word
, you will find a .zip
folder in your downloads that contains a file with a .ppn
extension. Unzip this folder and move the .ppn
file into your project's /public
directory.
3. Application
Download the Porcupine model file and put this file into the /public
directory of your project.
In page.tsx
, import the usePorcupine
hook. This hook returns all the necessary values and functions you need to integrate wake word
functionality into your project:
To initialize Porcupine
with the model and custom wake word
, call init
with the following parameters:
Make sure to replace ${ACCESS_KEY}
with your own AccessKey
from your Picovoice Console account. Also make sure to replace ${KEYWORD_PUBLIC_PATH}
with the path to the keyword file (.ppn
file), and ${MODEL_PUBLIC_PATH}
with the path to the model file (.pv
file).
The label
property is a string that will be returned when your wake word
gets detected. This can be used to distinguish between wake words
if your application is listening for more than one. If your wake word
is "Hey Porcupine", you would probably want to set your label
accordingly as "Hey Porcupine".
Once initialized, call start
to begin listening for your wake word
:
To stop listening for your wake word
, call stop
:
For a comprehensive guide on the usePorcupine
hook, refer to the Porcupine React API docs.
To see a minimal working example, replace the contents of page.tsx
with the code below.
Click the "Start" button and say your custom wake word
into your microphone to see Porcupine
in action!
Additional Languages
Picovoice's Porcupine Wake Word Detection engine supports many more languages in addition to English. For instructions on using models in other languages, refer to the Porcupine React Quick Start guide.