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

语音识别iOS SDK

1. 文档说明

文档名称 语音识别集成文档
所属平台 iOS
提交日期 2025-12-30
概述 本文档是百度语音开放平台iOS SDK的用户指南,描述了短语音识别、离线自定义命令词识别、语音唤醒等相关接口的使用说明。SDK内部均为采用流式协议,即用户边说边处理。区别于Restapi需要上传整个录音文件。

2. 版本说明

名称 版本号
语音识别 3.0.13.0
系统支持 支持iOS 12.0及以上系统
架构支持 armv7、arm64
开发环境 工程内使用了LTO等优化选项,建议使用最新版本Xcode进行开发

3. SDK说明

文件名称 版本号 说明 MD5值 类型
libBDSpeechBaseKit.a 3.0.13.0 语音识别SDK (支持pcm、wav文件识别格式) 37e494d1117e519d3b7fff7a48d11dfb 静态库

Framework

Framework 描述
libc++.tbd 提供对C/C++特性支持
libz.1.2.5.tbd 提供gzip支持
libsqlite3.0.tbd 提供对本地数据库的支持
AudioToolbox 提供录音和播放支持
AVFoundation 提供录音和播放支持
CFNetwork 提供对网络访问的支持
CoreLocation 提供对获取设备地理位置的支持,以提高识别准确度
CoreTelephony 提供对移动网络类型判断的支持
SystemConfiguration 提供对网络状态检测的支持
GLKit 内置识别控件所需

4. 运行项目工程

4.1 获取鉴权信息

创建并获取APP_ID、API_KEY、SECRET_KEY等参数。并绑定你的移动应用的BundleId。官网平台地址https://cloud.baidu.com

4.2 在线识别鉴权参数配置说明

