Flutter语音识别插件flutter_lyra的使用

发布于 1周前 作者 songsunli 来自 Flutter

Flutter语音识别插件flutter_lyra的使用

安装

Android

在使用 flutter_lyra 插件之前,需要确保你的项目满足以下条件:

  1. android/app/build.gradle 文件中,更新你的 minSdkVersion 为21或更高:

    defaultConfig {
        // others configs
        minSdkVersion 21
    }
    
  2. 如果你直接使用 FlutterActivity,请在 AndroidManifest.xml 中将其更改为 FlutterFragmentActivity

  3. 如果你使用自定义活动,请更新你的 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() {
          // ...
      }
      
  4. 使用一个基于 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

1 回复

更多关于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

  1. 导入插件

在你的Dart文件中导入flutter_lyra

import 'package:flutter_lyra/flutter_lyra.dart';
  1. 初始化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: '你的秘密密钥',
        ),
      );
    }
  }
}

注意:在实际应用中,不要将访问密钥和秘密密钥硬编码在代码中。你可以考虑使用环境变量或安全的密钥管理服务。

  1. 使用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凭证和服务区域,以便插件能够正常工作。

回到顶部