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

简介


本文档是百度语音开放平台iOS SDK的用户指南,描述了语音识别、长语音识别、语音唤醒等相关接口的使用说明。

短语音识别和实时语音识别在iOS SDK中,通过开关进行控制。打开实时语音开关即为实时语音识别服务,单次识别不限时长;关闭实时语音开关即为短语音识别服务,单次可识别60s时长。开关设置详情请查看输入参数


版本更新

版本 日期 更新内容
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大小说明

  1. 由于 BITCODE 开启会导致二进制文件体积增大,这部分会在 APPStore 发布时进行进一步编译优化,并不会引起最终文件的体积变化,故此处计算的是关闭 BITCODE 下的二进制增量。
  2. .a中是多个架构做了合并,使用lipo可以看到细节。所以.a库文件本身很大,且打包出来的ipa也相对较大。但用户实际下载到手机中会被AppStore优化,只下载用户设备需要的架构,所以实际在手机上占用的空间很小。Architectures in the fat file: libBaiduSpeechSDK.a are: armv7 i386 x86_64 arm64
  3. DemoApp(包括离线和唤醒)在iPhone6 10.2 中实际占用大小小于10M

功能说明

BDSClientHeaders/ASR/Settings/BDSASRDefines.h 与 BDSASRParameters.h 头文件中包含了绝大多数SDK的可用配置参数及说明。

语音识别音频数据源配置

目前SDK支持三种音频数据源。说明如下:

音频数据源 优先级 说明
文件输入 16K采样率、单声道PCM格式音频文件
输入流 用以支持外接音源,如车载录音机
本地录音机 手机设备内置录音功能
  1. 默认使用本地录音机,如设置过文件或输入流相关参数,将其置空即可恢复为默认设置;
  2. 录音模块运行时,切换数据源不生效;
  3. 多模块共享录音模块,重复设置会产生覆盖;

语音识别策略

目前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上添加模型训练的功能,可以在语音自训练平台上训练实时语音识别-中文普通话模型 image.png

训练后的模型注意必须填写上线模型的模型参数,可在自训练平台的模型调用模块进行查看。

示例 获取专属模型参数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年