开放能力
开发平台
行业应用
生态合作
开发与教学
资讯 社区 控制台
技术能力
语音技术
图像技术
文字识别
人脸与人体识别
视频技术
AR与VR
自然语言处理
知识图谱
数据智能
场景方案
部署方案
行业应用
智能教育
智能医疗
智能零售
智能工业
企业服务
智能政务
智能农业
信息服务
智能园区
智能硬件
语音技术

    简介

    概述

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


    版本更新

    jar 文件名 日期 更新内容
    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文件

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

    在线识别

    在线是指手机联网时(2G 3G 4G wifi), 在线是指手机联网时(2G 3G 4G 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,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文件。

    上一篇
    短语音识别API
    下一篇
    调用流程