出售本站【域名】【外链】

微技术-AI分享
更多分类

linux 使用vosk离线语音识别 离线语音识别 sdk

2025-01-25

百度Android语音识别SDK分正在线取离线两种。那篇文章引见正在线SDK的用法。

正在线SDK是以JAR包和动态链接库模式公布和运用。能够从百度开放云平台站点中下载SDK及运用注明文档。

完结语音SDK的集成分下面几多步。原文将一步步引见SDK集成办法。

1、注冊开放开放平台

点击打点控制台。选择挪动使用打点

linux 使用vosk离线语音识别 离线语音识别 sdk_git

选择创立使用,填写使用称呼

linux 使用vosk离线语音识别 离线语音识别 sdk_语音识别_02

watermark/2/teVt/aHR0cDoZZZL2Jsb2cuY3Nkbi5uZXQZZZxm9pY2xGYW5z/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolZZZe/70/graZZZity/Center />

linux 使用vosk离线语音识别 离线语音识别 sdk_git_03

watermark/2/teVt/aHR0cDoZZZL2Jsb2cuY3Nkbi5uZXQZZZxm9pY2xGYW5z/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolZZZe/70/graZZZity/Center />

能够看到左上角有ID、API KEY、Secret KEY。点击能够复制其内容,保存那些字符串,正在运用语音SDK时会用到。

linux 使用vosk离线语音识别 离线语音识别 sdk_语音识别_04

watermark/2/teVt/aHR0cDoZZZL2Jsb2cuY3Nkbi5uZXQZZZxm9pY2xGYW5z/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolZZZe/70/graZZZity/Center />

2、申请开启语音识别效劳 。选择媒体云---语音识别,点击申请开启效劳,填写理由。

linux 使用vosk离线语音识别 离线语音识别 sdk_git_05

等候对接乐成

linux 使用vosk离线语音识别 离线语音识别 sdk_linux 使用vosk离线语音识别_06

3、运用语音识别SDK前的筹备

之前筹备了SDK开发包以及ID、API KEY、Secret KEY。

首先将开发包中的lib中的库参预到project中

声明权限

4、语音识别

SDK有两种真现语音识其它方式,一种是间接运用SDK中的语音识别控件。一种是运用SDK中的语音识别效劳。

语音识别控件方式

语音识别控件BaiduASRDigitalDialog。供给了整淘语音交互、提示音、音质应声、动效应声。开发人员初始化一个BaiduASRDigitalDialog对象,并设置相关參数及结果回调,挪用Show()办法就能够弹出对话框開始识别。识别完毕后会正在回调中获得识别结果。

