日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

一文教你如何快速实现声音识别

發(fā)布時(shí)間:2023/12/8 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一文教你如何快速实现声音识别 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在一些應(yīng)用項(xiàng)目開(kāi)發(fā)的過(guò)程中,有時(shí)需要用到語(yǔ)音檢測(cè)的功能,即識(shí)別敲門(mén)聲、門(mén)鈴聲、汽車(chē)?yán)嚷暤裙δ?#xff0c;對(duì)于中小開(kāi)發(fā)者來(lái)說(shuō),單獨(dú)開(kāi)發(fā)構(gòu)建該能力,不免耗時(shí)耗力,而華為機(jī)器學(xué)習(xí)服務(wù)中的聲音識(shí)別服務(wù)SDK,只需簡(jiǎn)單集成,端側(cè)就能實(shí)現(xiàn)這個(gè)功能。

一、?華為聲音識(shí)別服務(wù)簡(jiǎn)介:

聲音識(shí)別服務(wù)支持通過(guò)在線(實(shí)時(shí)錄音)的模式檢測(cè)聲音事件,基于檢測(cè)到的聲音事件能夠幫助開(kāi)發(fā)者進(jìn)行后續(xù)指令動(dòng)作。目前支持13個(gè)種類(lèi)的聲音事件,包括:笑聲、嬰兒或小孩哭聲、打鼾聲、噴嚏聲、叫喊聲、貓叫聲、狗叫聲、流水聲(包括水龍頭流水聲、溪流聲、海浪聲)、汽車(chē)?yán)嚷暋㈤T(mén)鈴聲、敲門(mén)聲、火災(zāi)報(bào)警聲(包括火災(zāi)報(bào)警器警報(bào)聲、煙霧報(bào)警器警報(bào)聲)、警報(bào)聲(包括消防車(chē)警報(bào)聲、救護(hù)車(chē)警報(bào)聲、警車(chē)警報(bào)聲、防空警報(bào)聲)。

二、集成準(zhǔn)備:

開(kāi)發(fā)環(huán)境配置

1、需要在華為開(kāi)發(fā)者聯(lián)盟上創(chuàng)建應(yīng)用:

此步驟具體可以詳見(jiàn)下方的鏈接:

https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-get-started#createproject?ha__source=hms1

2、打開(kāi)機(jī)器學(xué)習(xí)服務(wù):

具體開(kāi)啟步驟可以查看下方的鏈接:

https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides-V5/enable-service-0000001050038078-V5?ha__source=hms1

2、創(chuàng)建完應(yīng)用之后,會(huì)自動(dòng)生成agconnect-services.json文件, 需要手動(dòng)將agconnect-services.json文件拷貝到應(yīng)用級(jí)根目錄下

3、配置HMS Core SDK的Maven倉(cāng)地址。

關(guān)于Maven倉(cāng)的配置可以查看下方的鏈接:

https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/config-maven-0000001050040031?ha__source=hms1

4、集成聲音識(shí)別服務(wù)SDK

1.?推薦使用Full SDK方式集成,在build.gradle文件中配置相應(yīng)的sdk

//?引入聲音識(shí)別集合包 implementation?'com.huawei.hms:ml-speech-semantics-sounddect-sdk:2.1.0.300' implementation?'com.huawei.hms:ml-speech-semantics-sounddect-model:2.1.0.300'

2.?根據(jù)實(shí)際情況聲明AGC插件配置,有兩種方式

apply?plugin:?'com.android.application' apply?plugin:?'com.huawei.agconnect' 或 plugins?{????id?'com.android.application'???? id?'com.huawei.agconnect' }

3.?自動(dòng)更新機(jī)器學(xué)習(xí)模型

添加如下語(yǔ)句到AndroidManifest.xml文件中,用戶(hù)從華為應(yīng)用市場(chǎng)安裝您的應(yīng)用后,將自動(dòng)更新機(jī)器學(xué)習(xí)模型到設(shè)備:

<meta-data???? android:name="com.huawei.hms.ml.DEPENDENCY"?? android:value=?"sounddect"/>

4.?更詳細(xì)的步驟可以通過(guò)下方的鏈接查看:

https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/sound-detection-sdk-0000001055602754?ha__source=hms1

三、應(yīng)用開(kāi)發(fā)編碼階段

1.取得 麥克風(fēng) 權(quán)限, 如果沒(méi)有麥克風(fēng)的權(quán)限 會(huì)報(bào)12203的錯(cuò)誤

設(shè)置靜態(tài)權(quán)限(必須)

< uses-permission? android :name ="android.permission.RECORD_AUDIO"? />

動(dòng)態(tài)權(quán)限獲取(必須)

ActivityCompat.requestPermissions(
????????this,?new?String[]{Manifest.permission.RECORD_AUDIO

?},?1);

2.創(chuàng)建MLSoundDector對(duì)象

private static final?String?TAG?=?"MLSoundDectorDemo";

//語(yǔ)音識(shí)別的對(duì)象
private?MLSoundDector?mlSoundDector;

?

//創(chuàng)建MLSoundDector對(duì)象?并?設(shè)置回調(diào)方法
private void?initMLSoundDector(){
????mlSoundDector?=?MLSoundDector.createSoundDector();
????mlSoundDector.setSoundDectListener(listener);
}

3.?聲音識(shí)別結(jié)果回調(diào),用于獲取檢測(cè)結(jié)果,并將回調(diào)傳入聲音識(shí)別實(shí)例。