在线识别鉴权方式说明 开放平台使用API/SECRET KEY + APPID方式进行验证(历史版本)
(控制台申请的ak、sk 参考https://ai.baidu.com/ai-doc/SPEECH/4l9mh6qf9 完成项目创建后控制台可查询对应的ak、sk等信息)开放平台使用ACCESSTOKEN进行验证(新增)
https://ai.baidu.com/ai-doc/REFERENCE/Lkru0zoz4)开放平台使用IAMKEY进行验证(新增)(https://cloud.baidu.com/doc/AI_REFERENCE/s/Hm5us339w

ak、sk鉴权方式代码参考事例

//ak、sk鉴权
// 参数传递 ak、sk以及平台获取的appid
[[BDSpeechBaseKit sharedInstance] setASRLicenseWithAk:API_KEY AndSK:SECRET_KEY AndAppcode:APP_ID];

APIkey(IAMKEY)鉴权方式

 //iamkey鉴权
[[BDSpeechBaseKit sharedInstance] setASRLicenseWithIamKey:IAM_KEY Andsk:SECRET_KEY AndAppCode:APP_ID];

token鉴权方式参考:

    // 临时token鉴权方式 参考demo中sendPostRequest方法中使用事例
//    [[BDSpeechBaseKit sharedInstance] setASRLicenseWithAuthToken:token AndExpirationDate:result AndAk:API_KEY AndAppCode:APP_ID];

鉴权接口及参数说明

/**
 // ak、sk方式鉴权
 ak:控制台申请的对应鉴权apikey
 sk:控制台申请的对应鉴权secretkey
 code:控制台申请的appid
 */
- (void)setASRLicenseWithAk:(NSString *)ak AndSK:(NSString *)sk AndAppcode:(NSString *)code;

/**
 iamkey方式初始化鉴权
 iamkey:申请的iamkey
 code:申请的appid
 */
- (void)setASRLicenseWithIamKey:(NSString *)iamkey Andsk:(NSString *)ak AndAppCode:(NSString *)code;

// 获取鉴权asr鉴权sdk版本号
- (NSString *)getASRLibVersion;

/**
 token鉴权方式
 token:申请的token
 code:申请的appid
 expirationDate:token过期时间戳(毫秒)
 */
- (void)setASRLicenseWithAuthToken:(NSString *)token AndExpirationDate:(long long)expirationDate AndAk:(NSString *)ak AndAppCode:(NSString *)code;

/**
 iamkey方式初始化鉴权
 iamkey:申请的iamkey
 code:申请的appid
 expirationDate:iamkey过期时间(毫秒)
 */
- (void)setASRLicenseWithIAMKey:(NSString *)iamkey AndExpirationDate:(long long)expirationDate AndAk:(NSString *)ak AndAppCode:(NSString *)code;

demo完整示例参考:

- (void)viewDidLoad {
    [super viewDidLoad];
    // 语音识别鉴权库manager管理类初始化
    self.asrEventManager = [[BDSpeechBaseKit sharedInstance] getBDSEventManager];
    // 设置唤醒类
    self.wakeupEventManager = [[BDSpeechBaseKit sharedInstance] getWakeupEventManager];
    // pid初始化 默认1537
    [self.asrEventManager setParameter:@"1537" forKey:BDS_ASR_PRODUCT_ID];
    // 版本号
    NSLog(@"Current SDK version: %@", [[BDSpeechBaseKit sharedInstance] getASRLibVersion]);
    // 配置鉴权库获取token、iamkey协议 用于实现 gettoken iamkey 方法
    [AuthManager sharedInstance].temporaryTokenAndKeyDelegate = self;
    // 鉴权sdk层错误日志开启 默认NO不开启
//    [[BDSpeechBaseKit sharedInstance] setAuthLogStatus:YES];
    //设置DEBUG_LOG的级别 默认0不打开日志 设置6全部日志 其他方式不常用特定场景考虑
    [self.asrEventManager setParameter:@(EVRDebugLogLevelTrace) forKey:BDS_ASR_DEBUG_LOG_LEVEL];
    //ak、sk鉴权
    [[BDSpeechBaseKit sharedInstance] setASRLicenseWithAk:API_KEY AndSK:SECRET_KEY AndAppcode:APP_ID];
    //iamkey鉴权
//  [[BDSpeechBaseKit sharedInstance] setASRLicenseWithIamKey:IAM_KEY Andsk:SECRET_KEY AndAppCode:APP_ID];
    // 临时token鉴权方式 参考sendPostRequest方法中使用事例
//    [[BDSpeechBaseKit sharedInstance] setASRLicenseWithAuthToken:token AndExpirationDate:result AndAk:API_KEY AndAppCode:APP_ID];
    self.continueToVR = NO;
    [[BDVRSettings getInstance] configBDVRClient];
    //设置端点检测
    [self configDNNMFE];
}

提供用户自定义获取鉴权信息的能力

描述:为了满足 「鉴权信息保存在server端,app通过请求server端获取access token」的需求,语音SDK需要提供 鉴权信息回调点,并由用户最终实现 回调接口。

步骤一:
// 配置鉴权库获取token、iamkey协议 用于实现 gettoken iamkey 方法
[AuthManager sharedInstance].temporaryTokenAndKeyDelegate = self;

// 分别实现协议传入token、iamkey
/**
 客户实现get token 协议方法
 */
- (void)getToken {
    ......
    //客户业务侧处理获取token的逻辑
    // demo示例发送请求
     [self sendPostRequest];
}

/**
 客户实现get iamkey 协议方法
 */
- (void)getIAMKey {
    ......
    //客户业务侧处理获取iamkey的逻辑
    // demo示例发送请求
     [self sendPostRequest];
}

步骤二:
//获取网络权限判断逻辑
    ......
    ......
    ......
// 检查当前网络状态并尝试网络请求         
[self checkNetworkStatusAndMakeRequest];       
          
          
  // 检查网络权限是否生效
- (void)checkNetworkStatusAndMakeRequest {
    // 生效 即可做post请求获取token、有效期
    ......
    ......
    ......
    // 调用本地获取token的请求逻辑
     [self sendPostRequest];
}

  // post请求 仅供参考
-(void)sendPostRequest {
 // 请求逻辑具体参考demo代码
  ......
  ......
  请求拿到token后调用API接口完成token鉴权
  // token 鉴权   成功:正常完成合成主流程鉴权通过。 失败:触发上述步骤一中的协议回调 重新获取有效token(此处以token为例) 
  [[BDSpeechBaseKit sharedInstance] setASRLicenseWithAuthToken:@"请求获取的token" AndExpirationDate:@"请求获取的token有效期" AndAk:@"平台获取的apikey" AndAppCode:@"平台获取的appid"];
}

逻辑整理 1.遵循鉴权sdk内置协议 2.完成初始化请求token获取[self sendPostRequest]; 并在请求结果中设置对应的鉴权方式如 [[BDSpeechBaseKit sharedInstance] setASRLicenseWithAuthToken:@"请求获取的token" AndExpirationDate:@"请求获取的token有效期" AndAk:@"平台获取的apikey" AndAppCode:@"平台获取的appid"];3.成功后正常继续下一步,异常或请求token失败、token有效期到期等 SDK代理会监听到 触发getToken、getIamkey代理 进行重新处理逻辑 demo示例中做了重新获取token的操作 仅供参考 
注:使用该方式为了满足 「鉴权信息保存在server端,app通过请求server端获取access token」的需求,语音SDK需要提供 鉴权信息回调点,并由用户最终实现 回调接口。

4.3 下载语音识别SDK

​ 在SDK下载页面下载 语音识别IOS SDK 文件,链接:https://ai.baidu.com/sdk

image-3.png

4.4 填写鉴权信息

全局搜索 “#error” 填入 AppID、API Key、Secret Key IAM_KEY鉴权信息测试,请按照以下步骤全部修改(参数信息参考4.2鉴权参数设置):

image-4.png

4.5 测试语音识别功能

按照上述文档修改完成后,安装app打开后可进行在线语音识别:

327082ee4f286b813f0ac61dfde0fa2a.png

简单的 语音识别IOS SDK 测试完成了,其他各子功能可以按照详细的技术文档进行集成。

5. 集成步骤

5.1添加静态库及资源文件、头文件以及对应的Framework

image-5.png

添加头文件

识别相关

如果只需要使用识别功能,只需要引入如下头文件:

#import "BDSEventManager.h"
#import "BDSASRDefines.h"
#import "BDSASRParameters.h"
#import "BDSpeechBaseKit.h"
#import "AuthManager.h"
唤醒相关

如果需要使用离线唤醒功能,需要引入如下头文件:

#import "BDSWakeupDefines.h"
#import "BDSWakeupParameters.h"
内置识别控件

如果需要使用内置识别控件,需要引入如下头文件:

#import "BDTheme.h"
#import "BDRecognizerViewParamsObject.h"
#import "BDRecognizerViewController.h"
#import "BDRecognizerViewDelegate.h"
网络权限相关
#import "Reachability.h"

添加静态库

SDK提供的是静态库,开发者只需要将库文件拖入工程目录即可。对静态库有以下几点说明:

1. 静态库采用lipo命令将armv7,arm64的静态库合并成的一个通用的库文件,避免开发者在编译不同target时频繁替换的问题;
2. 模拟器版本只支持在线识别,不支持离线识别及唤醒功能;

添加所需资源

提示音文件及识别控件所需主题文件

将开发包中BDSClientResource/ASR/BDSClientResources目录以“create folder references”方式添加到工程的资源Group中,注意使用"create groups"方式添加不能生效

离线识别及唤醒所需资源文件

将开发包中BDSClientResource/ASR/BDSClientEASRResources目录以"create groups"方式添加到工程目录下即可,资源文件说明如下:

文件名 说明
bds_easr_gramm.dat 离线识别引擎语法模式所需语法文件,在开放平台编辑自定义语法文件
bds_easr_basic_model.dat 基础资源文件,用于modelVAD、唤醒、离线语音识别语法模式
bds_easr_wakeup_words.dat 唤醒引擎所需唤醒词文件,在开放平台编辑自定义唤醒词
bds_easr_mfe_dnn.dat 基础资源文件,用于DNNMFE、唤醒、离线语音识别语法模式
bds_easr_mfe_cmvn.dat MFE CMVN文件,用于DNNMFE
bds_easr_dnn_wakeup_model.dat 用于DNNWakeup的模型文件

6. 相关授权文件

请将百度云控制台创建应用时获取的语音(APPID)、API/SECRET KEY 并填写包名。

在线识别与唤醒都需要进行相关验证后方可使用:

引擎类型 验证方法
在线识别 开放平台使用API/SECRET KEY + APPID进行验证(包含新增token鉴权、iamkey鉴权)
离线识别 使用APPID+包名首次联网自动下载授权文件进行验证
唤醒引擎 与离线识别验证方法一致

7. 语音相关接口调用流程

7.1语音识别

语音识别包含数据上传接口和离在线识别接口,接口概述如下:

1. 创建相关接口对象 (createEventManagerWithName:)
2. 设置代理对象 (setDelegate:)
3. 配置参数 (setParameter:forKey:)
4. 发送预定义指令 (sendCommand:)
5. 参数列表及相关预定义值可参考附录,或相关parameters头文件、defines头文件
  1. 在线语音识别支持识别任意词,离线语音识别仅支持命令词识别(语法模式)。
  2. 单次短语音识别最长限制60秒。

7.1.1在线识别

// 创建语音识别对象
self.asrEventManager = [[BDSpeechBaseKit sharedInstance] getBDSEventManager];
// pid初始化 默认1537
[self.asrEventManager setParameter:@"1537" forKey:BDS_ASR_PRODUCT_ID];
// 设置语音识别代理
[self.asrEventManager setDelegate:self];
// 配置鉴权库获取token、iamkey协议 用于实现 gettoken iamkey 方法
[AuthManager sharedInstance].temporaryTokenAndKeyDelegate = self;
// 参数配置:ak、sk在线鉴权认证
[[BDSpeechBaseKit sharedInstance] setASRLicenseWithAk:API_KEY AndSK:SECRET_KEY AndAppcode:APP_ID];
// 发送指令:启动识别
[self.asrEventManager sendCommand:BDS_ASR_CMD_START];

识别功能代理

@protocol BDSClientASRDelegate<NSObject>
- (void)VoiceRecognitionClientWorkStatus:(int)workStatus obj:(id)aObj;
@end

语音识别状态、录音数据等回调均在此代理中发生,具体事件请参考Demo工程中对不同workStatus的处理流程。

7.1.2离在线并行识别

// 创建语音识别对象
self.asrEventManager = [BDSEventManager createEventManagerWithName:BDS_ASR_NAME];
// 设置语音识别代理
[self.asrEventManager setDelegate:self];
// 参数配置:在线身份验证
[[BDSpeechBaseKit sharedInstance] setASRLicenseWithAk:API_KEY AndSK:SECRET_KEY AndAppcode:APP_ID];
// 参数设置:识别策略为离在线并行
[self.asrEventManager setParameter:@(EVR_STRATEGY_BOTH) forKey:BDS_ASR_STRATEGY];
// 参数设置:离线识别引擎类型
[self.asrEventManager setParameter:@(EVR_OFFLINE_ENGINE_GRAMMER) forKey:BDS_ASR_OFFLINE_ENGINE_TYPE];
// 参数配置:命令词引擎语法文件路径。请从控制台的左侧功能栏进入“离线词&语义设置”模块,根据页面上的引导自行定义词条和语法,并生成bsg文件。下载语法文件后,替换BDS_ASR_OFFLINE_ENGINE_GRAMMER_FILE_PATH参数
[self.asrEventManager setParameter:@"命令词引擎语法文件路径" forKey:BDS_ASR_OFFLINE_ENGINE_GRAMMER_FILE_PATH];
// 参数配置:命令词引擎语言模型文件路径
[self.asrEventManager setParameter:@"命令词引擎语言模型文件路径" forKey:BDS_ASR_OFFLINE_ENGINE_DAT_FILE_PATH];
// 发送指令:加载离线引擎
[self.asrEventManager sendCommand:BDS_ASR_CMD_LOAD_ENGINE];
// 发送指令:启动识别
[self.asrEventManager sendCommand:BDS_ASR_CMD_START];
关于离线识别

注意
在线识别效果远优于离线识别,不推荐使用离线识别。
首次使用离线,SDK将会后台下载离线授权文件,成功后,授权文件有效期(三年)内无需联网。有效期即将结束后SDK将自动多次尝试联网更新证书)。

