Flutter高精度轻量级的唤醒词引擎语音聆听插件porcupine_flutter使用

Flutter高精度轻量级的唤醒词引擎语音聆听插件porcupine_flutter使用

Porcupine简介

Flutter插件Porcupine 是一个高精度且轻量级的唤醒词引擎,它使开发者能够构建始终监听的语音启用应用程序。其特点包括:

  • 私密和离线:无需联网即可运行。
  • 准确:具有高度准确性。
  • 资源高效:甚至可以在微控制器上运行。
  • 数据高效:通过简单的文本输入生成自定义唤醒词,而不需要大量的音频训练数据。
  • 可扩展性:支持多个同时唤醒词/始终开启的语音命令。
  • 跨平台:支持多种操作系统。

兼容性

此绑定适用于在以下平台上运行Flutter 2.8.1+:

  • Android 5.0+ (API 21+)
  • iOS 13.0+

安装

首先需要安装Flutter SDK并确保所有依赖项都已就绪。然后在pubspec.yaml文件中添加Porcupine插件:

dependencies:
  porcupine_flutter: ^<version>

或引用本地路径:

dependencies:
  porcupine_flutter:
    path: /path/to/porcupine/flutter/binding

注意事项

在iOS发布时,可能需要更改项目的构建设置以防止Porcupine库被剥离。具体操作为在XCode中将Runner项目中的Strip Style设置为Non-Global Symbols

AccessKey

Porcupine需要有效的Picovoice AccessKey进行初始化。你可以从Picovoice Console获取免费的AccessKey

权限

在iOS和Android上启用麦克风权限:

iOS

Info.plist中添加:

<key>NSMicrophoneUsageDescription</key>
<string>[Permission explanation]</string>

Android

AndroidManifest.xml中添加:

<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />

使用示例

高级API

使用PorcupineManager类可以快速实现唤醒词检测:

import 'package:porcupine_flutter/porcupine_manager.dart';
import 'package:porcupine_flutter/porcupine_error.dart';

final String accessKey = "{ACCESS_KEY}";  // 替换为你的AccessKey

void createPorcupineManager() async {
    try{
        _porcupineManager = await PorcupineManager.fromBuiltInKeywords(
            accessKey,
            [BuiltInKeyword.PICOVOICE, BuiltInKeyword.PORCUPINE],
            _wakeWordCallback);
    } on PorcupineException catch (err) {
        // 处理初始化错误
    }
}

void _wakeWordCallback(int keywordIndex) {
    if (keywordIndex == 0) {
        print("PicoVoice detected");
    } else if (keywordIndex == 1) {
        print("Porcupine detected");
    }
}

启动和停止检测:

try{
    await _porcupineManager.start();
} on PorcupineException catch (ex) {
    // 处理异常
}

await _porcupineManager.stop();

释放资源:

await _porcupineManager.delete();

自定义唤醒词集成

将自定义唤醒词文件添加到项目目录的assets文件夹,并在pubspec.yaml中声明:

flutter:
  assets:
    - assets/keyword.ppn

然后在代码中使用:

String keywordAsset = "assets/keyword.ppn";
try{
    _porcupine = await Porcupine.fromKeywordPaths(
        accessKey,
        [keywordAsset]);
} on PorcupineException catch (err) {
    // 处理初始化错误
}

示例应用

完整的示例应用可以从Porcupine Flutter Demo获取,查看如何在跨平台应用中使用Porcupine。

以上内容展示了如何在Flutter应用中使用Porcupine插件来实现唤醒词检测,希望对您有所帮助!


更多关于Flutter高精度轻量级的唤醒词引擎语音聆听插件porcupine_flutter使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter高精度轻量级的唤醒词引擎语音聆听插件porcupine_flutter使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


Flutter插件Porcupine 是一个高精度且轻量级的唤醒词引擎,它使开发者能够构建始终监听的语音启用应用程序

回到顶部