New releases of Porcupine Wake Word and Rhino Speech-to-Intent engines add support for Arabic, Dutch, Hindi, Mandarin, Polish, Russian, Swedish, and Vietnamese, doubling the language support once again. Now, developers can build voice user interfaces and assistants in 16 languages.

Picovoice Wake Word training UI showing 16 languages: English, Arabic, Dutch, French, German, Hindi, Italian, Japanese, Korean, Mandarin, Polish, Portuguese, Russian, Spanish, Swedish, and Vietnamese.

Polyglot Voice Interfaces

Picovoice’s unique approach to multilingual support allows developers to run multiple models simultaneously. With the new release, developers can create cross-platform voice assistants in 16 languages without switching from one to another.

In the demo below, you can interact with the Smart Lamp in English, German, French, Italian, Japanese, Korean, Portuguese, and Spanish. Once you enable all the languages, you can interact with them all at once. The demo runs within your web browser. It does not send recordings to the Picovoice cloud for processing the voice data.

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

Start Building Now!

Training custom wake words with Porcupine Wake Word and custom voice commands with Rhino Speech-to-Intent doesn’t require experience in Machine Learning or coding. Anyone, even Free Plan users, can train custom wake words and voice commands in English, Arabic, Dutch, French, German, Hindi, Italian, Japanese, Korean, Mandarin, Polish, Portuguese, Russian, Spanish, Swedish, and Vietnamese on Picovoice Console .

Model names on Picovoice Console: أمر صوتي (Arabic), spraakopdracht (Dutch), वॉयस कमांड (Hindi), 语音控制 (Mandarin), komenda głosowa (Polish), голосовая команда (Russian), röstkommando (Swedish), ra lệnh bằng giọng nói (Vietnamese)

Picovoice’s Free Plan allows any developer to have an up-and-running voice feature in less than 10 minutes and use it even commercially. It takes only a few lines of code to embed custom voice AI models into any software with Picovoice’s cross-platform and intuitive SDKs. Choose your favorite SDK and start building now!

porcupine = pvporcupine.create(
access_key=access_key,
keyword_paths=keyword_paths)
while True:
keyword_index = porcupine.process(audio_frame())
if keyword_index >= 0:
// Detection callback
Build with Python
let porcupine = new Porcupine(
accessKey,
keywordPaths,
sensitivities);
while (true) {
let keywordIndex = porcupine.process(audioFrame());
if (keywordIndex >= 0) {
// Detection callback
}
}
Build with NodeJS
PorcupineManager porcupineManager = new PorcupineManager.Builder()
.setAccessKey(accessKey)
.setKeywordPath(keywordPath)
.build(
appContext,
new PorcupineManagerCallback() {
@Override
public void invoke(int keywordIndex) {
// Detection callback
}
}
);
porcupineManager.start()
Build with Android
let porcupineManager = try PorcupineManager(
accessKey,
keywordPath: keywordPath,
onDetection: { keywordIndex in
// Detection callback
})
try porcupineManager.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 porcupineManager = await PorcupineManager.fromKeywordPaths(
accessKey,
keywordPaths,
(keywordIndex) => {
// Detection callback
});
await porcupineManager.start()
Build with Flutter
let porcupineManager = await PorcupineManager.fromKeywordPaths(
accessKey,
keywordPaths,
(keywordIndex) => {
// Detection callback
});
await porcupineManager.start()
Build with React Native
PorcupineManager porcupineManager = PorcupineManager.FromKeywordPaths(
accessKey,
keywordPaths,
(keywordIndex) => {
// Detection callback
});
porcupineManager.start();
Build with Unity
constructor(private porcupineService: PorcupineService) {
this.keywordSubscription = porcupineService.keywordDetection$.subscribe(
porcupineDetection => {
// Detection callback
}
)
}
async ngOnInit() {
await this.porcupineService.init(
accessKey,
keywords,
model
)
}
Build with Angular
{
data() {
const {
state,
init,
start,
stop,
release
} = usePorcupine();
init(accessKey, keywords, model);
return { state, start, stop, release }
},
watch: {
"state.keywordDetection": function (keyword) {
if (keyword !== null) {
// Detection callback
}
}
}
}
Build with Vue
Porcupine porcupine = Porcupine.FromKeywordPaths(
accessKey,
keywordPaths);
while (true)
{
var keywordIndex = porcupine.Process(AudioFrame());
if (keywordIndex >= 0)
{
// Detection callback
}
}
Build with .NET
Porcupine porcupine = new Porcupine.Builder()
.setAccessKey(accessKey)
.setKeywordPath(keywordPath)
.build();
while (true) {
int keywordIndex = porcupine.process(audioFrame());
if (keywordIndex >= 0) {
// Detection callback
}
}
Build with Java
porcupine := Porcupine{
AccessKey: accessKey,
KeywordPaths: keywordPaths}
porcupine.Init()
for {
keywordIndex, err := porcupine.Process(AudioFrame())
if keywordIndex >= 0 {
// Detection callback
}
}
Build with Go
let porcupine: Porcupine = PorcupineBuilder
::new_with_keyword_paths(keyword_paths)
.init()
.expect("");
loop {
if let Ok(keyword_index) = porcupine.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

Happy Birthday, Porcupine!

5 years ago today , Picovoice announced its first product, Porcupine Wake Word - available only in English and taking hours to train. Yet, it was groundbreaking. Five years later,

  • Porcupine Wake Word is available in 16 languages.
  • It takes just a few seconds to train a wake word, not hours, definitely, not weeks.
  • Porcupine Wake Word was the first and is still the only cross-platform wake word engine.

It still is groundbreaking, and we couldn’t have achieved it without you. Thank you!