百度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用法相关推荐

  1. android在线签名sdk,Android 微信 SDK 签名问题

    因为 Android 的开放性, 可能是出于安全考虑, 微信 SDK 除了核对应用包名外, 还会核对应用签名, 所以调试 Android 时, 需要保证应用签名与提交审核的签名一致. 首先, 应用务必 ...

  2. 跨平台Android和IOS百度语音在线识别原生插件

    一.插件推荐 跨平台Office文档.图片在线预览,视频播放原生插件 Android和IOS图片在线预览,视频播放原生插件 跨平台Android和IOS百度OCR文字识别.证卡识别.票据识别原生插件 ...

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

    百度Android语音识别SDK分在线与离线两种.这篇文章介绍在线SDK的用法. 在线SDK是以JAR包和动态链接库形式公布和使用.能够从百度开放云平台站点中下载SDK及使用说明文档. 完毕语音SDK ...

  4. Android开发学习之使用百度语音识别SDK实现语音识别(上)

    作为移动互联网杀手级的交互方式,语音识别从问世以来就一直备受人们的关注,从IOS的Siri到国内的讯飞语音,语音识别技术在移动开发领域是最为充满前景和希望的技术.Android作为一个移动操作系统,其 ...

  5. Android 调用百度在线语音识别功能

    换了好几个语音转文字的工具,主要跟百度上大家的方法一样,最开始用的科大讯飞的语音,真的还蛮好用的,整体来说demo的接口比较清晰吧~准确率也很高,但是量大就要收费.所以,换了第二种,Android原生 ...

  6. Baymax (Android版的Siri)之百度语音识别SDK调用

    之前说Baymax 的UI设计,现在UI设计好了,我们得开始讲一讲识别方面的事了.这里我们需要用到百度的语音识别技术,大家可以先上百度语音开放平台,上面有开发手册和demo帮助大家学习.贴上连接:ht ...

  7. 语音识别sdk for ios android,iOS百度语音识别SDK 让你的APP不在单调

    大家好,我是RickyWei. 语音识别有很多种,今天给大家带来的是,百度语音识别 . 一. 引入编译需要的Framework 1.BDVRClient使用了录音和播放功能,因此需要在Xcode工程中 ...

  8. android音视频播放器开发百度云,Android 播放端 SDK

    1 概述 PLDroidPlayer 是一个适用于 Android 平台的音视频播放器 SDK,可高度定制化和二次开发,为 Android 开发者提供了简单.快捷的接口,帮助开发者在 Android ...

  9. 百度 android tts sdk,百度Android语音合成(TTS)SDK使用方法

    语音合成是实现人机语音交互,建立一个有听和讲能力的交互系统所必需的关键技术.随着语音技术的发展,百度自主研发了语音合成系统(TTS),功能是接受用户发送的文本,生成语音发送给用户. 这篇文章将介绍如何 ...

最新文章

  1. Java 方法重载 方法重写
  2. SpringBoot+Thymeleaf+Jquery实现模态框的显示与数据填充
  3. 利用python画混淆矩阵
  4. 区间第K大(划分树)
  5. ring0 ring3 kernel driver
  6. Spring Web-Flux – Cassandra后端的功能样式
  7. Linux 中vim编辑器学习笔记
  8. UE4--多线程的实现方式
  9. 【Java中级篇】使用itextpdf生成PDF
  10. C语言输入一个大写字母,试输出其小写字母
  11. Java定时任务(一) Timer及TimerTask的案例解析及源码分析
  12. scala 冒泡排序
  13. OpenWRT原版固件安装
  14. 虚拟化技术中,不同层级结构间的虚拟化运用
  15. Latex 中的算法流程介绍,含中文和矩阵公式段落整体居中内部左对齐
  16. 实操:直通车暴力打造爆款,0销量4天搜索访客800!
  17. 密西根州立大学计算机qs分数,美国密歇根州立大学在2021年QS世界排名上的名次是多少?...
  18. 每个程序员书柜必有的编程书籍
  19. Android AndroidManifest 文件详解
  20. 输入年、月,判断该月有多少天

热门文章

  1. cookie与token对比(转)
  2. Canvas开发库封装
  3. 莫言汕大致辞:马云、盖茨毕业之初都没什么了不起
  4. MSCI 成份股 清单
  5. BZOJ 4011 HNOI2015 落忆枫音
  6. Winform GDI+
  7. 在中國古代是沒有這種現象的
  8. Bailian3258 兔子产子【递推+打表】
  9. UVA11764 Jumping Mario【Ad Hoc】
  10. CCF NOI1047 寻找鞍点