1. 程式人生 > 實用技巧 >超簡單整合HMS Core聲音識別服務,打造安全管理新體驗

超簡單整合HMS Core聲音識別服務,打造安全管理新體驗

前言

  最近看到新聞說麻省理工學院開發出可以識別新冠肺炎感染者咳嗽聲的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”檔案。

2.2 新增HUAWEI agcp外掛以及Maven程式碼庫。

  • 在“allprojects > repositories”中配置HMS Core SDK的Maven倉地址。

  • 在“buildscript > repositories”中配置HMS Core SDK的Maven倉地址。

  • 如果App中添加了“agconnect-services.json”檔案則需要在“buildscript > dependencies”中增加agcp配置。

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/'}
    }
}

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

獲取開發指導文件:https://developer.huawei.com/consumer/cn/doc/development

參與開發者討論請到Reddit社群:https://www.reddit.com/r/HMSCore/

下載demo和示例程式碼請到Github:https://github.com/HMS-Core

解決整合問題請到Stack Overflow:https://stackoverflow.com/questions/tagged/huawei-mobile-services?tab=Newest


原文連結:
https://developer.huawei.com/consumer/cn/forum/topic/0201411999326170397?fid=18
作者:say hi