Flutter 端到端的语音转文字引擎插件leopard_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 AccessKey
。AccessKey
作为你使用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应用程序:
- 在Picovoice控制台中创建一个模型,或者使用其中一个默认语言模型。
- 将模型文件添加到项目目录中的
assets
文件夹。 - 在
pubspec.yaml
文件中添加资产:
flutter:
assets:
- assets/leopard_model.pv
- 在这种情况下,代码中的模型文件路径将是:
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
更多关于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...'),
),
);
}
}
注意事项
- 实际API:上述代码中的
LeopardService
及其fetchData
方法是假设性的。你需要根据leopard_flutter
插件的实际API文档进行调整。 - 错误处理:在实际应用中,应该添加更详细的错误处理逻辑,以提高应用的健壮性。
- 插件文档:查阅
leopard_flutter
插件的官方文档或源代码,以获取准确的API信息和用法示例。
由于leopard_flutter
的具体信息未知,上述代码仅作为一般性的Flutter插件使用示例。在实际使用时,请务必参考插件的官方文档。