使用离线识别必须正确配置BDS_ASR_OFFLINE_APP_CODE,并设置BDS_ASR_STRATEGY为离线在线并行。

离线识别 可识别自定义语法规则下的词,如“打电话给王五”,“打开微信”等。

请在语音控制台的左侧功能栏中,进入“离线词&语义设置”模块,根据页面上的引导自行定义词条和语法,并生成bsg文件。下载语法文件后,设置BDS_ASR_OFFLINE_ENGINE_GRAMMER_FILE_PATH参数

具体示例如下:

NSString* gramm_filepath = [[NSBundle mainBundle] pathForResource:@"bds_easr_gramm" ofType:@"dat"];;
NSString* lm_filepath = [[NSBundle mainBundle] pathForResource:@"bds_easr_basic_model" ofType:@"dat"];;
NSString* wakeup_words_filepath = [[NSBundle mainBundle] pathForResource:@"bds_easr_wakeup_words" ofType:@"dat"];;
[self.asrEventManager setDelegate:self];
[self.asrEventManager setParameter:APP_ID forKey:BDS_ASR_OFFLINE_APP_CODE];
[self.asrEventManager setParameter:lm_filepath forKey:BDS_ASR_OFFLINE_ENGINE_DAT_FILE_PATH];
// 请在 (官网)[http://speech.baidu.com/asr] 参考模板定义语法,下载语法文件后,替换BDS_ASR_OFFLINE_ENGINE_GRAMMER_FILE_PATH参数
[self.asrEventManager setParameter:gramm_filepath forKey:BDS_ASR_OFFLINE_ENGINE_GRAMMER_FILE_PATH];
[self.asrEventManager setParameter:wakeup_words_filepath forKey:BDS_ASR_OFFLINE_ENGINE_WAKEUP_WORDS_FILE_PATH];

