资讯 社区 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

简介

概述

本文档是百度语音开放平台Android SDK的用户指南,描述了短语音识别、离线自定义命令词识别、远场语音识别、语音唤醒、语义解析与对话管理等相关接口的使用说明。SDK内部均为采用流式协议,即用户边说边处理。区别于Restapi需要上传整个录音文件。


版本更新

jar 文件名 日期 更新内容
bdasr_V3_20210628_cfe8c44.jar 2021-07-26 修复unit功能及部分鉴权问题
bdasr_V3_20210521__0ddfe93.jar 2021-06-04 修复SDK中unit功能无法使用问题
bdasr_V3_20201116_93b546d.jar 2021-03-02 新增长语音参数BDS_ASR_ENABLE_LONG_SPEECH;开启长语音模式代表使用实时语音识别接口,以实际调用接口时长计费
bdasr_V3_20191210_81acdf5.jar 2020-01-06 修改默认的PID为1537
bdasr_V3_20191017_81d0afc.jar 2019-10-30 不再依赖READ_PHONE_STATE权限 ;优化鉴权报错
bdasr_V3_20190515_c9eed5d.jar 2019-06-05 添加API LEVEL 28的编译支持
bdasr_V3_20180801_d6f298a.jar 2018-08-13 修复本地语义无法在线时使用;修复长语音回调

兼容性

类别 兼容范围
系统 支持Android 4.0.3 以上版本 API LEVEL 15
机型 上市的android手机和平板。对其它android设备及订制系统不做官方支持
硬件要求 要求设备上有麦克风
网络 支持移动网络(不包括2G)、WIFI等网络环境
开发环境 建议使用最新版本Android Studio 进行开发

功能简介

语音识别Android SDK 功能 主要分为语音识别 及 语义理解与对话管理

  1. 语音识别: 将录音转为文字。目前在线识别支持普通话、英文、粤语和四川话。
  2. 语义理解与对话管理: 提取语音识别出的文字的意图与关键信息,并做出回应。

音频格式要求:

默认为麦克风输入,可以设置参数为pcm格式16k采样率,16bit,小端序,单声道的音频流输入。

语音识别

语音识别,可以分为在线识别,离线命令词,及唤醒词

  1. 在线识别: 即联网使用的识别功能,支持自定义词库及自训练平台。目前在线识别支持普通话、英文、粤语和四川话,通过在请求时配置不同的pid参数,选择对应模型。默认为麦克风输入,可以设置参数为pcm格式16k采样率,16bit,小端序,单声道的音频流输入。
  2. 离线命令词: 断网时识别固定的预定义短语(定义在bsg文件中),SDK强制优先使用在线识别。 断网时激活,只能识别预定义的短语。联网时,强制使用在线识别。固定短语的语法需要从控制台“离线词&本地语义”模块预定义并下载为baidu_speech_grammar.bsg文件
  3. 唤醒词:识别预定义的“关键词”, 这个“关键词”必须在一句话的开头。 本地功能,不需要网络。唤醒词即识别“关键词”,当SDK的识别引擎“听到”录音中的关键词后,立即告知用户。与android系统的锁屏唤醒完全无关。关键词和离线命令词一样,需要预定义并下载为WakeUp.bin文件

目前没有公开版本的离线任意语句识别及声纹识别

在线识别

在线是指手机联网时(3G 4G 5G wifi)

在线识别,可以分为:

  1. 在线普通识别: 流式识别出识别用户输入的录音音频流,支持普通话、英文、粤语和四川话。限制60s时长。
  2. 在线长语音识别: 在线普通识别的基础上,没有60s时长的限制。 在线识别可以测试DEMO中的第一个按钮“在线识别”。

在线识别的三种模型:

  1. 输入法模型(推荐):适合长句输入,模型及识别效果类似百度输入法。
  2. 远场模型:针对离麦克风较远的音频输入。

自定义词库

设置方法:

登录百度云-管理中心“管理应用”“选择应用”“语音识别词库设置”右侧“进行设置”;

设置效果:

  1. 可以自定义识别词,提升准确率。
  2. 仅在普通话输入法模型下生效。
  3. 自定义词库适合短句,保证词库中一模一样的短句可以被识别出。
  4. 词库中的分词优先级较高。

举例 词库定义了1个短句 :1 .“摆渡船来了”百度内部处理的可能的分词结果:摆渡船来 了。

以下录音的结果

  1. 原始音频:摆渡船来了 =》识别结果: 摆渡船来了 【保证结果】
  2. 原始音频:摆渡船来了么 =》识别结果: 百度传来了么 【可能结果,不保证】
  3. 原始音频:摆渡船来 =》 识别结果: 百度传来 【可能结果,不保证】
  4. 原始音频:百度传来了喜讯 =》 识别结果: 摆渡船来了喜讯 【不保证,词库内的分词优先级高】

最好在1万行以内。

副作用:如果用户的测试集中包含大量非自定义词表的query,整体上准确率下降。

语音自训练平台模型训练

自训练平台可以认为是自定义词库的升级版本,可以更加直观地查看训练效果。同样使用您自定义的文本进行结果优化。

具体功能及使用说明请参考文档 “自训练平台手册

离线命令词

离线命令词,联网时,强制使用在线识别,在断网时或在线请求超时时,使用离线命令词功能。离线命令词功能不支持任意语句的识别,只能识别预定义的固定短语。

唤醒词

唤醒词即识别预定义的“关键词”。与在线长语音识别不同,长语音识别会返回所有识别结果,唤醒词只会识别出您预先定义的关键词。与android本身的锁屏唤醒没有任何关系。

