Flutter集成百度语音识别(Android端)实战

今天和大家分享一下Flutter中集成百度语音识别Android端的过程,供大家进行参考。

既然是Flutter集成,那首先就要创建一个Flutter项目,这个就不仔细讲了,可以参考Flutter中文的创建项目流程

@[toc]

一、百度语音官网注册应用信息

1.注册百度账号

首先注册登陆百度AI开发平台-语音识别,打开控制台找到并点击”语音技术“一栏
在这里插入图片描述
在这里插入图片描述

2.创建注册应用信息

填写应用名称(名称随意),类别随意,选择Android并填写Android包名,点击创建应用就创建完成了。
在这里插入图片描述

3.查看应用信息

点击第1步中的管理应用,可以看到你创建的所有应用列表,可以看到创建应用的AppID,API Key, Secret Key等信息,这些都需要在项目进行配置的。
在这里插入图片描述

4.下载SDK

百度语音识别SDK

二、创建一个项目的Library

1.使用Android Studio打开项目Android文件

2.创建Library, File->New Module->选择Android Library,填写name(asr_plugin)

在这里插入图片描述

3.添加语音识别sdk

在asr_plugin中创建一个libs文件夹,复制(解压下载的百度语音识别sdk文件/core/libs/*.jar)到刚创建的libs下

4.添加so文件

复制(解压sdk文件/core/main/jniLibs)复制到asr_plugin/src/main下,删除下面的armeabi,(因为Flutter没有armeabi的so),删除使用不到的库文件,保留如下图中文件即可
在这里插入图片描述

5.AndroidManifest.xml配置权限及项目的APPID,API_KEY以及Secret_Key

在这里插入图片描述

6.在项目Android/app目录下的build.grade文件中添加插件依赖

在这里插入图片描述

三.Android实现百度语音的识别功能

1.Library中实现百度识别功能

在这里插入图片描述

2.library的build.gradle中添加flutter依赖

def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
    localPropertiesFile.withReader('UTF-8') { reader ->
        localProperties.load(reader)
    }
}

def flutterRoot = localProperties.getProperty('flutter.sdk')

apply plugin: 'com.android.library'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

flutter {
    source '../..'
}

3.项目app/build.gradle中添加如下代码,确保app与library中添加flutter.so 不冲突

defaultConfig中添加
ndk{
            abiFilters "arm64-v7a","arm64-v8a","x86_64","x86"
        }

//百度语音集成添加
    packagingOptions {
        // 确保app与asr_plugin都依赖的libflutter.so merge时不冲突@https://github.com/card-io/card.io-Android-SDK/issues/186#issuecomment-427552552
        pickFirst 'lib/x86_64/libflutter.so'
        pickFirst 'lib/x86/libflutter.so'
        pickFirst 'lib/arm64-v8a/libflutter.so'
        pickFirst 'lib/arm64-v8a/libapp.so'
        pickFirst 'lib/armeabi-v7a/libapp.so'
    }

在项目的MainActivity中进行注册

在这里插入图片描述

四、Dart端实现语音功能管理

语音识别管理类

在这里插入图片描述

功能页面使用

在这里插入图片描述

可能遇到的问题

1、识别语音,而且报错语音识别错误,-3004,4004
解决:前往百度语音官网控制台,领取一下额度,才可以进行正常测试
在这里插入图片描述

Demo

Flutter仿携程APP集成百度语音识别

觉得文章不错的,给我点个赞哇,关注一下呗!
技术交流可关注公众号【君伟说】,加我好友一起探讨

编程开发工作者

225 声望
18 粉丝
0 条评论
推荐阅读
开源:ReactNative设置应用角标库
项目开发需要RN项目可以设置应用角标,搜索相关资料后发现目前没有第三方库直接支持,所以想到自己通过桥接双端原生进行实现,本着不重复造轮子的思想,将库进行开源。

似水流年阅读 470

刨根问底 Redis, 面试过程真好使
充满寒气的互联网如何在面试中脱颖而出,平时积累很重要,八股文更不能少!下面带来的这篇 Redis 问答希望能够在你的 offer 上增添一把🔥。

菜农曰17阅读 957

封面图
PHP转Go实践:xjson解析神器「开源工具集」
我和劲仔都是PHP转Go,身边越来越多做PHP的朋友也逐渐在用Go进行重构,重构过程中,会发现php的json解析操作(系列化与反序列化)是真的香,弱类型语言的各种隐式类型转换,很大程度的减低了程序的复杂度。

王中阳Go10阅读 2k评论 3

封面图
万字详解,吃透 MongoDB!
MongoDB 是一个基于 分布式文件存储 的开源 NoSQL 数据库系统,由 C++ 编写的。MongoDB 提供了 面向文档 的存储方式,操作起来比较简单和容易,支持“无模式”的数据建模,可以存储比较复杂的数据类型,是一款非常...

JavaGuide5阅读 827

封面图
浅谈App的启动优化
温启动:当启动应用时,后台已有该应用的进程,但是Activity可能因为内存不足被回收。这样系统会从已有的进程中来启动这个Activity,这个启动方式叫温启动。

xuexiangjys5阅读 1.7k

计算机网络连环炮40问
本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~

程序员大彬8阅读 1.1k

与RabbitMQ有关的一些知识
工作中用过一段时间的Kafka,不过主要还是RabbitMQ用的多一些。今天主要来讲讲与RabbitMQ相关的一些知识。一些基本概念,以及实际使用场景及一些注意事项。

lpe2348阅读 1.9k

封面图

编程开发工作者

225 声望
18 粉丝
宣传栏