Flutter语音识别插件alan_voice的使用

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

Flutter语音识别插件alan_voice的使用

Alan Voice Assistant SDK for Flutter允许您为应用程序添加语音功能。通过创建应用内的语音助手,您可以实现类似人类的对话,并为每个用户提供个性化的语音体验。

Alan 是一个语音AI平台

Alan是一个对话式的语音AI平台,可以让您为应用程序创建智能语音助手。它提供了所有必要的工具来设计、嵌入和托管您的语音解决方案:

  • Alan Studio:一个强大的基于Web的IDE,您可以在其中编写、测试和调试语音助手或聊天机器人的对话场景。
  • Alan Client SDKs:Alan轻量级的SDK可以快速将语音助手嵌入到您的应用程序中。
  • Alan Cloud:由业界最佳的自动语音识别(ASR)、自然语言理解(NLU)和语音合成支持的Alan AI后端。Alan Cloud提供并处理维护您的语音部署所需的所有基础设施,并执行所有语音处理任务。

要了解更多关于Alan的工作原理,请参阅Alan Platform

为什么选择Alan?

  • 无需或最小更改UI:为了启用应用程序中的语音功能,您只需要获取Alan客户端SDK并将其放入您的应用程序中。
  • 无服务器环境:无需计划、部署和维护任何基础设施或语音组件 - Alan平台完成大部分工作。
  • 即时更新:对对话的所有更改立即可用。
  • 语音流测试和分析:Alan Studio提供先进的工具来测试您的对话流并获取用户交互的分析数据,所有这些都在同一个控制台中。

如何开始

要在Flutter应用程序中创建语音助手,请按照以下步骤操作:

  1. 注册Alan Studio以构建和测试语音脚本。
  2. 使用此插件将语音助手嵌入到您的应用程序中:

步骤

a. 在pubspec.yaml文件中添加Alan语音依赖项

dependencies:
  flutter:
    sdk: flutter
  alan_voice: ^3.x.xx 

b. 添加alan_voice包依赖项

import 'package:alan_voice/alan_voice.dart';

c. 将Alan按钮添加到主部件

AlanVoice.addButton(
       "8e0b083e795c924d64635bba9c3571f42e956eca572e1d8b807a3e2338fdd0dc/stage",
       buttonAlign: AlanVoice.BUTTON_ALIGN_LEFT);

请将上面的密钥替换为您在Alan Studio项目中的Alan SDK密钥。

运行您的应用程序并点击Alan按钮!

示例代码

以下是一个完整的示例demo,展示如何在Flutter应用程序中集成Alan语音助手。

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

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'AlanSDK Flutter',
      home: MyHomePage(title: 'AlanSDK Flutter'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key? key, this.title = "Flutter example"}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  _MyHomePageState() {
    // 初始化Alan Button
    AlanVoice.addButton("YOUR_ALAN_SDK_KEY");

    // 设置日志级别
    AlanVoice.setLogLevel("none");

    // 添加按钮状态处理器
    AlanVoice.onButtonState.add((state) {
      debugPrint("got new button state ${state.name}");
    });

    // 添加命令处理器
    AlanVoice.onCommand.add((command) {
      debugPrint("got new command ${command.toString()}");
    });

    // 添加事件处理器
    AlanVoice.onEvent.add((event) {
      debugPrint("got new event ${event.data.toString()}");
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text(widget.title),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Text('Alan Button Example'),
            ],
          ),
        ));
  }
}

更多示例

想了解更多?

有关更多信息,请参阅Alan文档


更多关于Flutter语音识别插件alan_voice的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter语音识别插件alan_voice的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter项目中使用alan_voice语音识别插件的示例代码。alan_voice是一个用于集成语音识别功能的Flutter插件,支持中文语音识别。

1. 添加依赖

首先,你需要在pubspec.yaml文件中添加alan_voice插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  alan_voice: ^最新版本号  # 请替换为最新版本号

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

2. 配置Android权限

由于语音识别需要麦克风权限,你需要在AndroidManifest.xml文件中添加麦克风权限:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.yourapp">

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

    <!-- 其他配置 -->

</manifest>

3. 请求权限(如果需要)

在Android 6.0及以上版本中,你需要动态请求权限。可以使用permission_handler插件来请求权限:

dependencies:
  permission_handler: ^最新版本号  # 请替换为最新版本号

然后在代码中请求权限:

import 'package:permission_handler/permission_handler.dart';

Future<void> requestMicrophonePermission() async {
  var status = await Permission.microphone.status;
  if (!status.isGranted) {
    var result = await Permission.microphone.request();
    if (result.isGranted) {
      print("Microphone permission granted.");
    } else if (result.isPermanentlyDenied) {
      // 用户永久拒绝权限,可以引导用户去设置中手动开启
      openAppSettings();
    } else {
      print("Microphone permission denied.");
    }
  } else {
    print("Microphone permission already granted.");
  }
}

4. 使用alan_voice插件

接下来,你可以在你的Flutter应用中初始化并使用alan_voice插件:

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

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

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  AlanVoiceController? _alanVoiceController;
  String _resultText = "";

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

  void initAlanVoice() {
    _alanVoiceController = AlanVoiceController(
      appId: "你的Alan SDK AppID",  // 请替换为你的Alan SDK AppID
      onResult: (result) {
        setState(() {
          _resultText = result.text;
        });
      },
      onError: (error) {
        print("Error: $error");
      },
    );

    _alanVoiceController?.startListening();
  }

  @override
  void dispose() {
    _alanVoiceController?.stopListening();
    _alanVoiceController?.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Alan Voice Demo'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Text(
                "语音识别结果: $_resultText",
                style: TextStyle(fontSize: 24),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

注意事项

  1. 替换AppID:在上面的代码中,你需要将appId替换为你自己的Alan SDK AppID。
  2. 权限处理:确保在Android和iOS上都正确处理了麦克风权限。iOS上的权限处理通常通过Info.plist文件配置。
  3. 错误处理:实际应用中应该添加更多的错误处理和用户反馈,以提高用户体验。

这个示例代码展示了如何在Flutter应用中集成并使用alan_voice插件进行语音识别。你可以根据具体需求进行进一步的定制和扩展。

回到顶部