百度Android语音识别SDK分在线与离线两种,这篇文章介绍在线SDK的使用方法。

在线SDK是以JAR包和动态链接库形式发布和使用,可以从百度开放云平台网站中下载SDK及使用说明文档。

点击管理控制台,选择

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

等待对接成功

3、使用语音识别SDK前的准备

声明权限

[java]

view plain copy

"android.permission.RECORD_AUDIO"

/>

/>

/>

/>

/>

/>

/>

/>

/>

4、语音识别

语音识别控件方式

[java]

view plain copy

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

静音超时后将“取消”按钮替换为“帮助”

设置回调方法,处理返回的结果

[java]

view plain copy

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

[java]

view plain copy

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

然后启动识别

[java]

view plain copy

int

code = mASREngine.startVoiceRecognition(mListener, config);

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

[java]

view plain copy

/**

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

*/

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对象

[java]

view plain copy

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

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在开始识别后,会启动录音、预处理、上传到服务器并获取识别结果。

[java]

view plain copy

int

code = mASREngine.startVoiceRecognition(mListener, config);

if

(code != VoiceRecognitionClient.START_WORK_RESULT_WORKING) {

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

}

取消语音识别

android语音识别sdk接入收费吗,百度语音识别开放平台SDK使用方法相关推荐

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

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

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

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

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

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

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

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

  5. android微信解析失败,微信开放平台sdk解析失败

    时间:2017年7月20日 14:00左右,重新编译了一下Android Studio,报出了一个匪夷所思的错误: 早上还好好的,为啥下午就莫名其妙报出这个错误呢.看错误内容,应该是AS找不到指定的依 ...

  6. 软件工程师百度AI开放平台接入指南

    版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 概述 若想利用百度AI开放平台进行软件开发,首先应成为百度AI开放平台的开发者.在此,以图文形 ...

  7. java系统对接方案_阿里巴巴开放平台SDK(java版). 接入授权店铺数据,对接企业内部管理系统的解决方案...

    AlibabaSDK-java 阿里巴巴开放平台SDK. 接入授权店铺数据,对接企业内部管理系统的解决方案 获取授权链接 @Test public void testGetPreAuthUrl() t ...

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

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

  9. 美团开放平台SDK自动生成技术与实践

    美团开放平台为整个美团提供了20+业务场景的开放API,为了使开发者能够快速且安全的接入美团开放平台,美团开放平台提供了多种语言的SDK来提高开发者的接入效率.本文介绍了美团开放平台如何自动生成SDK ...

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

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

最新文章

  1. 【Groovy】Groovy 脚本调用 ( Groovy 配置文件格式 | Groovy 配置文件读取 | 完整配置文件及解析代码示例 )
  2. java 设计模式学习笔记十 bridge桥模式
  3. Spring Cloud 微服务架构全链路实践
  4. 程序员(工作2年)立flag,面四家,成三家,最后进了蚂蚁.....
  5. 菜鸟php ajax,AJAX ASP/PHP
  6. 卷起来了!DeepMind发布媲美普通程序员的AlphaCode,同日OpenAI神经数学证明器拿下奥数题...
  7. 很基本的权限功能小结
  8. Google菜市场(Android Market)上不去的解决方法
  9. Linux-Ubantu-常见命令
  10. 在QT中使用同步阻塞式HTTP请求的方法
  11. ehcache缓存原理_Mybatis-09-缓存
  12. extjs 实现 NumberField 即时计算
  13. 怎样开图纸便宜_在县城开一家儿童乐园怎么样?开多大面积合适?投资需要多少钱?...
  14. 刘意JavaSE 学习笔记 Day19-Day21——异常,IO(File类/字符流/字节流)
  15. 用C#一步步写串口通信
  16. NFT Insider #65:韩国娱乐业巨头CJ ENM与The Sandbox达成合作,YGG 建立巴西社区的SubDAO
  17. 华为交换机怎么查看接口流量
  18. 403 Forbidden vs 401 Unauthorized HTTP 响应
  19. Mac使用Charles抓包
  20. 《数据库原理》实验报告DB7——事务与并发控制

热门文章

  1. Flink Transformation
  2. 安装远程服务器管理工具(RSAT-Remote Server Administration Tools)
  3. 斗罗大陆斗神再临服务器维修,斗罗大陆斗神再临攻略汇总:FAQ常见问题解答[多图]...
  4. jQuery 任意公历转为农历
  5. 昆明oracle考试点,Oracle认证考试知识点:修改sid的步骤
  6. Pettitt突变点检测
  7. 实战分析SpringBoot整合JSON,面试题附答案
  8. CSS元素宽度、继承父元素宽度、cale函数计算宽度总结
  9. CKEditor 4.x 批量图片上传插件
  10. SNN系列|学习算法篇(1)Tempotron