دستورات صوتی همیشه گوش دادن برای برنامه های وب Vaadin
این آموزش کوچک 15 دقیقه از شروع تا یک نسخه ی نمایشی کار می کند. ما از Picovoice Porcupine Wake Word Engine برای فعال کردن یک برنامه وب جاوا مبتنی بر Vaadin استفاده می کنیم.
(اگر زمان زیادی ندارید: مخزن را شبیه سازی کنید، یک کلید دسترسی ایجاد کنید و آن را اجرا کنید.)
Wake Word Detection با نامهای نقطهگذاری کلمه کلیدی، تشخیص کلمه کلیدی، فرمانهای صوتی همیشه در حال شنیدن، شناسایی کلمات فعال و فعالسازی صوتی نیز شناخته میشود.
پروژه را راه اندازی کنید
اولین قدم ایجاد یک پروژه کاربردی جدید Vaadin Java است:
1. دانلود پروژه جدید از start.vaadin.com با نمای خالی.
2. ایجاد Java API جدید برای شناسایی کلمات کلیدی همیشه روشن و وارد کردن کتابخانه های Picovoice:
package com.example.application;
import com.vaadin.flow.component.UI;
import com.vaadin.flow.component.dependency.JsModule;
import com.vaadin.flow.component.dependency.NpmPackage;
@NpmPackage(value = "@picovoice/porcupine-web", version = "2.1.16")
@NpmPackage(value = "@picovoice/web-voice-processor", version = "4.0.5")
@JsModule("./porcupine-integration.js")
public class Porcupine {
boolean started = false;
public Porcupine(String picovoiceAccesskey) {
UI.getCurrent().getPage().executeJs("window.vaadinPorcupine.key=$0;"
, picovoiceAccesskey);
}
public void start() {
this.started = true;
UI.getCurrent().getPage().executeJs("window.vaadinPorcupine.start()");
}
public void stop() {
this.started = false;
UI.getCurrent().getPage().executeJs("window.vaadinPorcupine.stop()");
}
public boolean isStarted() {
return this.started;
}
}
این API سرور موجود برای بقیه برنامه جاوا Vaadin است.
3. porcupine-integration.js را در پوشه frontend پروژه ایجاد کنید.
import { WebVoiceProcessor } from "@picovoice/web-voice-processor";
import { PorcupineWorker, BuiltInKeyword } from "@picovoice/porcupine-web";
import modelParams from "./porcupine_params.js";
// a global 'vaadinPorcupine' integration instance is enough
window.vaadinPorcupine = window.vaadinPorcupine || {
key: null,
async start() {
console.log('Starting wake word detection');
window.vaadinPorcupine._worker = window.vaadinPorcupine._worker ||
await PorcupineWorker.create(
window.vaadinPorcupine.key,
[BuiltInKeyword.Computer],
window.vaadinPorcupine.keywordDetectionCallback,
{base64: modelParams }
);
await WebVoiceProcessor.subscribe(window.vaadinPorcupine._worker);
},
async stop() {
console.log('Stopping wake word detection');
await WebVoiceProcessor.unsubscribe(window.vaadinPorcupine._worker);
},
keywordDetectionCallback(detection) {
console.log(`Detected keyword: ${detection.label}`);
const e = new CustomEvent("voice-wakeword",
{ "detail": detection.label });
document.body.dispatchEvent(e);
}
}
این بخش سمت سرویس گیرنده API است که کتابخانه شناسایی کلمه بیدار درون مرورگر را یکپارچه می کند.
4. مدل Porcupine (یعنی شبکه عصبی عمیق) را دانلود کنید. از پوشه project frontend، موارد زیر را اجرا کنید تا مدل باینری .pv به یک مدل رشته base64 تبدیل شود.
echo "const model_params="$( cat porcupine_params.pv | base64 )";\nexport default model_params;\n\n" > porcupine_params.js
5. Picovoice AccessKey خود را دریافت کنید
به داشبورد Picovoice Console بروید. AccessKey خود را کپی کنید.
6. یک دکمه تست به EmptyView.java اضافه کنید تا تشخیص کلمه بیدار را روشن و خاموش کنید:
final Porcupine porcupine = new Porcupine(System.getenv("PICOVOICE_ACCESSKEY"));
add(new Button("Start/Stop wake word detection", e -> {
if (!porcupine.isStarted()) {porcupine.start(); }
else { porcupine.stop();}
}));
برنامه را با استفاده از AccessKey خود اجرا کنید:
PICOVOICE_ACCESSKEY=your_accesskey_here ./mvnw
کد منبع و نمونه های بیشتر؟
کد منبع برای یک نسخه نمایشی کاملاً کارآمد Vaadin با Porcupine در مخزن GitHub من موجود است. من یک رویداد سفارشی و مثال کنترلر را در آنجا اضافه کرده ام و بعداً نشان خواهم داد که چگونه با استفاده از Picovoice Porcupine کلمه wake سفارشی خود را آموزش دهید و اضافه کنید… بعد چه کاری باید انجام دهم؟