简介
本文档是百度语音开放平台iOS SDK的用户指南,描述了语音识别、长语音识别、语音唤醒等相关接口的使用说明。
版本更新
版本 | 日期 | 更新内容 |
---|---|---|
3.0.10.0 | 2021-03-02 | 开启长语音模式代表使用实时语音识别接口,以实际调用接口时长计费 |
3.0.9.0 | 2020-01-07 | 修改默认的PID为1537 |
3.0.8.0 | 2019-10-23 | 增加了识别子错误状态 |
3.0.6.0 | 2019-05-05 | 增加对语音自训练平台的支持 |
3.0.5.7 | 2018-03-01 | 增加模拟器支持 |
3.0.5.6 | 2017-12-14 | 进入后台不打断识别和唤醒;错误修复; |
/ | 2017-12-08 | 语音在线识别模型升级,大幅度提升识别准确率! |
兼容性
类别 | 兼容范围 |
---|---|
系统 | 支持iOS 8.0及以上系统 |
架构 | armv7、arm64、i386、x86_64(模拟器架构暂不支持离线功能) |
网络 | 支持移动网络、WIFI等网络环境 |
开发环境 | 工程内使用了LTO等优化选项,建议使用最新版本Xcode进行开发 |
资源占用描述
静态库占用:
SDK类型 | 二进制增量 | __TEXT增量 |
---|---|---|
识别+唤醒 | 1.9M | 1.0M~1.2M |
资源占用:
资源名称 | 资源描述 | 备注 |
---|---|---|
bds_easr_basic_model.dat | 基础语言模型 | 必须引入 |
bds_easr_mfe_cmvn.dat, bds_easr_mfe_dnn.dat | VAD(MFE)模型所需资源文件 | 需要MFE模式时引入 |
bds_easr_gramm.dat | 离线语法资源文件 | 需要离线或唤醒功能时引入 |
bds_easr_wakeup_words.dat | 唤醒词文件 | 需要唤醒时引入 |
bds_easr_input_model.dat | 离线识别(输入法模式)资源文件 | 一般无需引入 |
SDK大小说明
- 由于 BITCODE 开启会导致二进制文件体积增大,这部分会在 APPStore 发布时进行进一步编译优化,并不会引起最终文件的体积变化,故此处计算的是关闭 BITCODE 下的二进制增量。
- .a中是多个架构做了合并,使用lipo可以看到细节。所以.a库文件本身很大,且打包出来的ipa也相对较大。但用户实际下载到手机中会被AppStore优化,只下载用户设备需要的架构,所以实际在手机上占用的空间很小。
Architectures in the fat file: libBaiduSpeechSDK.a are: armv7 i386 x86_64 arm64
- DemoApp(包括离线和唤醒)在iPhone6 10.2 中实际占用大小小于10M
功能说明
BDSClientHeaders/ASR/Settings/BDSASRDefines.h 与 BDSASRParameters.h 头文件中包含了绝大多数SDK的可用配置参数及说明。
语音识别音频数据源配置
目前SDK支持三种音频数据源。说明如下:
音频数据源 | 优先级 | 说明 |
---|---|---|
文件输入 | 高 | 16K采样率、单声道PCM格式音频文件 |
输入流 | 中 | 用以支持外接音源,如车载录音机 |
本地录音机 | 低 | 手机设备内置录音功能 |
- 默认使用本地录音机,如设置过文件或输入流相关参数,将其置空即可恢复为默认设置;
- 录音模块运行时,切换数据源不生效;
- 多模块共享录音模块,重复设置会产生覆盖;
语音识别策略
目前SDK支持两种识别策略。说明如下:
识别策略 | 说明 |
---|---|
在线识别 | 识别请求发至语音服务器进行解析 |
并行模式 | 离在线识别同时进行,取第一个返回的识别结果 |
引擎验证方法
在线识别与唤醒都需要进行相关验证后方可使用:
引擎类型 | 验证方法 |
---|---|
在线识别 | 开放平台使用API/SECRET KEY + APPID进行验证 |
离线识别 | 使用APPID进行验证 |
唤醒引擎 | 与离线识别验证方法一致 |
语音识别中的AudioSession
语音识别SDK默认会将AudioSession的Category设置为AVAudioSessionCategoryPlayAndRecord,并在必要的时候调用setActive接口对外部音频进行打断及恢复,如果开发者不希望SDK对AudioSession进行操作,可以通过参数配置接口,把BDS_ASR_DISABLE_AUDIO_OPERATION对应的value设置为YES,即可屏蔽SDK内部的操作。
需要注意的是,SDK仍会对Category进行设置,只是屏蔽了setActive接口的调用,开发者可根据需求自行配置。
标点输出
如若需要输出标点,请先根据语言设置支持标点的PRODUCT_ID,同时关闭BDS_ASR_DISABLE_PUNCTUATION
// -- 开启标点输出 -----
[self.asrEventManager setParameter:@(NO) forKey:BDS_ASR_DISABLE_PUNCTUATION];
// 普通话标点
[self.asrEventManager setParameter:@"1537" forKey:BDS_ASR_PRODUCT_ID];
// 英文标点
// [self.asrEventManager setParameter:@"1737" forKey:BDS_ASR_PRODUCT_ID];
PRODUCT_ID
在线参数, 请根据语言, 输入法及是否需要在线语义,来选择PID。
- 语言:目前支持中文普通话,四川话,粤语,和英语四个
- 输入法模型:适用于较长的句子输入。默认有标点,不支持在线语义; 开启标点后,不支持本地语义。
- 在线语义:在线语义只支持普通话(本地语义也是只支持普通话)
PID | 语言 | 模型 | 是否有标点 | 在线语义 |
---|---|---|---|---|
1537 | 普通话 | 语音近场识别模型 | 有标点(逗号) | 不支持 |
15372 | 普通话 | 语音近场识别模型 | 加强标点(逗号、句号、问号、感叹号) | 不支持 |
15373 | 普通话 | 语音近场识别模型 | 加强标点(逗号、句号、问号、感叹号) | 支持 |
1737 | 英语 | 无标点 | 不支持 | |
17372 | 英语 | 加强标点(逗号、句号、问号) | 不支持 | |
1637 | 粤语 | 有标点(逗号) | 不支持 | |
16372 | 粤语 | 加强标点(逗号、句号、问号、感叹号) | 不支持 | |
1837 | 四川话 | 有标点(逗号) | 不支持 | |
1936 | 普通话 | 远场模型 | 有标点(逗号) | 不支持 |
19362 | 普通话 | 远场模型 | 加强标点(逗号、句号、问号、感叹号) | 不支持 |
19363 | 普通话 | 远场模型 | 加强标点(逗号、句号、问号、感叹号) | 支持 |
- 原15361,15371,19361支持通用场景语义解析pid已全面升级为15363,15373,19363。语义理解协议升级,语义理解准确率提升,覆盖更多语义场景。旧有pid(15361,15371,19361)将于2019年12月31日不再维护,请尽快切换升级至对应新pid。
以上描述的“长句模型”与“长语音识别”是两个概念
PRODUCT_ID通过参数BDS_ASR_PRODUCT_ID来配置,如
[self.asrEventManager setParameter:@"1537" forKey:BDS_ASR_PRODUCT_ID];
注意:BDS_ASR_PRODUCT_ID参数会覆盖识别语言的设置
语音自训练平台模型训练
自训练平台可以认为是自定义词库的升级版本,可以更加直观地查看训练效果。同样使用您自定义的文本进行结果优化。
具体功能及使用说明请参考文档 “自训练平台手册”
如您需要在iOS SDK上添加模型训练的功能,可以在语音自训练平台上训练实时语音识别-中文普通话模型
训练后的模型注意必须填写上线模型的模型参数,可在自训练平台的模型调用模块进行查看。
示例 获取专属模型参数pid:1537或15372 modelid:1235
, 则调用websocket API时必须填写参数 dev_pid=1537或15372(PID功能见下表);同时lm_id 设置为1235。
PID | 模型 | 是否有标点 |
---|---|---|
1537 | 中文普通话 | 无标点 |
15372 | 中文普通话 | 加强标点(逗号、句号、问号、感叹号) |
自训练平台模型配置
- 模型配置
[self.asrEventManager setParameter:@(1234) forKey:BDS_ASR_LM_ID];
[self.asrEventManager setParameter:@"1537" forKey:BDS_ASR_PRODUCT_ID];
- 标点配置
[self.asrEventManager setParameter:@(EVR_PUNC_MODE_FULL) forKey:BDS_ASR_PUNCTUATION_EXT_MODE]; // 打开标点
[self.asrEventManager setParameter:@(EVR_PUNC_MODE_EMPTY) forKey:BDS_ASR_PUNCTUATION_EXT_MODE]; // 关闭标点
[self.asrEventManager setParameter:@(EVR_PUNC_MODE_SIMPLE) forKey:BDS_ASR_PUNCTUATION_EXT_MODE]; // 删除句末标点
[self.asrEventManager setParameter:@(EVR_PUNC_MODE_SIMPLEST) forKey:BDS_ASR_PUNCTUATION_EXT_MODE]; // 空格替换全部标点
- 数字转换配置
[self.asrEventManager setParameter:@(NO) forKey:BDS_ASR_ENABLE_NUM_CONVERT_MODEL]; // 现在是二零零八年
[self.asrEventManager setParameter:@(YES) forKey:BDS_ASR_ENABLE_NUM_CONVERT_MODEL]; // 现在是2008年
Release Notes
20200107: release 3.0.9.0
修改默认pid为1537
20191223: release 3.0.8.0
增加了识别子错误状态
20190505: release 3.0.6.0
增加对语音自训练平台的支持
20180301: release 3.0.5.7
增加模拟器支持
20171214: release 3.0.5.6
进入后台不打断识别和唤醒;错误修复;
20171208
语音在线识别模型升级,大幅度提升识别准确率!