实现智能语音识别服务
本文将在上一篇文章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端消息交互的核心类。
RecogEventAdapter.java
监听语音SDK的事件回调,针对不同的回调事件对结果进行解析操作。AsrManager.java
实现智能语音核心功能:调用sdk提供的功能,完成语音识别状态监听和回调OnAsrListener.java
与SDK中回调参数的对应关系定义在RecogEventAdapter类中AsrPlugin.java
自定义Flutter插件:接收来自Dart端的请求,并调用ResultStateful
中提供的方法实现Dart端的结果回调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提供的通用接口服务来实现语音搜索功能。
实现智能语音识别服务相关推荐
- 语音识别服务_语音识别服务厂商_腾讯云语音识别服务 - 云+社区 - 腾讯云
广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 腾讯云语音识别服务开放实时语音识别.一句话识别和录音文件识别三种服务形式,满足不同 ...
- 移动端网页录音上传,服务端智能语音识别
移动端网页录音上传,服务端智能语音识别 最近,看了创业时代的魔镜,想法突如起来,能不能手机发送一条语音,语音上传到后台,自动识别语音的信息,转化为文字,将文字分析,然后回复用户艳学网的资源. 我们的资 ...
- 智能语音识别系统_语音识别技术原理_智能语音识别系统如何识别用户意图_企业服务汇...
编者按:智能语音识别系统目前已经实现商业化应用,广泛应用于客服行业,包括智能语音客服和智能客服呼叫中心.那么智能语音识别系统如何识别客户意图,如何判断智能客服系统的语音识别能力呢?本文我们将结合语音识 ...
- 有道智云智能语音服务全面升级 最多可支持44种语言和方言
原标题:有道智云智能语音服务全面升级 最多可支持44种语言和方言 有道智云·AI开放平台智能语音服务全面升级,支持40多个小语种的语音识别.及翻译!现在开通注册即送50元体验金免费体验!戳一下了解详情 ...
- 语音识别系统_智能语音识别系统_第三方语音识别系统 - 云+社区 - 腾讯云
广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 腾讯云语音识别服务开放实时语音识别.一句话识别和录音文件识别三种服务形式,满足不同 ...
- 什么是车联网?导航?听歌?智能语音识别?事实没这么简单!
什么是车联网?导航?听歌?智能语音识别?事实没这么简单! 至今还记得刚刚学驾照时,第一次摸车的那种兴奋与紧张并存的复杂心理.而那时候学车用的教练车还是极为简陋的"老捷达",完全靠机 ...
- 灵云智能语音识别平台 促进人工智能
捷通华声为满足人工智能技术爆发性应用需求,推出了灵云全方位人工智能开放平台(hcicloud.com)的私有云版本-灵云全智能能力平台,携手系统集成商.解决方案提供商.软件开发商共同推动各项人工智能技 ...
- 科大讯飞/百度/阿里/腾讯(BAT)智能语音识别(ASR)性能对比选择预计价格分享 - pytorch中文网...
最近在做智能客服的时候需要使用到语音识别,所以了解和对比了各家平台的语音识别对比和分析! 一.科大讯飞 1.语音听写即在线音识别查看Demo 把语音(≤60秒)转换成对应的文字信息,让机器能够&quo ...
- 法庭智能语音系统_法庭智能语音识别系统_法庭智能语音系统解决方案_深圳市亚讯威视数字技术有限公司...
法庭智能语音系统 现状与需求 庭审过程中,需要形成文字版庭审记录,便于事后追溯或跟踪.现有的人工听写方式受限于记录员的业务熟练程度和打字速度,导致记录效率较低.浪费人力.采用信息化手段改善记录工作,提 ...
最新文章
- keras和tensorflow使用 keras.callbacks.TensorBoard 可视化数据
- J2EE项目移植问题一
- 第15届全国大学生智能汽车竞赛 人工智能挑战赛(百度)
- Java转型(向上或向下转型)
- TabHost与RadioGroup结合完成的菜单【带效果图】5个Activity
- 快速打造一个MINI自动发布系统
- cassandra数据备份_Cassandra中的数据建模
- javascript php 性能,浅谈页面装载js及性能分析方法_javascript技巧
- eclipse编辑器未包含main类型_Shopify模版编辑器问题排查及解决办法汇总
- SQL SERVER 数据库通过连接服务器 调用ORACLE 数据库中的存储过程
- 5 个底层程序设计逻辑,决定你有多牛逼
- 《软件测试的艺术》笔记
- Hibernate技术
- Vue实现自定义下拉菜单
- 【Spring Cloud 基础设施搭建系列】Spring Cloud Demo项目 整合Spring Data JPA
- 云计算如何与企业管理协同作战
- omap3isp上层应用解析
- Active learning-Fine-tuning Convolutional Neural Networks for Biomedical Image Analysis: Actively a
- 大学生创新创业大赛案例_创新创业大赛获奖名单_大学生创新创业大赛获奖案例...
- pyecharts 标准线_pyecharts
热门文章
- Linux设置ip地址不更改
- javaWeb-第一版
- windows服务器安全设置详解攻略
- Project:解决问题:在Microsoft project2016中如何编辑一周七天工作日
- MinGW与Clion下载安装及使用详解
- C# AD FS实现网站单点登录 Active Directory Federation Services-活动目录联合身份认证 AD域单点登录 ADFS单点登录
- ML-Agents案例之蠕虫
- 2021最新的高通骁龙处理器排名
- 计算机网络面试知识点整理
- web网页设计实例作业 ——古典中国风工艺美术(9页) html+css+javascript网页设计实例