本文将在上一篇文章Android Native SDK集成流程
基础之上介绍如何在Android端提供Dart调用的智能语音接口服务,以及如何实现Dart端和Native端之间的交互。

Dart端

asr_manager.dart

Dart端语音识别接口,调用Android端提供的语音接口服务,实现和Android端的消息交互。

class AsrManager {static const MethodChannel _channel = const MethodChannel("asr_plugin");/// 开始录音static Future<String> start({Map params}) async {return await _channel.invokeMethod("start", params ?? {});}/// 结束录音static Future<String> stop() async {return await _channel.invokeMethod("stop");}/// 取消录音static Future<String> cancel() async {return await _channel.invokeMethod("cancel");}
}

Native端

集成Flutter

在module工程的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')dependencies {implementation fileTree(dir: 'libs', include: ['*.jar'])implementation 'androidx.appcompat:appcompat:1.1.0'implementation 'com.google.android.material:material:1.1.0'testImplementation 'junit:junit:4.+'androidTestImplementation 'androidx.test.ext:junit:1.1.1'androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'compileOnly files("$flutterRoot//bin/cache/artifacts/engine/android-arm/flutter.jar")
}
解决flutter依赖冲突

app主工程和module工程同时配置了flutter依赖,所以需要解决依赖冲突。

在app工程的build.gradle添加如下配置:

defaultConfig {// 解决app和module工程同时引入flutter依赖的冲突ndk {abiFilters "armeabi-v7a","arm64-v8a","x86_64","x86" //只打包flutter所支持的架构,flutter没有armeabi架构的so,加x86的原因是为了能够兼容模拟器
//            abiFilters "armeabi-v7a" //release 时只打"armeabi-v7包}}packagingOptions {// 确保app与asr_plugin都依赖的libflutter.so libapp.so merge时不冲突@https://github.com/card-io/card.io-Android-SDK/issues/186#issuecomment-427552552pickFirst 'lib/x86_64/libflutter.so'pickFirst 'lib/x86/libflutter.so'pickFirst 'lib/arm64-v8a/libflutter.so'}
功能实现

Native端在语音识别sdk基础上进行功能实现,并添加Flutter端插件,实现和Dart端的交互。

下面介绍Native端实现语音识别以及和Dart端消息交互的核心类。

  1. RecogEventAdapter.java
    监听语音SDK的事件回调,针对不同的回调事件对结果进行解析操作。
  2. AsrManager.java
    实现智能语音核心功能:调用sdk提供的功能,完成语音识别状态监听和回调
  3. OnAsrListener.java
    与SDK中回调参数的对应关系定义在RecogEventAdapter类中
  4. AsrPlugin.java
    自定义Flutter插件:接收来自Dart端的请求,并调用ResultStateful中提供的方法实现Dart端的结果回调
  5. ResultStateful.java
    对MethodChannel.Result进行包装,实现通知Dart端结果请求
插件注册

在app主工程的MainActivity.java中完成Flutter插件注册

public class MainActivity extends FlutterActivity {@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);}@Overridepublic void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {GeneratedPluginRegistrant.registerWith(flutterEngine);// flutter sdk >= v1.17.0 时使用下面方法注册自定义pluginAsrPlugin.registerWith(this,flutterEngine.getDartExecutor().getBinaryMessenger());}
}

下一篇文章将介绍Dart端如何使用Native提供的通用接口服务来实现语音搜索功能。