唤醒词是本地功能,正常使用时无需联网。 在http://ai.baidu.com/tech/speech/wake页面下方可以自行定义bin文件。百度语音提供了近15个预定义唤醒词,效果有优化。也可以自定义唤醒词,效果不如预定义唤醒词。bin文件中最多可以有10个唤醒词,其中自定义唤醒词不超过3个,并且2个字的预定义唤醒词不超过3个。进行唤醒词操作前必须要有相对静音

语义

语义包括理解与对话管理,可用于提取语音识别出的文字的意图与关键信息,并做出回应。目前,百度语音识别技术已和百度NLP实现了流程打通。NLP部分由百度语义理解与对话管理平台UNIT提供。语音识别Android SDK提供了3种对接语义的方式:

在线语义

  • 百度UNIT: 对话理解与交互技术平台,开发者可根据业务需要定制对话系统,也可以直接使用UNIT预置的对话能力。
  • 通用场景语义解析: 基于百度UNIT搭建的常见场景的语义理解(不含对话管理能力)。

本地语义

  • 在任意网络下都可使用,android sdk内部根据设置的bsg文件的定义进行离线命令词语义解析

录音环境

百度短语音识别(含唤醒)要求安静的环境,真人的正常语速的日常用语,并且不能多个人同时发音。

以下场景讲会导致识别或者唤醒效果变差,错误,甚至没有结果:

  1. 吵杂的环境
  2. 有背景音乐,包括扬声器在播放百度合成的语音。
  3. 离麦克风较远的场景应该选择远场语音识别。

以下场景的录音可能没有正确的识别结果:

  1. 音频里有技术专业名称或者用语 (技术专业名称请到自训练平台改善)
  2. 音频里是某个专业领域的对话,非日常用语。比如专业会议,动画片等

百度识别和合成sdk相互独立,没有类似“相互抵消“的功能。 建议先收集一定数量的真实环境测试集,按照测试集评估及反馈。


DEMO压缩包说明

DEMO压缩包下载即可运行,其中DEMO内已经附带了SDK的库。

  • bdasr_V3_xxx_xxx.jar 位于 core/libs 目录下。
  • armeabi,armeabi-v7a,arm64-v8a,x86,x86_64 5个架构目录位于core/src/main/jniLibs 目录下

demo 根目录下有readme_README_IMPORTANT.txt,使用前请先读完。 demo 根目录下有doc_integration_DOCUMENT目录,里面有demo的测试图文教程和集成图文教程。


正式授权

唤醒词和离线命令词功能需要一个正式授权文件。正式授权由SDK内部管理,无对外接口。正式授权文件在第一次联网使用SDK识别功能下载,比如第一次在线联网使用唤醒词功能或第一次在线识别后,SDK自动下载正式授权文件。正式授权文件有效期为应用新建后的35个月。在最后一个月,SDK一旦发现正式授权文件失效或即将失效,会尝试更新授权文件

注意,appId appKey appSecret包名(applicationId)4个必须完全正确,才能自动下载正式授权文件。


通用录音设置

下面2个参数设置识别和唤醒都可以使用;

引入外部音频文件

SDK默认麦克风的音频输入,可以改为用户自定义的音频文件或者自定义的音频流。IN_FILE该参数可以引入音频文件或者InputStream语音流进行识别,适用于对于音频输入有定制化的情况。音频格式为pcm,16000采样率,16bit,单声道,小端序;

IN_FILE引入外部音频文件(识别和唤醒都可使用)

DEMO中测试方法:(具体可参见识别安卓SDK测试文档)

demo测试:点击 在线识别=>设置=>外部音频=>16k_test.pcm,16k采样的测试音频

请求示例: 使用本地音频文件16k_test.pcm识别

{"accept-audio-volume":false,"infile":"res:\/\/\/com\/baidu\/android\/voicedemo\/16k_test.pcm"}

外部音频流, 格式如:”#com.test.Factory.create16KInputStream()”,具体见

{"accept-audio-volume":false,"infile":"#com.test.Factory.create16KInputStream()"}

高级的使用说明见doc_integration_DOCUMENT/N_FILE-inputstream.md文档说明

保存录音文件

SDK在识别的同时,可以把识别的音频保存下来,比如用于复现。OUT_FILE该参数可以保存录音文件。该参数需要设置ACCEPT_AUDIO_DATA参数;反馈问题时,请先使用该参数保存音频文件,使用上面的IN_FILE参数复现。

OUT_FILE 保存录音文件

DEMO中测试方法:(具体可参见识别安卓SDK测试文档)

demo测试:点击 在线识别设置保存音频开启音频回调。

请求示例:保存音频到 /storage/emulated/0/baiduASR/outfile.pcm

{"accept-audio-data":true,"accept-audio-volume":false,"outfile":"\/storage\/emulated\/0\/baiduASR\/outfile.pcm"}

SDK库文件

资源名称 资源大小 资源描述
bdasr_V3_xxx_xxx.jar 约130KB jar 库

NDK so库架构

共计5个架构目录:armeabi,armeabi-v7a,armeabi-v8a,arm64-v8a,x86,x86_64,每个架构下均有以下5个so库文件。

资源名称 资源大小
libBaiduSpeechSDK.so 约700K
libbd_easr_s1_merge_normal_20151216.dat.so 约2.2M
libbdEASRAndroid.so 约400K
libbdSpilWakeup.so 约1.3M
libvad.dnn.so 约40K

NDK so库精简

如果为了节省安装包体积,可以只使用armeabi目录,性能损失微小。

如果只需要在线识别功能,仅需要libBaiduSpeechSDK.so libvad.dnn.so 这2个so文件。