7.1.3长语音识别

长语音识别对语音时长无限制,其本质是在本地进行VAD之后,由服务端逐句识别。

[self.asrEventManager setParameter:@(NO) forKey:BDS_ASR_NEED_CACHE_AUDIO];
[self.asrEventManager setParameter:@"" forKey:BDS_ASR_OFFLINE_ENGINE_TRIGGERED_WAKEUP_WORD];
[self.asrEventManager setParameter:@(YES) forKey:BDS_ASR_ENABLE_LONG_SPEECH];
// 长语音请务必开启本地VAD
[self.asrEventManager setParameter:@(YES) forKey:BDS_ASR_ENABLE_LOCAL_VAD];
  1. 使用长语音必须开启本地VAD: BDS_ASR_ENABLE_LOCAL_VAD
  2. 使用长语音必须关闭提示音(Known issue)

7.1.4VAD

端点检测,即自动检测音频输入的起始点和结束点。SDK默认开启VAD,检测到静音后自动停止识别。 如果需要自行控制识别结束需关闭VAD,请同时关闭服务端VAD与端上VAD:

// 关闭服务端VAD
[self.asrEventManager setParameter:@(NO) forKey:BDS_ASR_ENABLE_EARLY_RETURN];
// 关闭本地VAD
[self.asrEventManager setParameter:@(NO) forKey:BDS_ASR_ENABLE_LOCAL_VAD];

