برنامه نویسی

دستورات صوتی همیشه گوش دادن برای برنامه های وب 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 سفارشی خود را آموزش دهید و اضافه کنید… بعد چه کاری باید انجام دهم؟

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا