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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

百度语音识别开放平台SDK用法

發布時間:2024/8/26 综合教程 33 生活家
生活随笔 收集整理的這篇文章主要介紹了 百度语音识别开放平台SDK用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

版權聲明:本文為博主原創文章,未經博主同意不得轉載。 https://blog.csdn.net/zpf8861/article/details/30229039

百度Android語音識別SDK分在線與離線兩種。這篇文章介紹在線SDK的用法。

? ? ?在線SDK是以JAR包和動態鏈接庫形式公布和使用。能夠從百度開放云平臺站點中下載SDK及使用說明文檔。

http://developer.baidu.com/wiki/index.php?title=docs/cplat/media/voice

? ? ?完畢語音SDK的集成分下面幾步。本文將一步步介紹SDK集成方法。

? ? ??

?1、注冊開放開放平臺 ??

?點擊管理控制臺。選擇移動應用管理


?選擇創建應用,填寫應用名稱

? ?<img src="https://img-blog.csdn.net/20140529141311875?

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvVm9pY2VGYW5z/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />???

<img src="https://img-blog.csdn.net/20140529141506890?

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvVm9pY2VGYW5z/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

能夠看到右上角有ID、API KEY、Secret KEY。點擊能夠復制其內容,保存這些字符串,在使用語音SDK時會用到。

<img src="https://img-blog.csdn.net/20140529141527468?

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvVm9pY2VGYW5z/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

2、申請開啟語音識別服務 。選擇媒體云---語音識別,點擊申請開啟服務,填寫理由。

等待對接成功

3、使用語音識別SDK前的準備

之前準備了SDK開發包以及ID、API KEY、Secret KEY。

首先將開發包中的lib中的庫加入到project中


? ? ? ? 聲明權限

[java]?view
plaincopy

?<uses-permission?android:name="android.permission.RECORD_AUDIO"?/>??
<uses-permission?android:name="android.permission.ACCESS_NETWORK_STATE"?/>??
<uses-permission?android:name="android.permission.WRITE_EXTERNAL_STORAGE"?/>??
<uses-permission?android:name="android.permission.INTERNET"?/>??
<uses-permission?android:name="android.permission.READ_PHONE_STATE"?/>??
<uses-permission?android:name="android.permission.WAKE_LOCK"?/>??
<uses-permission?android:name="android.permission.ACCESS_FINE_LOCATION"?/>??
<uses-permission?android:name="android.permission.ACCESS_COARSE_LOCATION"?/>??
<uses-permission?android:name="android.permission.ACCESS_WIFI_STATE"?/></span>??

???4、語音識別

SDK有兩種實現語音識別的方式,一種是直接使用SDK中的語音識別控件。一種是使用SDK中的語音識別服務。

語音識別控件方式

語音識別控件BaiduASRDigitalDialog。提供了整套語音交互、提示音、音量反饋、動效反饋。開發人員初始化一個BaiduASRDigitalDialog對象,并設置相關參數及結果回調,調用Show()方法就能夠彈出對話框開始識別。識別結束后會在回調中得到識別結果。

[java]?view
plaincopy

if?(mDialog?==?null?||?mCurrentTheme?!=?Config.DIALOG_THEME)?{??
????????????????????mCurrentTheme?=?Config.DIALOG_THEME;??
????????????????????if?(mDialog?!=?null)?{??
????????????????????????mDialog.dismiss();??
????????????????????}??
????????????????????Bundle?params?=?new?Bundle();??
????????????????????params.putString(BaiduASRDigitalDialog.PARAM_API_KEY,?Constants.API_KEY);??
????????????????????params.putString(BaiduASRDigitalDialog.PARAM_SECRET_KEY,?Constants.SECRET_KEY);??
????????????????????params.putInt(BaiduASRDigitalDialog.PARAM_DIALOG_THEME,?Config.DIALOG_THEME);??
????????????????????mDialog?=?new?BaiduASRDigitalDialog(this,?params);??
????????????????????mDialog.setDialogRecognitionListener(mRecognitionListener);??
????????????????}??
????????????????mDialog.getParams().putInt(BaiduASRDigitalDialog.PARAM_PROP,?Config.CURRENT_PROP);??
????????????????mDialog.getParams().putString(BaiduASRDigitalDialog.PARAM_LANGUAGE,??
????????????????????????Config.getCurrentLanguage());??
????????????????mDialog.show();??


識別對話框支持的參數定義在BaiduASRDigitalDialog中以PARAM_前綴的常量。列表例如以下:

PARAM_API_KEY

string

?

開放平臺認證API_key

PARAM_SECRET_KEY

string

?

開放平臺認證Secret_key

PARAM_LANGUAGE

string

LANGUAGE_CHINESE

語種,取值定義在VoiceRecognitionConfig類中前綴為LANGUAGE_的常量

PARAM_PARTIAL_RESULTS

boolean

true

連續上屏

PARAM_NLU_ENABLE

boolean

false

是否語義解析。

Prop為輸入時暫不支持語義,請顯示指定為其他領域。

PARAM_NLU_PARAMS

string

?

預留語義解析參數

PARAM_PROP

int

PROP_INPUT

領域參數。定義在VoiceRecognitionConfig類中前綴為PROP_的常量

PARAM_PORMPT_TEXT

string

“請說話”

對話框提示語

PARAM_PROMPT_SOUND_ENABLE

boolean

true

提示音,須要集成SDK包Raw目錄的資源

PARAM_DIALOG_THEME

int

THEME_BLUE_LIGHTBG

樣式。

定義在前綴為THEME_的常量中

PARAM_TIPS

String[]

?

引導語列表

PARAM_SHOW_TIPS_ON_START

boolean

false

對話框彈出時首先顯示引導語列表

PARAM_SHOW_TIP

boolean

false

識別啟動3秒未檢測到語音,隨機出現一條引導語

PARAM_SHOW_HELP_ON_SILENT

boolean

false

靜音超時后將“取消”button替換為“幫助”

設置回調方法。處理返回的結果

[java]?view
plaincopy

mRecognitionListener?=?new?DialogRecognitionListener()?{??
??
???????????@Override??
???????????public?void?onResults(Bundle?results)?{??
???????????????ArrayList<String>?rs?=?results?!=?null???results??
???????????????????????.getStringArrayList(RESULTS_RECOGNITION)?:?null;??
???????????????if?(rs?!=?null?&&?rs.size()?>?0)?{??
???????????????????mResult.setText(rs.get(0));??
???????????????}??
??
???????????}??
???????};??



API方式

首先須要配置語音識別引擎ASREngine的參數VoiceRecognitionConfig

[java]?view
plaincopy

VoiceRecognitionConfig?config?=?new?VoiceRecognitionConfig();??
????????????????config.setProp(Config.CURRENT_PROP);??
????????????????config.setLanguage(Config.getCurrentLanguage());??
????????????????config.enableVoicePower(Config.SHOW_VOL);?//?音量反饋。??
????????????????if?(Config.PLAY_START_SOUND)?{??
????????????????????config.enableBeginSoundEffect(R.raw.bdspeech_recognition_start);?//?設置識別開始提示音??
????????????????}??
????????????????if?(Config.PLAY_END_SOUND)?{??
????????????????????config.enableEndSoundEffect(R.raw.bdspeech_speech_end);?//?設置識別結束提示音??
????????????????}??
????????????????config.setSampleRate(VoiceRecognitionConfig.SAMPLE_RATE_8K);?//?設置採樣率,須要與外部音頻一致??

然后啟動識別

[java]?view
plaincopy

int?code?=?mASREngine.startVoiceRecognition(mListener,?config);??

當中mListener是識別過程的回調,須要對當中的方法進行實現

[java]?view
plaincopy

/**?
????*?重寫用于處理語音識別回調的監聽器?
????*/??
???class?MyVoiceRecogListener?implements?VoiceClientStatusChangeListener?{??
??
???????@Override??
???????public?void?onClientStatusChange(int?status,?Object?obj)?{??
???????????switch?(status)?{??
???????????//?語音識別實際開始,這是真正開始識別的時間點。需在界面提示用戶說話。??
???????????????case?VoiceRecognitionClient.CLIENT_STATUS_START_RECORDING:??
???????????????????isRecognition?=?true;??
???????????????????mHandler.removeCallbacks(mUpdateVolume);??
???????????????????mHandler.postDelayed(mUpdateVolume,?POWER_UPDATE_INTERVAL);??
???????????????????mControlPanel.statusChange(ControlPanelFragment.STATUS_RECORDING_START);??
???????????????????break;??
???????????????case?VoiceRecognitionClient.CLIENT_STATUS_SPEECH_START:?//?檢測到語音起點??
???????????????????mControlPanel.statusChange(ControlPanelFragment.STATUS_SPEECH_START);??
???????????????????break;??
???????????????//?已經檢測到語音終點,等待網絡返回??
???????????????case?VoiceRecognitionClient.CLIENT_STATUS_SPEECH_END:??
???????????????????mControlPanel.statusChange(ControlPanelFragment.STATUS_SPEECH_END);??
???????????????????break;??
???????????????//?語音識別完畢,顯示obj中的結果??
???????????????case?VoiceRecognitionClient.CLIENT_STATUS_FINISH:??
???????????????????mControlPanel.statusChange(ControlPanelFragment.STATUS_FINISH);??
???????????????????isRecognition?=?false;??
???????????????????updateRecognitionResult(obj);??
???????????????????break;??
???????????????//?處理連續上屏??
???????????????case?VoiceRecognitionClient.CLIENT_STATUS_UPDATE_RESULTS:??
???????????????????updateRecognitionResult(obj);??
???????????????????break;??
???????????????//?用戶取消??
???????????????case?VoiceRecognitionClient.CLIENT_STATUS_USER_CANCELED:??
???????????????????mControlPanel.statusChange(ControlPanelFragment.STATUS_FINISH);??
???????????????????isRecognition?=?false;??
???????????????????break;??
???????????????default:??
???????????????????break;??
???????????}??
??
???????}??
??
???????@Override??
???????public?void?onError(int?errorType,?int?errorCode)?{??
???????????isRecognition?=?false;??
???????????mResult.setText(getString(R.string.error_occur,?Integer.toHexString(errorCode)));??
???????????mControlPanel.statusChange(ControlPanelFragment.STATUS_FINISH);??
???????}??
??
???????@Override??
???????public?void?onNetworkStatusChange(int?status,?Object?obj)?{??
???????????//?這里不做不論什么操作不影響簡單識別??
???????}??
???}??

獲得識別BDVRClient對象

[java]?view
plaincopy

mASREngine?=?VoiceRecognitionClient.getInstance(this);??
????????mASREngine.setTokenApis(Constants.API_KEY,?Constants.SECRET_KEY);??

請求參數設置

每次識別須要通過通過VoiceRecognitionConfig設置參數,當中一些方法在API中有說明

方法

參數

描寫敘述

enableBeginSoundEffect

int?soundResourceId 啟動提示音資源Id

設置開始提示音,soundResourceId為放置在Raw目錄的資源Id。

?

enableEndSoundEffect

int?soundResourceId 說話結束提示音資源Id

檢測到用戶說話結束播報的提示音,非識別結束

setSampleRate

int?rate 採樣率

設置音頻採樣率,

通常建議開發人員不指定採樣頻率。由BDVRClient自己主動依據當前網絡環境選擇採樣頻率。WiFi環境下將使用16kHz採樣。移動網絡下將使用8kHz採樣,來節省流量。

參考常量定義

SAMPLE_RATE_8K 8K採樣率

SAMPLE_RATE_16K 16K採樣率

setProp

int?prop

開發人員能夠通過指定垂直分類來獲取更精準的語音識別結果。

注:垂直分類眼下支持地圖,音樂。視頻。APP。網址,開發人員須要注意設定採樣頻率時僅僅能在這五種垂直分類中選擇。

若指定其他分類,可能會影響識別結果的精度。

參考PROP_前綴的常量定義。

setUseDefaultAudioSource

boolean?useDefaultSource

設置是否使用缺省的錄音。 假設不使用,用戶須要調用VoiceRecognitionClient對象的feedAudioBuffer方法為識別器提供語音數據

enableNLU

?

啟用語義解析,僅僅在搜索模式起作用

getSampleRate

?

獲取當前識別採樣率

setLanguage

String Language

設置語種。

眼下支持的語種有中文普通話(LANGUAGE_CHINESE)、中文粵語(LANGUAGE_CANTONSE)、英文(LANGUAGE_ENGLISH)。

開始語音識別,BDVRClient在開始識別后。會啟動錄音、預處理、上傳到server并獲取識別結果。

[java]?view
plaincopy

int?code?=?mASREngine.startVoiceRecognition(mListener,?config);??
???????????????if?(code?!=?VoiceRecognitionClient.START_WORK_RESULT_WORKING)?{??
???????????????????mResult.setText(getString(R.string.error_start,?code));??
???????????????}???

取消語音識別

[java]?view
plaincopy

mASREngine.stopVoiceRecognition();??

結束語音識別

[java]?view
plaincopy

mRecognitionClient.speakFinish();??

總結

以上是生活随笔為你收集整理的百度语音识别开放平台SDK用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

歡迎分享!

轉載請說明來源于"生活随笔",并保留原作者的名字。

本文地址:百度语音识别开放平台SDK用法