目前SDK支持两种本地端点检测方式。说明如下:

识别策略 说明
ModelVAD 检测更加精准,抗噪能力强,响应速度较慢
DNNMFE 提供基础检测功能,性能高,响应速度快

使用ModelVAD、DNN需通过参数配置开启该功能,并配置相应资源文件(基础资源文件)

7.1.4.1ModelVAD
//获取VAD模型的路径
NSString *modelVAD_filepath = [[NSBundle mainBundle] pathForResource:@"bds_easr_basic_model" ofType:@"dat"];
//设置modelVAD的文件路径
[self.asrEventManager setParameter:modelVAD_filepath forKey:BDS_ASR_MODEL_VAD_DAT_FILE];
//设置ModelVAD可用
[self.asrEventManager setParameter:@(YES) forKey:BDS_ASR_ENABLE_MODEL_VAD];
7.1.4.2DNNMFE
NSString *mfe_dnn_filepath = [[NSBundle mainBundle] pathForResource:@"bds_easr_mfe_dnn" ofType:@"dat"];
//设置MFE模型文件
[self.asrEventManager setParameter:mfe_dnn_filepath forKey:BDS_ASR_MFE_DNN_DAT_FILE];
NSString *cmvn_dnn_filepath = [[NSBundle mainBundle] pathForResource:@"bds_easr_mfe_cmvn" ofType:@"dat"];
//设置MFE CMVN文件路径
[self.asrEventManager setParameter:cmvn_dnn_filepath forKey:BDS_ASR_MFE_CMVN_DAT_FILE];

