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

简介

本文档是百度语音开放平台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.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 普通话 语音近场识别模型 有标点(逗号) 不支持 默认PID
15372 普通话 语音近场识别模型 加强标点(逗号、句号、问号、感叹号) 不支持
15373 普通话 语音近场识别模型 加强标点(逗号、句号、问号、感叹号) 支持
1737 英语 无标点 不支持
17372 英语 加强标点(逗号、句号、问号) 不支持
  • 原15361,15371支持通用场景语义解析pid已全面升级为15363,15373。语义理解协议升级,语义理解准确率提升,覆盖更多语义场景。旧有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年