百度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时会用到。

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

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

等待对接成功

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

语种,取值定义在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 =newDialogRecognitionListener() {

@Override

publicvoidonResults(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 =newVoiceRecognitionConfig();

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); // 设置採样率,须要与外部音频一致

然后启动识别

intcode = mASREngine.startVoiceRecognition(mListener, config);

当中mListener是识别过程的回调,须要对当中的方法进行实现

/**

* 重写用于处理语音识别回调的监听器

*/

classMyVoiceRecogListenerimplementsVoiceClientStatusChangeListener {

@Override

publicvoidonClientStatusChange(intstatus, Object obj) {

switch(status) {

// 语音识别实际開始,这是真正開始识别的时间点。需在界面提示用户说话。

caseVoiceRecognitionClient.CLIENT_STATUS_START_RECORDING:

isRecognition = true;

mHandler.removeCallbacks(mUpdateVolume);

mHandler.postDelayed(mUpdateVolume, POWER_UPDATE_INTERVAL);

mControlPanel.statusChange(ControlPanelFragment.STATUS_RECORDING_START);

break;

caseVoiceRecognitionClient.CLIENT_STATUS_SPEECH_START:// 检測到语音起点

mControlPanel.statusChange(ControlPanelFragment.STATUS_SPEECH_START);

break;

// 已经检測到语音终点,等待网络返回

caseVoiceRecognitionClient.CLIENT_STATUS_SPEECH_END:

mControlPanel.statusChange(ControlPanelFragment.STATUS_SPEECH_END);

break;

// 语音识别完毕,显示obj中的结果

caseVoiceRecognitionClient.CLIENT_STATUS_FINISH:

mControlPanel.statusChange(ControlPanelFragment.STATUS_FINISH);

isRecognition = false;

updateRecognitionResult(obj);

break;

// 处理连续上屏

caseVoiceRecognitionClient.CLIENT_STATUS_UPDATE_RESULTS:

updateRecognitionResult(obj);

break;

// 用户取消

caseVoiceRecognitionClient.CLIENT_STATUS_USER_CANCELED:

mControlPanel.statusChange(ControlPanelFragment.STATUS_FINISH);

isRecognition = false;

break;

default:

break;

}

}

@Override

publicvoidonError(interrorType,interrorCode) {

isRecognition = false;

mResult.setText(getString(R.string.error_occur, Integer.toHexString(errorCode)));

mControlPanel.statusChange(ControlPanelFragment.STATUS_FINISH);

}

@Override

publicvoidonNetworkStatusChange(intstatus, 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并获取识别结果。

intcode = mASREngine.startVoiceRecognition(mListener, config);

if(code != VoiceRecognitionClient.START_WORK_RESULT_WORKING) {

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

}

取消语音识别

mASREngine.stopVoiceRecognition();

结束语音识别

mRecognitionClient.speakFinish();

百度语音识别开放平台SDK用法相关推荐

  1. 百度AI开放平台集成人脸识别,离线采集有动作活体版本sdk

    前言 Android项目Android studio环境: 1.工程build.gradle版本号:3.2.1 2.app目录下的build.gradle配置:compileSdkVersion 28 ...

  2. 【百度智能云】教程:连接百度ai开放平台api接口并完成语音识别的任务

    前言与介绍 本文章介绍了如何在Pycharm上用python语言简单的对连接百度ai开放平台的语音识别功能api端口的调用,并在代码里实现了现录音识别内容. 平台与相关工具 windows10.Pyc ...

  3. 语音识别开放平台调研以及主要技术

    语音识别是以语音为研究对象,通过语音信号处理和模式识别让机器自动识别和理解人类口述的语言.语音识别技术就是让机器通过识别和理解过程把语音信号转变为相应的文本或命令的高技术.语音识别是一门涉及面很广的交 ...

  4. 史上最简单的图像识别-百度AI开放平台

    提到图像识别,一般都会想到人工智能.虽然现在人工智能还在发展阶段,但是有些技术已经成熟,比如图像识别.语音识别.百度早在2015年之前就已经推出了AI开放平台,涵盖了语音识别.图像处理.视频技术等等. ...

  5. 百度AI 开放平台 语音合成

    一.前言 继上一篇介绍如何使用百度语音识别API 的博客<树莓派 >>> 接入百度AI 开放平台实现智能语音识别>后,今天我们来看看如何使用百度语音合成,有了这一听一说, ...

  6. 票据识别android代码,Android 百度AI开放平台-文字识别-财务票据文字识别

    简单记录一下今天关于百度AI开放平台-文字识别-财务票据文字识别的实现过程 文字识别有对应的Android SDK集成及相关Demo,文档地址如下图: SDK目录图.png 但是SDK中的返回数据字段 ...

  7. Java调用百度AI开放平台API

    百度AI开放平台 百度AI开放平台是全球领先的人工智能服务平台,面向开发者及企业开放120多项全球领先的AI能力和软硬一体组件,并提供 EasyDL定制化训练平台.对话系统开发平台UNIT.自定义模板 ...

  8. 关于使用百度AI开放平台

    百度AI开放平台 地址:https://cloud.baidu.com/?from=console 1.注册登录 2.右侧点击管理控制台,左侧选择自己需要的模块,创建应用 https://consol ...

  9. 百度AI开放平台在线体验及API接口调用(python)

    写在前面 百度AI开放平台将目前已有的深度学习和人工智能的项目成果做了一个集成,并供用户体验和开发者调用. 在线体验 图像技术 色情识别 人像分割 图像无损放大 图像风格转换 文字识别 车牌识别 文字 ...

最新文章

  1. CentOS6.5下做DNS服务器
  2. C++新增头文件.h,静态库.lib
  3. linux分区dh满了,python 在linux下能过top,和dh命令获得cpu,内存,以及硬盘信息 - Sprite...
  4. 计算机系学生的简单立体宿舍装潢大赏
  5. php+html 实现加减乘除
  6. 【NLP】基于机器学习的文本分类!
  7. RHEL 5服务篇—使用Apache搭建Web服务(一)
  8. P1135 奇怪的电梯(BFS/DFS)
  9. jquery常用功能
  10. [转]extern使用方法总结
  11. 【2006-1】【字符统计】
  12. Spring的国际化(转载)
  13. Beta 冲刺(2/7)
  14. CSS学习笔记(二)选择器
  15. 校验两个文件是否一样(MD5方式:windows,linux,自定义java代码三种方式)——亲测成功
  16. GstElement的sink/src有什么区别?
  17. 四元数与欧拉角的转换
  18. 步进电机驱动A4988,步进电机驱动程序编写
  19. VTT字幕文件处理(vi + sed + awk)
  20. 怎样增加图片的大小,不是尺寸哦!

热门文章

  1. 带分数 --三种方法详解
  2. Ext.Net messagebox
  3. 小程序运营要善于做好活动推送
  4. 我们这个时代,寒门再难出贵子
  5. Pandas中data.shape用法
  6. Spring启动自动执行方法
  7. GD32 SPI DMA收发
  8. guolin.tech_通过.tech域名扩展建立成功的品牌
  9. Spark 安装配置及下载地址
  10. 全代码编写的iPhone界面源码1 UIView UILabel UIButton