DNNMFE 支持设置静音时长(需要同时关闭服务端VAD与端上VAD)。设置以下两个参数,单位为帧数,每帧10ms。如需设置为 5s:

[self.asrEventManager setParameter:@(501.f) forKey:BDS_ASR_MFE_MAX_SPEECH_PAUSE];
[self.asrEventManager setParameter:@(500.f) forKey:BDS_ASR_MFE_MAX_WAIT_DURATION];

必须为浮点类型。

7.2语音唤醒

语音唤醒,需要配置所需语言模型文件(基础资源文件)及官网导出的自定义唤醒词文件,配置后加载引擎,即可进行开始唤醒。需要注意的是,唤醒引擎开启后会保持录音机为启动状态,用户说出正确的唤醒词后会触发唤醒,通过相关回调反馈给应用程序。

语音唤醒为离线功能,需配置离线授权信息(APP_ID),加载唤醒所需语言模型文件,接口与语音识别接口相同。

基于多种因素考虑,在App进入后台后,唤醒将会被打断。

7.2.1代码示例

// 创建语音识别对象
self.wakeupEventManager = [BDSEventManager createEventManagerWithName:BDS_WAKEUP_NAME];
// 设置语音唤醒代理
[self.wakeupEventManager setDelegate:self];
// 参数配置:离线授权APPID
[self.wakeupEventManager setParameter:APP_ID forKey:BDS_WAKEUP_APP_CODE];
// 参数配置:唤醒语言模型文件路径, 默认文件名为 bds_easr_basic_model.dat
[self.wakeupEventManager setParameter:@"唤醒语言模型文件路径" forKey:BDS_WAKEUP_DAT_FILE_PATH];
// 发送指令:加载语音唤醒引擎
[self.wakeupEventManager sendCommand:BDS_WP_CMD_LOAD_ENGINE];
//设置唤醒词文件路径
// 默认的唤醒词文件为"bds_easr_wakeup_words.dat",包含的唤醒词为"百度以下"
// 如需自定义唤醒词,请在 http://ai.baidu.com/tech/speech/wake 中评估并下载唤醒词文件,替换此参数
 [self.wakeupEventManager setParameter:@"唤醒词文件路径”forKey:BDS_WAKEUP_WORDS_FILE_PATH]
// 发送指令:启动唤醒
[self.wakeupEventManager sendCommand:BDS_WP_CMD_START];

7.2.2唤醒功能回调接口

@protocol BDSClientWakeupDelegate<NSObject>
- (void)WakeupClientWorkStatus:(int)workStatus obj:(id)aObj;
@end

7.2.3唤醒辅助识别

使用唤醒的一种需求场景是唤醒后立刻识别,以唤醒词为百度以下举例,用户可能的输入为百度以下,北京天气怎么样?如果开发者需要对该种场景进行支持,请按如下操作:

  1. 正确配置唤醒引擎,语言模型文件及唤醒词文件,并加载引擎;
  2. 开启唤醒,接收用户语音输入;
  3. 在唤醒的唤醒词触发回调中,配置BDS_ASR_NEED_CACHE_AUDIO为YES到识别引擎,正常识别请将该值设为NO;
  4. 调用识别引擎开启识别过程;
// 如需要唤醒后立刻进行识别,为保证不丢音,启动语音识别前请添加如下配置,获取录音缓存:
[self.asrEventManager setParameter:@(YES) forKey:BDS_ASR_NEED_CACHE_AUDIO];

8. 语音识别

8.1预定义命令

语音识别目前支持的命令如下:

命令 功能描述
BDS_ASR_CMD_START 启动识别
BDS_ASR_CMD_STOP 结束语音输入,等待识别完成
BDS_ASR_CMD_CANCEL 取消本次识别
BDS_ASR_CMD_LOAD_ENGINE 加载离线引擎,如使用离线识别,在启动识别前需调用此命令
BDS_ASR_CMD_UNLOAD_ENGINE 卸载离线引擎,如改变离线配置参数,需重新加载离线引擎

8.2参数说明

通过配置不同的参数,语音识别提供丰富的功能,说明如下:

在线引擎身份验证

参数名称 说明
BDS_ASR_API_SECRET_KEYS 开放平台设置API_KEY and SECRET_KEY
BDS_ASR_IAM_APIKEY 开放平台设置IAMKEY
BDS_ASR_ACCESS_TOKEN 开放平台设置TOKEN
BDS_ASR_PRODUCT_ID 内部产品设置产品ID

离线引擎身份验证

参数名称 说明
BDS_ASR_OFFLINE_LICENSE_FILE_PATH 离线授权文件路径
BDS_ASR_OFFLINE_APP_CODE 离线授权所需APPCODE(APPID), 如使用该方式进行正式授权,请移除临时授权文件

识别器参数配置

参数名称 说明
BDS_ASR_SAMPLE_RATE 设置录音采样率,自动模式根据当前网络情况自行调整
BDS_ASR_STRATEGY 语音识别策略
BDS_ASR_LANGUAGE 设置识别语言
BDS_ASR_ENABLE_NLU 开启语义解析,将返回包含语义的json串
BDS_ASR_DISABLE_PUNCTUATION 关闭输出标点
BDS_ASR_PUNCTUATION_EXT_MOD 扩展标点模式,使用请确保BDS_ASR_DISABLE_PUNCTUATION参数为NO
BDS_ASR_ENABLE_LOCAL_VAD 是否需要对录音数据进行端点检测,如果关闭,请同时关闭服务端提前返回
BDS_ASR_ENABLE_EARLY_RETURN 服务端开启提前返回,即允许服务端在未收到客户端发送的结束标志前提前结束识别过程
BDS_ASR_ENABLE_MODEL_VAD 是否使用ModelVAD,打开需配置资源文件参数
BDS_ASR_MODEL_VAD_DAT_FILE ModelVAD所需资源文件路径
BDS_ASR_VAD_ENABLE_LONG_PRESS 设置VAD模式为长按(特殊情况设置)
BDS_ASR_MFE_DNN_DAT_FILE 设置MFE模型文件
BDS_ASR_MFE_CMVN_DAT_FILE 设置MFE CMVN文件路径
BDS_ASR_MFE_MAX_WAIT_DURATION 设置DNNMFE最大等待语音时间
BDS_ASR_MFE_MAX_SPEECH_PAUSE 设置DNNMFE切分门限
BDS_ASR_ENABLE_LONG_SPEECH 是否启用长语音识别

音频相关

参数名称 说明
BDS_ASR_AUDIO_FILE_PATH 设置音频文件路径(数据源)支持wav、pcm格式
BDS_ASR_AUDIO_FILE_RATE 设置音频文件采样率(必须与音频文件本身采样率匹配)支持8k、16k设置
BDS_ASR_AUDIO_INPUT_STREAM 设置音频输入流(数据源)
BDS_ASR_PLAY_TONE 识别提示音设置,需添加相应声音文件,可替换
BDS_ASR_DISABLE_AUDIO_OPERATION 屏蔽SDK内部设置AudioSession的Active状态

日志级别

参数名称 说明
BDS_ASR_DEBUG_LOG_LEVEL 指定调试日志级别

离线识别相关

参数名称 说明
BDS_ASR_OFFLINE_ENGINE_TYPE 离线识别引擎类型
BDS_ASR_OFFLINE_ENGINE_DAT_FILE_PATH 离线识别资源文件路径
BDS_ASR_OFFLINE_ENGINE_GRAMMER_FILE_PATH 离线识别语法文件路径
BDS_ASR_OFFLINE_ENGINE_GRAMMER_SLOT 语法模式离线语法槽,使用该参数更新离线语法文件

唤醒后立刻识别相关

参数名称 说明
BDS_ASR_OFFLINE_ENGINE_WAKEUP_WORDS_FILE_PATH 唤醒词文件路径,使用了唤醒并使用离线语法识别的情况下需要设置,其他情况请忽略该参数
BDS_ASR_OFFLINE_ENGINE_TRIGGERED_WAKEUP_WORD 当前触发唤醒词,唤醒后立即调用识别的情况下配置,其他情况请忽略该参数
BDS_ASR_NEED_CACHE_AUDIO 唤醒后立刻进行识别需开启该参数,其他情况请忽略该参数

服务端配置相关

参数名称 说明
BDS_ASR_SERVER_URL 设置服务器地址
BDS_ASR_BROWSER_USER_AGENT 设置浏览器标识(Http request header),资源返回时会根据UA适配

识别状态

语音识别回调状态如下:

识别状态 返回值说明 功能描述
EVoiceRecognitionClientWorkStatusStartWorkIng nil 识别工作开始,开始采集及处理数据
EVoiceRecognitionClientWorkStatusStart nil 检测到用户开始说话
EVoiceRecognitionClientWorkStatusEnd nil 本地声音采集结束结束,等待识别结果返回并结束录音
EVoiceRecognitionClientWorkStatusNewRecordData NSData-原始音频数据 录音数据回调
EVoiceRecognitionClientWorkStatusFlushData NSDictionary-中间结果 连续上屏
EVoiceRecognitionClientWorkStatusFinish NSDictionary-最终识别结果 语音识别功能完成,服务器返回正确结果
EVoiceRecognitionClientWorkStatusMeterLevel NSNumber:int-当前音量 当前音量回调
EVoiceRecognitionClientWorkStatusCancel nil 用户取消
EVoiceRecognitionClientWorkStatusError NSError-错误信息 发生错误
EVoiceRecognitionClientWorkStatusLoaded nil 离线引擎加载完成
EVoiceRecognitionClientWorkStatusUnLoaded nil 离线引擎卸载完成
EVoiceRecognitionClientWorkStatusChunkThirdData NSData CHUNK: 识别结果中的第三方数据
EVoiceRecognitionClientWorkStatusChunkNlu NSData CHUNK: 识别结果中的语义结果
EVoiceRecognitionClientWorkStatusChunkEnd NSString CHUNK: 识别过程结束
EVoiceRecognitionClientWorkStatusFeedback NSString Feedback: 识别过程反馈的打点数据
EVoiceRecognitionClientWorkStatusRecorderEnd nil 录音机关闭,页面跳转需检测此时间,规避状态条 (iOS)
EVoiceRecognitionClientWorkStatusLongSpeechEnd nil 长语音结束状态

9.语音唤醒

9.1预定义命令

语音唤醒目前支持的命令如下:

命令 功能描述
BDS_WP_CMD_START 启动唤醒
BDS_WP_CMD_STOP 关闭唤醒,释放内存需调用卸载命令
BDS_WP_CMD_LOAD_ENGINE 加载唤醒引擎
BDS_WP_CMD_UNLOAD_ENGINE 卸载唤醒引擎,如改变了引擎参数,请重新加载

9.2参数说明

为使唤醒引擎正常工作,开发者需了解以下参数:

基本配置

参数名称 说明
BDS_WAKEUP_WORDS_FILE_PATH 唤醒词文件路径,从开放平台获取该文件
BDS_WAKEUP_DAT_FILE_PATH 唤醒引擎模型文件路径
BDS_WAKEUP_APP_CODE 离线正式授权所需APPCODE,即APPID
BDS_WAKEUP_LICENSE_FILE_PATH 离线授权文件路径,正式授权需移除该文件
BDS_WAKEUP_WORK_QUEUE 指定SDK工作队列

音频相关

音频相关的参数与识别引擎共享,如同时使用,只需配置一次

参数名称 说明
BDS_WAKEUP_AUDIO_FILE_PATH 设置音频文件路径(数据源)
BDS_WAKEUP_AUDIO_INPUT_STREAM 设置音频输入流(数据源)
BDS_WAKEUP_DISABLE_AUDIO_OPERATION 屏蔽SDK内部设置AudioSession的Active状态

9.3唤醒状态

语音唤醒回调状态如下:

唤醒状态 返回值说明 功能描述
EWakeupEngineWorkStatusStarted nil 引擎开始工作
EWakeupEngineWorkStatusStopped nil 引擎关闭完成
EWakeupEngineWorkStatusLoaded nil 唤醒引擎加载完成
EWakeupEngineWorkStatusUnLoaded nil 唤醒引擎卸载完成
EWakeupEngineWorkStatusTriggered NSString-唤醒词 命中唤醒词
EWakeupEngineWorkStatusError NSError-错误信息 引擎发生错误

10.服务端错误码

请参照API 错误码汇总

11. 权限

名称 用途
Privacy - Microphone Usage Description 获取麦克风权限

12. 只使用在线识别能力

可以参照7.1.1在线识别代码,删除离线资源文件

上一篇
语音识别Android SDK
下一篇
语音识别 HarmonyOS SDK