Flutter语音识别插件flutter_lyra的使用
Flutter语音识别插件flutter_lyra的使用
安装
Android
在使用 flutter_lyra
插件之前,需要确保你的项目满足以下条件:
-
在
android/app/build.gradle
文件中,更新你的minSdkVersion
为21或更高:defaultConfig { // others configs minSdkVersion 21 }
-
如果你直接使用
FlutterActivity
,请在AndroidManifest.xml
中将其更改为FlutterFragmentActivity
。 -
如果你使用自定义活动,请更新你的
MainActivity.java
或者MainActivity.kt
以继承FlutterFragmentActivity
。例如:- Java:
import io.flutter.embedding.android.FlutterFragmentActivity; public class MainActivity extends FlutterFragmentActivity { // ... }
- Kotlin:
import io.flutter.embedding.android.FlutterFragmentActivity class MainActivity: FlutterFragmentActivity() { // ... }
- Java:
-
使用一个基于 MaterialTheme 的主题作为 Android 主题应用于
FlutterFragmentActivity
。例如,在android/app/src/main/res/values/styles.xml
中添加如下代码:<style name="NormalTheme" parent="@style/Theme.Material3.Light.NoActionBar"> <item name="android:windowBackground">?android:colorBackground</item> </style>
iOS
对于 iOS 平台,你需要在 ios/Podfile
文件中指定最低支持版本为 iOS 11.0:
platform :ios, '11.0'
关于 Lyra
这个 SDK 是 Lyra 提供的 Android 和 iOS SDK 的 Flutter 接口实现。更多关于 Lyra 的信息可以访问其官方网站。
示例 Demo
以下是使用 flutter_lyra
插件的一个简单示例:
import 'package:flutter/material.dart';
// 假设 LyraManager 和 LyraInitializeOptions 已经被正确导入
void main() => runApp(const MyExampleApp());
class MyExampleApp extends StatelessWidget {
const MyExampleApp({super.key});
@override
Widget build(BuildContext context) {
return FutureBuilder<ReachFive>(
future: LyraManager().initialize(
publicKey: "publicKey",
options: LyraInitializeOptions(
apiServerName: "apiServerName",
nfcEnabled: true,
cardScanningEnabled: false,
),
),
builder: (context, snapshot) {
final lyra = snapshot.data;
if (lyra != null) {
return Column(
children: [
ElevatedButton(
onPressed: () async => lyra.getFormTokenVersion(),
child: const Text('Get Form Token Version'),
)
],
);
}
if (snapshot.hasError) {
return const Text('Handle your initialization error here');
}
return const Text('Loading');
},
);
}
}
请注意,上述代码仅为演示如何初始化并调用 flutter_lyra
插件的方法。实际应用中,你需要根据自己的需求调整初始化参数和方法调用。此外,还需确保所有必要的依赖项已正确配置,并且遵循了平台特定的要求。
更多关于Flutter语音识别插件flutter_lyra的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter语音识别插件flutter_lyra的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何使用Flutter语音识别插件flutter_lyra
的代码示例。这个示例展示了如何初始化插件、开始语音识别、获取识别结果以及停止识别。
首先,确保你已经在pubspec.yaml
文件中添加了flutter_lyra
依赖:
dependencies:
flutter:
sdk: flutter
flutter_lyra: ^最新版本号 # 请替换为实际的最新版本号
然后,运行flutter pub get
来安装依赖。
接下来,在你的Flutter应用中,你可以按照以下步骤使用flutter_lyra
:
- 导入插件
在你的Dart文件中导入flutter_lyra
:
import 'package:flutter_lyra/flutter_lyra.dart';
- 初始化LyraClient
在使用之前,你需要初始化一个LyraClient
实例。你可以在你的应用启动时(例如在MyApp
类的构造函数中)进行初始化:
class MyApp extends StatelessWidget {
static LyraClient? _lyraClient;
@override
Widget build(BuildContext context) {
_initLyraClient();
return MaterialApp(
home: HomeScreen(),
);
}
void _initLyraClient() async {
if (_lyraClient == null) {
_lyraClient = await LyraClient.create(
config: LyraConfig(
region: '你的服务区域', // 例如 'us-west-2'
accessKey: '你的访问密钥',
secretKey: '你的秘密密钥',
),
);
}
}
}
注意:在实际应用中,不要将访问密钥和秘密密钥硬编码在代码中。你可以考虑使用环境变量或安全的密钥管理服务。
- 使用LyraClient进行语音识别
在你的主屏幕或需要的页面中,使用LyraClient
实例来开始和停止语音识别:
class HomeScreen extends StatefulWidget {
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
LyraClient? _lyraClient;
LyraRecognition? _recognition;
String _transcription = '';
@override
void initState() {
super.initState();
_lyraClient = MyApp._lyraClient;
}
void _startRecognition() async {
if (_lyraClient != null) {
_recognition = await _lyraClient!.startRecognition(
onResult: (LyraRecognitionResult result) {
setState(() {
_transcription = result.transcript;
});
},
onError: (error) {
print('Recognition error: $error');
},
onCompleted: () {
print('Recognition completed');
},
);
}
}
void _stopRecognition() async {
if (_recognition != null) {
await _recognition!.stop();
_recognition = null;
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Lyra Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Transcription: $_transcription'),
SizedBox(height: 20),
ElevatedButton(
onPressed: _startRecognition,
child: Text('Start Recognition'),
),
SizedBox(height: 10),
ElevatedButton(
onPressed: _stopRecognition,
child: Text('Stop Recognition'),
),
],
),
),
);
}
}
在这个示例中,我们定义了两个按钮,一个用于开始语音识别,另一个用于停止语音识别。当开始识别时,_startRecognition
方法会被调用,并且每次收到识别结果时,UI会更新显示最新的转录文本。当停止识别时,_stopRecognition
方法会被调用。
请注意,flutter_lyra
插件的实际API可能会根据版本有所不同,因此请参考插件的官方文档以获取最新的使用方法和API细节。此外,确保你已经正确配置了AWS凭证和服务区域,以便插件能够正常工作。