前言
最近看到新闻说麻省理工学院开发出可以识别新冠肺炎感染者咳嗽声的AI模型,通过分析咳嗽录音,可以将无症状感染者与健康的人区分开来。
是不是感觉AI技术很神奇、很强大,仅通过咳嗽声音就可以区分无症状感染者和健康人。
其实AI声音识别技术已经越来越多的应用于安全检测场景中。
下面,就跟着小编来了解下华为声音识别服务吧。
服务介绍
华为声音识别服务是通过在线(实时录音)的模式检测环境中的声音事件,并基于检测到的声音事件,帮助开发者进行后续指令动作,比如通过手机软件通知用户正在发生的事件,提醒用户做出相应的行为和反应。
华为声音识别服务目前支持13个种类的声音事件检测,主要包括:
ü 笑声
ü 婴幼儿哭声
ü 打鼾声
ü 喷嚏声
ü 叫喊声
ü 猫叫声
ü 狗叫声
ü 流水声(包括水龙头流水声、溪流声、海浪声等)
ü 汽车喇叭声
ü 门铃声
ü 敲门声
ü 火灾报警声(包括火灾报警器警报、烟雾报警器警报等)
ü 警报声(包括消防车警报、救护车警报、警车警报声、防空警报等)
应用场景
华为声音识别服务可应用于听力障碍辅助、健康统计、婴幼儿照顾等场景,应用广泛,能够提升用户体验、安全性等。
比如,听力障碍者借助声音识别服务,可以迅速获知周围正在发生的事件,能够快速对周围发生的火灾、警报声、尖叫声、流水声等危险环境作出反应。
婴幼儿父母可以通过声音识别服务,随时得知婴幼儿状态,当接收到手机应用关于婴幼儿哭声的通知后,可以短时间内到婴幼儿身边照料,不用时刻守在婴幼儿身边。
此外,我们还可以通过声音识别服务,实时检测记录打鼾声、喷嚏声等数据,分析统计健康状况。
华为声音识别服务操作简单,提供API接口和SDK包。开发者通过简单调用接口,就可以进行后续开发。
开发步骤
1 配置AppGallery Connect。
在开发应用前,需要在AppGallery Connect中配置相关信息。
具体操作步骤,详见下方链接:
https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides-V5/config-agc-0000001050990353-V5
2 配置HMS Core SDK的Maven仓地址,并完成本服务的SDK集成。
2.1 打开Android Studio项目级“build.gradle”文件。
buildscript {
repositories {
google()
jcenter()
maven {url 'https://developer.huawei.com/repo/'}
}
dependencies {
...
classpath 'com.huawei.agconnect:agcp:1.4.1.300'
}
}
allprojects {
repositories {
google()
jcenter()
maven {url 'https://developer.huawei.com/repo/'}
}
}
2.2 添加HUAWEI agcp插件以及Maven代码库。
在“allprojects > repositories”中配置HMS Core SDK的Maven仓地址。
在“buildscript > repositories”中配置HMS Core SDK的Maven仓地址。
如果App中添加了“agconnect-services.json”文件则需要在“buildscript > dependencies”中增加agcp配置。
3 创建声音识别实例
MLSoundDector soundDector = MLSoundDector.createSoundDector();
4 创建声音识别结果回调,用于获取检测结果,并将回调传入声音识别实例。
private MLSoundDectListener listener = new MLSoundDectListener() {
@Override
public void onSoundSuccessResult(Bundle result) {
//识别成功的处理逻辑,识别结果为:0-12(对应MLSoundDectConstants.java中定义的以SOUND_EVENT_TYPE开头命名的13种声音类型)。
int soundType = result.getInt(MLSoundDector.RESULTS_RECOGNIZED);
}
@Override
public void onSoundFailResult(int errCode) {
//识别失败,可能没有授予麦克风权限(Manifest.permission.RECORD_AUDIO)等异常情况。
}
};
soundDector.setSoundDectListener(listener);
5 启动识别。
boolean isStarted = soundDector.start(context); //context 是上下文
//isStared 等于true表示启动识别成功、isStared等于false表示启动识别失败(原因可能是手机麦克风被系统或其它三方应用占用)
6 停止识别。
soundDector.stop();
7 识别结束,释放资源。
soundDector.destroy();
DEMO演示
更详细的开发指南和服务信息,请参考华为开发者联盟网站:
https://developer.huawei.com/consumer/cn/hms/huawei-mlkit