Flutter 端到端的语音转文字引擎插件leopard_flutter的使用

发布于 1周前 作者 sinazl 最后一次编辑是 5天前 来自 Flutter

Flutter 端到端的语音转文字引擎插件leopard_flutter的使用

Leopard Speech-to-Text引擎

由加拿大温哥华的Picovoice公司开发。

Leopard是一款端到端的语音转文字引擎。Leopard具有以下特点:

  • 私密性:所有语音处理都在本地运行。
  • 准确性。
  • 紧凑且计算效率高。
  • 跨平台:
    • Linux (x86_64), macOS (x86_64, arm64), Windows (x86_64)
    • Android和iOS
    • Chrome, Safari, Firefox, 和Edge
    • Raspberry Pi (3, 4, 5)

兼容性

该插件适用于以下平台上的Flutter 2.8.1+:

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

安装

首先,你需要在系统上安装Flutter SDK。安装完成后,可以运行flutter doctor来确定其他缺失的要求。

要在项目中添加Leopard插件,可以在pubspec.yaml文件中引用它:

dependencies:
  leopard_flutter: ^<version>

AccessKey

初始化Leopard时需要一个有效的Picovoice AccessKeyAccessKey作为你使用Leopard SDK的凭证。 你可以免费获取你的AccessKey。务必保密你的AccessKey。 请注册或登录到Picovoice控制台以获取你的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" />

使用

通过传递模型文件路径给其静态构造函数create来创建一个Leopard实例:

import 'package:leopard_flutter/leopard.dart';

String accessKey = '{ACCESS_KEY}' // 从Picovoice控制台获得的AccessKey (https://console.picovoice.ai/)
String modelPath = '{MODEL_FILE_PATH}' // 相对于assets文件夹的路径或设备上的绝对路径

void createLeopard() async {
    try {
        _leopard = await Leopard.create(accessKey, modelPath);
    } on LeopardException catch (err) {
        // 处理Leopard初始化错误
    }
}

通过传递音频文件路径来转录音频文件:

String audioPath = '{AUDIO_FILE_PATH}'

try {
    LeopardTranscript result = await _leopard.processFile(audioPath);
    print(result.transcript);
} on LeopardException catch (err) { }

完成时,显式释放资源:

await _leopard.delete();

语言模型

将Leopard模型文件添加到你的Flutter应用程序:

  1. Picovoice控制台中创建一个模型,或者使用其中一个默认语言模型
  2. 将模型文件添加到项目目录中的assets文件夹。
  3. pubspec.yaml文件中添加资产:
flutter:
  assets:
    - assets/leopard_model.pv
  1. 在这种情况下,代码中的模型文件路径将是:
String modelPath = "assets/leopard_model.pv";

如果模型文件以不同的方法部署到设备上,则可以使用设备上的绝对路径。

单词元数据

除了转录外,Leopard还为每个转录的单词返回元数据。可用的元数据项包括:

  • 开始时间:表示单词在转录音频中的开始时间。值为秒。
  • 结束时间:表示单词在转录音频中的结束时间。值为秒。
  • 置信度:Leopard对转录单词准确性的置信度。这是一个在[0, 1]范围内的数字。
  • 说话者标签:如果在初始化时启用了说话者划分,说话者标签是一个非负整数,用于标识唯一的说话者,其中0保留给未知说话者。如果未启用说话者划分,值将始终为-1

示例代码

import 'package:flutter/material.dart';
import 'package:leopard_flutter/leopard.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Leopard Demo'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () {
              createLeopard();
            },
            child: Text('Start Transcription'),
          ),
        ),
      ),
    );
  }
}

String accessKey = '{ACCESS_KEY}' // 从Picovoice控制台获得的AccessKey (https://console.picovoice.ai/)
String modelPath = "assets/leopard_model.pv";

Leopard? _leopard;

void createLeopard() async {
  try {
    _leopard = await Leopard.create(accessKey, modelPath);
    String audioPath = "assets/sample_audio_file.pcm"; // 替换为实际音频文件路径
    LeopardTranscript result = await _leopard!.processFile(audioPath);
    print(result.transcript);
  } on LeopardException catch (err) {
    print("Error: $err");
  }
}

更多关于Flutter 端到端的语音转文字引擎插件leopard_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter 端到端的语音转文字引擎插件leopard_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


针对帖子中提到的Flutter未知功能插件leopard_flutter,由于leopard_flutter并非一个广为人知的官方或广泛使用的Flutter插件,我无法提供确切的文档或官方示例。不过,我可以基于一般Flutter插件的使用方式,给出一个假设性的代码案例,展示如何在一个Flutter项目中集成并使用一个假想的leopard_flutter插件。

请注意,以下代码仅作为示例,实际使用时需要根据leopard_flutter插件的具体API进行调整。

1. 添加依赖

首先,在pubspec.yaml文件中添加对leopard_flutter插件的依赖。这里假设插件已经在pub.dev上发布,或者你已经通过其他方式将其包含在你的项目中。

dependencies:
  flutter:
    sdk: flutter
  leopard_flutter: ^x.y.z  # 替换为实际版本号

然后运行flutter pub get来安装依赖。

2. 导入插件

在你的Dart文件中导入leopard_flutter插件。

import 'package:leopard_flutter/leopard_flutter.dart';

3. 使用插件功能

假设leopard_flutter插件提供了一个名为LeopardService的类,该类具有一些方法,比如fetchData用于获取数据。以下是如何使用这些方法的示例代码:

import 'package:flutter/material.dart';
import 'package:leopard_flutter/leopard_flutter.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Leopard Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: LeopardDemoScreen(),
    );
  }
}

class LeopardDemoScreen extends StatefulWidget {
  @override
  _LeopardDemoScreenState createState() => _LeopardDemoScreenState();
}

class _LeopardDemoScreenState extends State<LeopardDemoScreen> {
  String? data;

  @override
  void initState() {
    super.initState();
    _fetchData();
  }

  Future<void> _fetchData() async {
    try {
      // 假设LeopardService是插件提供的类,fetchData是其方法
      final LeopardService service = LeopardService();
      String result = await service.fetchData();
      setState(() {
        data = result;
      });
    } catch (e) {
      print('Error fetching data: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Leopard Flutter Demo'),
      ),
      body: Center(
        child: Text(data ?? 'Loading data...'),
      ),
    );
  }
}

注意事项

  1. 实际API:上述代码中的LeopardService及其fetchData方法是假设性的。你需要根据leopard_flutter插件的实际API文档进行调整。
  2. 错误处理:在实际应用中,应该添加更详细的错误处理逻辑,以提高应用的健壮性。
  3. 插件文档:查阅leopard_flutter插件的官方文档或源代码,以获取准确的API信息和用法示例。

由于leopard_flutter的具体信息未知,上述代码仅作为一般性的Flutter插件使用示例。在实际使用时,请务必参考插件的官方文档。

回到顶部