//創(chuàng)建聲音識(shí)別結(jié)果回調(diào),用于獲取檢測(cè)結(jié)果,并將回調(diào)傳入聲音識(shí)別實(shí)例。
private?MLSoundDectListener?listener?=?new?MLSoundDectListener() {
????@Override
????public void?onSoundSuccessResult(Bundle?result) {
????????//識(shí)別成功的處理邏輯,識(shí)別結(jié)果為:0-12(對(duì)應(yīng)MLSoundDectConstants.java中定義的以SOUND_EVENT_TYPE開(kāi)頭命名的13種聲音類(lèi)型)。
????????int?soundType?= result.getInt(MLSoundDector.RESULTS_RECOGNIZED);
????????Log.d(TAG,"聲音識(shí)別成功:"+soundType);
??? }
????@Override
????public void?onSoundFailResult(int?errCode) {
????????//識(shí)別失敗,可能沒(méi)有授予麥克風(fēng)權(quán)限(Manifest.permission.RECORD_AUDIO)等異常情況。
????????Log.d(TAG,"聲音識(shí)別失敗:"+errCode);
??? }
};

此代碼中只是將聲音識(shí)別結(jié)果的int類(lèi)型打印了出來(lái),實(shí)際編碼中,可以將int類(lèi)型的聲音識(shí)別結(jié)果 轉(zhuǎn)換為 可被用戶(hù)識(shí)別的類(lèi)型。

聲音識(shí)別類(lèi)型的定義:

<string-array?name="sound_dect_voice_type">
??? <item>笑聲</item>
??? <item>嬰兒或小孩哭聲</item>
??? <item>打鼾聲</item>
??? <item>噴嚏聲</item>
??? <item>叫喊聲</item>
??? <item>貓叫聲</item>
??? <item>狗叫聲</item>
??? <item>流水聲</item>
??? <item>汽車(chē)?yán)嚷?lt;/item>
??? <item>門(mén)鈴聲</item>
??? <item>敲門(mén)聲</item>
??? <item>火災(zāi)報(bào)警聲</item>
??? <item>警報(bào)聲</item>
</string-array>

3.?開(kāi)啟和關(guān)閉語(yǔ)音識(shí)別

@Override
public void?onClick(View?v) {
????switch?(v.getId()){
????????case?R.id.btn_start_detect:
????????????if?(mlSoundDector?!=?null){
????????????????boolean?isStarted?=?mlSoundDector.start(this);?//context?是上下文
????????????????//isStared?等于true表示啟動(dòng)識(shí)別成功、isStared等于false表示啟動(dòng)識(shí)別失敗(原因可能是手機(jī)麥克風(fēng)被系統(tǒng)或其它三方應(yīng)用占用)
????????????????if?(isStarted){
????????????????????Toast.makeText(this,"語(yǔ)音識(shí)別開(kāi)啟成功",?Toast.LENGTH_SHORT).show();
??????????????? }
??????????? }

????????????break;

????????case?R.id.btn_stop_detect:
????????????if?(mlSoundDector?!=?null){
????????????????mlSoundDector.stop();
??????????? }
????????????break;
??? }
}

4.當(dāng)頁(yè)面關(guān)閉的時(shí)候,可以調(diào)用destroy()方法釋放資源

@Override
protected void?onDestroy() {
????super.onDestroy();
????if?(mlSoundDector?!=?null){
????????mlSoundDector.destroy();
??? }
}

四、運(yùn)行測(cè)試

1.?以敲門(mén)聲為例,預(yù)計(jì)聲音識(shí)別類(lèi)型的輸出結(jié)果為10

2.?點(diǎn)擊開(kāi)啟語(yǔ)音識(shí)別按鈕、模擬敲門(mén)聲 ,在AS控制臺(tái)中可以得到如下日志, 說(shuō)明集成成功。

五、其他

1.?聲音識(shí)別服務(wù)屬于華為機(jī)器學(xué)習(xí)服務(wù)中的一個(gè)很小的模塊,華為機(jī)器學(xué)習(xí)服務(wù)包括6大模塊,分別為:文本類(lèi)、語(yǔ)音語(yǔ)言類(lèi)、圖像類(lèi)、人臉人體類(lèi)、自然語(yǔ)言處理類(lèi),自定義模型?。

2.?這篇記錄文檔只是介紹了“語(yǔ)音語(yǔ)言類(lèi)”這個(gè)模塊中的“聲音識(shí)別服務(wù)”

3.?如果有讀者對(duì)華為機(jī)器學(xué)習(xí)服務(wù)其他模塊感興趣的話,可以查看華為提供的相關(guān)集成文檔,地址如下:

https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides-V5/service-introduction-0000001050040017-V5?ha__source=hms1

>>華為開(kāi)發(fā)者聯(lián)盟官網(wǎng)

>>獲取開(kāi)發(fā)指導(dǎo)文檔
>>參與開(kāi)發(fā)者討論請(qǐng)到CSDN社區(qū)或者Reddit社區(qū)
>>下載demo和示例代碼請(qǐng)到Github或者Gitee
>>解決集成問(wèn)題請(qǐng)到Stack Overflow

原文鏈接:https://developer.huawei.com/...
原作者:胡椒?

總結(jié)

以上是生活随笔為你收集整理的一文教你如何快速实现声音识别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。