实现智能语音识别服务相关推荐

  1. 语音识别服务_语音识别服务厂商_腾讯云语音识别服务 - 云+社区 - 腾讯云

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 腾讯云语音识别服务开放实时语音识别.一句话识别和录音文件识别三种服务形式,满足不同 ...

  2. 移动端网页录音上传,服务端智能语音识别

    移动端网页录音上传,服务端智能语音识别 最近,看了创业时代的魔镜,想法突如起来,能不能手机发送一条语音,语音上传到后台,自动识别语音的信息,转化为文字,将文字分析,然后回复用户艳学网的资源. 我们的资 ...

  3. 智能语音识别系统_语音识别技术原理_智能语音识别系统如何识别用户意图_企业服务汇...

    编者按:智能语音识别系统目前已经实现商业化应用,广泛应用于客服行业,包括智能语音客服和智能客服呼叫中心.那么智能语音识别系统如何识别客户意图,如何判断智能客服系统的语音识别能力呢?本文我们将结合语音识 ...

  4. 有道智云智能语音服务全面升级 最多可支持44种语言和方言

    原标题:有道智云智能语音服务全面升级 最多可支持44种语言和方言 有道智云·AI开放平台智能语音服务全面升级,支持40多个小语种的语音识别.及翻译!现在开通注册即送50元体验金免费体验!戳一下了解详情 ...

  5. 语音识别系统_智能语音识别系统_第三方语音识别系统 - 云+社区 - 腾讯云

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 腾讯云语音识别服务开放实时语音识别.一句话识别和录音文件识别三种服务形式,满足不同 ...

  6. 什么是车联网?导航?听歌?智能语音识别?事实没这么简单!

    什么是车联网?导航?听歌?智能语音识别?事实没这么简单! 至今还记得刚刚学驾照时,第一次摸车的那种兴奋与紧张并存的复杂心理.而那时候学车用的教练车还是极为简陋的"老捷达",完全靠机 ...

  7. 灵云智能语音识别平台 促进人工智能

    捷通华声为满足人工智能技术爆发性应用需求,推出了灵云全方位人工智能开放平台(hcicloud.com)的私有云版本-灵云全智能能力平台,携手系统集成商.解决方案提供商.软件开发商共同推动各项人工智能技 ...

  8. 科大讯飞/百度/阿里/腾讯(BAT)智能语音识别(ASR)性能对比选择预计价格分享 - pytorch中文网...

    最近在做智能客服的时候需要使用到语音识别,所以了解和对比了各家平台的语音识别对比和分析! 一.科大讯飞 1.语音听写即在线音识别查看Demo 把语音(≤60秒)转换成对应的文字信息,让机器能够&quo ...

  9. 法庭智能语音系统_法庭智能语音识别系统_法庭智能语音系统解决方案_深圳市亚讯威视数字技术有限公司...

    法庭智能语音系统 现状与需求 庭审过程中,需要形成文字版庭审记录,便于事后追溯或跟踪.现有的人工听写方式受限于记录员的业务熟练程度和打字速度,导致记录效率较低.浪费人力.采用信息化手段改善记录工作,提 ...

最新文章

  1. keras和tensorflow使用 keras.callbacks.TensorBoard 可视化数据
  2. J2EE项目移植问题一
  3. 第15届全国大学生智能汽车竞赛 人工智能挑战赛(百度)
  4. Java转型(向上或向下转型)
  5. TabHost与RadioGroup结合完成的菜单【带效果图】5个Activity
  6. 快速打造一个MINI自动发布系统
  7. cassandra数据备份_Cassandra中的数据建模
  8. javascript php 性能,浅谈页面装载js及性能分析方法_javascript技巧
  9. eclipse编辑器未包含main类型_Shopify模版编辑器问题排查及解决办法汇总
  10. SQL SERVER 数据库通过连接服务器 调用ORACLE 数据库中的存储过程
  11. 5 个底层程序设计逻辑,决定你有多牛逼
  12. 《软件测试的艺术》笔记
  13. Hibernate技术
  14. Vue实现自定义下拉菜单
  15. 【Spring Cloud 基础设施搭建系列】Spring Cloud Demo项目 整合Spring Data JPA
  16. 云计算如何与企业管理协同作战
  17. omap3isp上层应用解析
  18. Active learning-Fine-tuning Convolutional Neural Networks for Biomedical Image Analysis: Actively a
  19. 大学生创新创业大赛案例_创新创业大赛获奖名单_大学生创新创业大赛获奖案例...
  20. pyecharts 标准线_pyecharts

热门文章

  1. Linux设置ip地址不更改
  2. javaWeb-第一版
  3. windows服务器安全设置详解攻略
  4. Project:解决问题:在Microsoft project2016中如何编辑一周七天工作日
  5. MinGW与Clion下载安装及使用详解
  6. C# AD FS实现网站单点登录 Active Directory Federation Services-活动目录联合身份认证 AD域单点登录 ADFS单点登录
  7. ML-Agents案例之蠕虫
  8. 2021最新的高通骁龙处理器排名
  9. 计算机网络面试知识点整理
  10. web网页设计实例作业 ——古典中国风工艺美术(9页) html+css+javascript网页设计实例