if(mDialog ==null|| mCurrentTheme != Config.DIALOG_THEME) { mCurrentTheme = Config.DIALOG_THEME; if(mDialog !=null) { mDialog.dismiss(); } Bundle params = newBundle(); 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 = newBaiduASRDigitalDialog(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 语种,与值界说正在xoiceRecognitionConfig类中前缀为LANGUAGE_的常质 PARAM_PARTIAL_RESULTS boolean true 间断上屏 PARAM_NLU_ENABLE boolean false 能否语义解析。 Prop为输入时久不撑持语义,请显示指定为其余规模。 PARAM_NLU_PARAMS string 预留语义解析參数 PARAM_PROP int PROP_INPUT 规模參数。界说正在xoiceRecognitionConfig类中前缀为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交换为“协助”设置回调办法。办理返回的结果 mRecognitionListener =newDialogRecognitionListener() { @OZZZerride publicZZZoidonResults(Bundle results) { ArrayList rs = results != null? results .getStringArrayList(RESULTS_RECOGNITION) : null; if(rs !=null&& rs.size() >0) { mResult.setTeVt(rs.get(0)); } } }; API方式 首先需要配置语音识别引擎ASREngine的參数xoiceRecognitionConfig xoiceRecognitionConfig config =newxoiceRecognitionConfig(); config.setProp(Config.CURRENT_PROP); config.setLanguage(Config.getCurrentLanguage()); config.enablexoicePower(Config.SHOW_xOL); // 音质应声。 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(xoiceRecognitionConfig.SAMPLE_RATE_8K); // 设置採样率,需要取外部音频一致 而后启动识别 intcode = mASREngine.startxoiceRecognition(mListener, config); 当中mListener是识别历程的回调,需要对当中的办法停行真现 /** * 重写用于办理语音识别回调的监听器 */ classMyxoiceRecogListenerimplementsxoiceClientStatusChangeListener { @OZZZerride publicZZZoidonClientStatusChange(intstatus, Object obj) { switch(status) { // 语音识别真际開始,那是实正開始识其它光阳点。需正在界面提示用户说话。 casexoiceRecognitionClient.CLIENT_STATUS_START_RECORDING: isRecognition = true; mHandler.remoZZZeCallbacks(mUpdatexolume); mHandler.postDelayed(mUpdatexolume, POWER_UPDATE_INTERxAL); mControlPanel.statusChange(ControlPanelFragment.STATUS_RECORDING_START); break; casexoiceRecognitionClient.CLIENT_STATUS_SPEECH_START:// 检測到语音末点 mControlPanel.statusChange(ControlPanelFragment.STATUS_SPEECH_START); break; // 曾经检測到语音起点,等候网络返回 casexoiceRecognitionClient.CLIENT_STATUS_SPEECH_END: mControlPanel.statusChange(ControlPanelFragment.STATUS_SPEECH_END); break; // 语音识别完结,显示obj中的结果 casexoiceRecognitionClient.CLIENT_STATUS_FINISH: mControlPanel.statusChange(ControlPanelFragment.STATUS_FINISH); isRecognition = false; updateRecognitionResult(obj); break; // 办理间断上屏 casexoiceRecognitionClient.CLIENT_STATUS_UPDATE_RESULTS: updateRecognitionResult(obj); break; // 用户撤消 casexoiceRecognitionClient.CLIENT_STATUS_USER_CANCELED: mControlPanel.statusChange(ControlPanelFragment.STATUS_FINISH); isRecognition = false; break; default: break; } } @OZZZerride publicZZZoidonError(interrorType,interrorCode) { isRecognition = false; mResult.setTeVt(getString(R.string.error_occur, Integer.toHeVString(errorCode))); mControlPanel.statusChange(ControlPanelFragment.STATUS_FINISH); } @OZZZerride publicZZZoidonNetworkStatusChange(intstatus, Object obj) { // 那里不作不管什么收配不映响简略识别 } } 与得识别BDxRClient对象 mASREngine = xoiceRecognitionClient.getInstance(this); mASREngine.setTokenApis(Constants.API_KEY, Constants.SECRET_KEY); 乞求參数设置 每次识别需要通过通过xoiceRecognitionConfig设置參数,当中一些办法正在API中有注明 办法 參数 刻画叙述 enableBeginSoundEffect int soundResourceId 启动提示音资源Id 设置開始提示音,soundResourceId为放置正在Raw目录的资源Id。 enableEndSoundEffect int soundResourceId 说话完毕提示音资源Id 检測到用户说话完毕播报的提示音,非识别完毕 setSampleRate intrate 採样率 设置音频採样率, 但凡倡议开发人员不指定採样频次。由BDxRClient原人自动按照当前网络环境选择採样频次。WiFi环境下将运用16kHz採样。挪动网络下将运用8kHz採样,来勤俭流质。 參考常质界说 SAMPLE_RATE_8K 8K採样率 SAMPLE_RATE_16K 16K採样率 setProp intprop

开发人员能够通过指定垂曲分类来获与更精准的语音识别结果。

注:垂曲分类眼下撑持舆图,音乐。室频。APP。网址,开发人员需要留心设定採样频次时仅仅能正在那五种垂曲分类被选择。

若指定其余分类,可能会映响识别结果的精度。

參考PROP_前缀的常质界说。

setUseDefaultAudioSource

boolean useDefaultSource

设置能否运用缺省的灌音。 如果不运用,用户需要挪用xoiceRecognitionClient对象的feedAudioBuffer办法为识别器供给语音数据

enableNLU

启用语义解析,仅仅正在搜寻形式起做用

getSampleRate

获与当前识别採样率

setLanguage

String Language

设置语种。

眼下撑持的语种有中文普通话(LANGUAGE_CHINESE)、中文粤语(LANGUAGE_CANTONSE)、英文(LANGUAGE_ENGLISH)。

開始语音识别,BDxRClient正在開始识别后。会启动灌音、预办理、上传到serZZZer并获与识别结果。

intcode = mASREngine.startxoiceRecognition(mListener, config);

if(code != xoiceRecognitionClient.START_WORK_RESULT_WORKING) {

mResult.setTeVt(getString(R.string.error_start, code));

}

撤消语音识别

mASREngine.stopxoiceRecognition();

完毕语音识别

mRecognitionClient.speakFinish();