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

百度语⾳识别开放平台SDK⽤法
版权声明:本⽂为博主原创⽂章,未经博主同意不得转载。 blog.csdn/zpf8861/article/details/30229039
百度Android语⾳识别SDK分在线与离线两种。这篇⽂章介绍在线SDK的⽤法。
在线SDK是以JAR包和动态链接库形式公布和使⽤。能够从百度开放云平台站点中下载SDK及使⽤说明⽂档。
鼓芯完毕语⾳SDK的集成分下⾯⼏步。本⽂将⼀步步介绍SDK集成⽅法。
1、注冊开放开放平台
点击管理控制台。选择移动应⽤管理
选择创建应⽤,填写应⽤名称
能够看到右上⾓有ID、API KEY、Secret KEY。点击能够复制其内容,保存这些字符串,在使⽤语⾳SDK时会⽤到。
2、申请开启语⾳识别服务。选择媒体云---语⾳识别,点击申请开启服务,填写理由。
等待对接成功
3、使⽤语⾳识别SDK前的准备
之前准备了SDK开发包以及ID、API KEY、Secret KEY。
⾸先将开发包中的lib中的库加⼊到project中
声明权限
[java]
<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()⽅法就能够弹出对话框開始识别。识别结束后会在回调中得到识别结果。
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.show();
识别对话框⽀持的參数定义在BaiduASRDigitalDialog中以PARAM_前缀的常量。列表例如以下:
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]
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.(0));
}
}
};
API⽅式
⾸先须要配置语⾳识别引擎ASREngine的參数VoiceRecognitionConfig
VoiceRecognitionConfig config = new VoiceRecognitionConfig();
config.setProp(Config.CURRENT_PROP);智能卡制作
config.CurrentLanguage());
if (Config.PLAY_START_SOUND) {
}
if (Config.PLAY_END_SOUND) {
}
config.setSampleRate(VoiceRecognitionConfig.SAMPLE_RATE_8K); // 设置採样率,须要与外部⾳频⼀致
然后启动识别
[java]
int code = mASREngine.startVoiceRecognition(mListener, config);
当中mListener是识别过程的回调,须要对当中的⽅法进⾏实现
[java]
/**
* 重写⽤于处理语⾳识别回调的
*/
苹果灯class MyVoiceRecogListener implements VoiceClientStatusChangeListener {
@Override
public void onClientStatusChange(int status, Object obj) {
switch (status) {
// 语⾳识别实际開始,这是真正開始识别的时间点。需在界⾯提⽰⽤户说话。
case VoiceRecognitionClient.CLIENT_STATUS_START_RECORDING:
isRecognition = true;
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(_occur, HexString(errorCode)));
mControlPanel.statusChange(ControlPanelFragment.STATUS_FINISH);
}
@Override
public void onNetworkStatusChange(int status, Object obj) {
// 这⾥不做不论什么操作不影响简单识别
}
}
获得识别BDVRClient对象
[java]
mASREngine = Instance(this);
mASREngine.setTokenApis(Constants.API_KEY, Constants.SECRET_KEY);
请求參数设置
每次识别须要通过通过VoiceRecognitionConfig设置參数,当中⼀些⽅法在API中有说明
⽅法參数描写叙述
enableBeginSoundEffect int soundResourceId 启动
设置開始提⽰⾳,soundResourceId为放置在Raw⽬录的资源Id。
提⽰⾳资源Idlvds屏线
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]
int code = mASREngine.startVoiceRecognition(mListener, config);
if (code != VoiceRecognitionClient.START_WORK_RESULT_WORKING) {
mResult.setText(getString(_start, code));
}
取消语⾳识别
[java]
mASREngine.stopVoiceRecognition();
结束语⾳识别
[java]
mRecognitionClient.speakFinish();
2.

本文发布于:2024-09-22 13:20:30,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/202019.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:识别   设置   參数   回调   结果   開始   能够   须要
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议