百度Android在线语音识别SDK用法
百度Android语音识别SDK分在线与离线两种,这篇文章介绍在线SDK的用法。
在线SDK是以JAR包和动态链接库形式公布和使用,能够从百度开放云平台站点中下载SDK及使用说明文档。
完毕语音SDK的集成分下面几步,本文将一步步介绍SDK集成方法。
1、注冊开放开放平台
点击管理控制台,选择移动应用管理
选择创建应用。填写应用名称
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvVm9pY2VGYW5z/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center />
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvVm9pY2VGYW5z/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center />
能够看到右上角有ID、API KEY、Secret KEY,点击能够复制其内容。保存这些字符串,在使用语音SDK时会用到。
2、申请开启语音识别服务 。选择媒体云---语音识别,点击申请开启服务,填写理由。
等待对接成功
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvVm9pY2VGYW5z/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center />
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 = 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替换为“帮助”
设置回调方法。处理返回的结果
mRecognitionListener = new DialogRecognitionListener() {
@Override
public void onResults(Bundle results) {
ArrayList rs = results != null ? results
.getStringArrayList(RESULTS_RECOGNITION) : null;
if (rs != null && rs.size() > 0) {
mResult.setText(rs.get(0));
}
}
};
API方式
首先须要配置语音识别引擎ASREngine的參数VoiceRecognitionConfig
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); // 设置採样率,须要与外部音频一致
然后启动识别int code = mASREngine.startVoiceRecognition(mListener, config);
当中mListener是识别过程的回调,须要对当中的方法进行实现/**
* 重写用于处理语音识别回调的监听器
*/
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对象
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
intrate 採样率
设置音频採样率,
通常建议开发人员不指定採样频率,由BDVRClient自己主动依据当前网络环境选择採样频率。WiFi环境下将使用16kHz採样,移动网络下将使用8kHz採样。来节省流量。
參考常量定义
SAMPLE_RATE_8K 8K採样率
SAMPLE_RATE_16K 16K採样率
setProp
intprop
开发人员能够通过指定垂直分类来获取更精准的语音识别结果。
注:垂直分类眼下支持地图。音乐。视频,APP。网址,开发人员须要注意设定採样频率时仅仅能在这五种垂直分类中选择。若指定其它分类。可能会影响识别结果的精度。參考PROP_前缀的常量定义。
setUseDefaultAudioSource
boolean useDefaultSource
设置是否使用缺省的录音。 假设不使用,用户须要调用VoiceRecognitionClient对象的feedAudioBuffer方法为识别器提供语音数据
enableNLU
启用语义解析,仅仅在搜索模式起作用
getSampleRate
获取当前识别採样率
setLanguage
String Language
设置语种。眼下支持的语种有中文普通话(LANGUAGE_CHINESE)、中文粤语(LANGUAGE_CANTONSE)、英文(LANGUAGE_ENGLISH)。
開始语音识别,BDVRClient在開始识别后,会启动录音、预处理、上传到server并获取识别结果。
int code = mASREngine.startVoiceRecognition(mListener, config);
if (code != VoiceRecognitionClient.START_WORK_RESULT_WORKING) {
mResult.setText(getString(R.string.error_start, code));
}取消语音识别
mASREngine.stopVoiceRecognition();
结束语音识别
mRecognitionClient.speakFinish();
读者能够结合着SDK文档与demo源码一起来学习百度语音识别SDK的使用。
语音识别的demo下载: http://download.csdn.net/detail/voicefans/7451441
小伙伴注意: 须要依照文章开头的去申请api key和secret key, 改动Constant.java,填上自己的key就ok了。VoiceRecognitionDemoActivity.java 展示了怎样使用Dialog方式识别
假设遇到问题欢迎留言交流。
百度Android在线语音识别SDK用法相关推荐
- android在线签名sdk,Android 微信 SDK 签名问题
因为 Android 的开放性, 可能是出于安全考虑, 微信 SDK 除了核对应用包名外, 还会核对应用签名, 所以调试 Android 时, 需要保证应用签名与提交审核的签名一致. 首先, 应用务必 ...
- 跨平台Android和IOS百度语音在线识别原生插件
一.插件推荐 跨平台Office文档.图片在线预览,视频播放原生插件 Android和IOS图片在线预览,视频播放原生插件 跨平台Android和IOS百度OCR文字识别.证卡识别.票据识别原生插件 ...
- 百度语音识别开放平台SDK用法
百度Android语音识别SDK分在线与离线两种.这篇文章介绍在线SDK的用法. 在线SDK是以JAR包和动态链接库形式公布和使用.能够从百度开放云平台站点中下载SDK及使用说明文档. 完毕语音SDK ...
- Android开发学习之使用百度语音识别SDK实现语音识别(上)
作为移动互联网杀手级的交互方式,语音识别从问世以来就一直备受人们的关注,从IOS的Siri到国内的讯飞语音,语音识别技术在移动开发领域是最为充满前景和希望的技术.Android作为一个移动操作系统,其 ...
- Android 调用百度在线语音识别功能
换了好几个语音转文字的工具,主要跟百度上大家的方法一样,最开始用的科大讯飞的语音,真的还蛮好用的,整体来说demo的接口比较清晰吧~准确率也很高,但是量大就要收费.所以,换了第二种,Android原生 ...
- Baymax (Android版的Siri)之百度语音识别SDK调用
之前说Baymax 的UI设计,现在UI设计好了,我们得开始讲一讲识别方面的事了.这里我们需要用到百度的语音识别技术,大家可以先上百度语音开放平台,上面有开发手册和demo帮助大家学习.贴上连接:ht ...
- 语音识别sdk for ios android,iOS百度语音识别SDK 让你的APP不在单调
大家好,我是RickyWei. 语音识别有很多种,今天给大家带来的是,百度语音识别 . 一. 引入编译需要的Framework 1.BDVRClient使用了录音和播放功能,因此需要在Xcode工程中 ...
- android音视频播放器开发百度云,Android 播放端 SDK
1 概述 PLDroidPlayer 是一个适用于 Android 平台的音视频播放器 SDK,可高度定制化和二次开发,为 Android 开发者提供了简单.快捷的接口,帮助开发者在 Android ...
- 百度 android tts sdk,百度Android语音合成(TTS)SDK使用方法
语音合成是实现人机语音交互,建立一个有听和讲能力的交互系统所必需的关键技术.随着语音技术的发展,百度自主研发了语音合成系统(TTS),功能是接受用户发送的文本,生成语音发送给用户. 这篇文章将介绍如何 ...
最新文章
- Java 方法重载 方法重写
- SpringBoot+Thymeleaf+Jquery实现模态框的显示与数据填充
- 利用python画混淆矩阵
- 区间第K大(划分树)
- ring0 ring3 kernel driver
- Spring Web-Flux – Cassandra后端的功能样式
- Linux 中vim编辑器学习笔记
- UE4--多线程的实现方式
- 【Java中级篇】使用itextpdf生成PDF
- C语言输入一个大写字母,试输出其小写字母
- Java定时任务(一) Timer及TimerTask的案例解析及源码分析
- scala 冒泡排序
- OpenWRT原版固件安装
- 虚拟化技术中,不同层级结构间的虚拟化运用
- Latex 中的算法流程介绍,含中文和矩阵公式段落整体居中内部左对齐
- 实操:直通车暴力打造爆款,0销量4天搜索访客800!
- 密西根州立大学计算机qs分数,美国密歇根州立大学在2021年QS世界排名上的名次是多少?...
- 每个程序员书柜必有的编程书籍
- Android AndroidManifest 文件详解
- 输入年、月,判断该月有多少天