本地语音唤醒(iOS)
一、概述
DUI Lite - Wakeup 提供单独的离线语音唤醒能力。通过不间断侦测语音,当出现唤醒词的语音时可执行相关事件的技术,具有功效低、唤醒率高的特点。
二、功能特性
2.1 内置录音机
DUI Lite Wakeup SDK有内置录音机,可完成识别过程中的音频采集任务。
2.2 设置唤醒词
允许设置多个唤醒词。
2.3 MIC阵列模组支持
针对智能硬件,多路音频采集+回声消除+声源定位+唤醒做了捆绑,目前阵列模组唤醒为定制方案,有需要请与客服联系。
三、SDK使用说明
在使用DUILite 离线Wakeup的SDK时,请先授权,否则禁止使用。授权操作详见文档授权说明
注:每次唤醒都需要先startWakeup,唤醒之后再stopWakeup。
3.1 参数与配置
需要由开发者在初始化时填写的配置项:
参数名 | 取值 | 说明 | 是否必须 | 默认值 |
---|---|---|---|---|
K_WAKE_RES_NAME | 字符串唤醒资源名 | 设置唤醒资源名 | 必须 | N/A |
K_WAKE_RES_PATH | 字符串唤醒资源路径 | 设置资源路径 | 必须 | N/A |
K_WAKE_CUSTOM | 布尔值 YES/NO | 设置是否使用第三方录音引擎 | 非必须 | NO |
3.2 使用Log测试服务
使用Log测试请先在程序入口处调用如下代码,打开Log开关:
Log开关设置
[DUILiteAuth setLogEnabled:YES];
3.3 初始化
使用以下方法来初始化SDK。
初始化
//设置音频策略
- (void)setAudioConfig{
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord
withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker error:nil];
[[AVAudioSession sharedInstance] setActive:YES error:nil];
}
//引擎初始化,设置相关参数
-(void)initWakeup{
NSMutableDictionary *authConfigDic = [[NSMutableDictionary alloc] init];
[authConfigDic setObject:@"xxxxxx" forKey:K_PRODUCT_ID];
[authConfigDic setObject:@"xxxxxxx" forKey:K_USER_ID];
[authConfigDic setObject:@"xxxxxxxxxx" forKey:K_API_KEYS];
[authConfigDic setObject:@"xxxxxxxxxx" forKey:K_PRODUCT_KEYS];
[authConfigDic setObject:@"xxxxxxxxxx" forKey:K_PRODUCT_SECRET];
NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
NSString* wakeupResPath = [[NSBundle mainBundle] pathForResource:@"wakeup_aifar_comm.bin" ofType:nil];
[dic setObject:[NSNumber numberWithBool:NO] forKey:K_WAKE_CUSTOM];
[dic setObject:@"wakeup_aifar_comm.bin" forKey:K_WAKE_RES_NAME];
[dic setObject:wakeupResPath forKey:K_WAKE_RES_PATH];
[DUILiteAuth setAuthConfig:self config:authConfigDic];
[[wakeupEngine shareInstance] initWakeup:self config:dic];
}
//实现回调
-(void)onWakeupResult:(NSString *)data{
NSLog(@"唤醒结果: %@", data);
}
-(void)onWakeupBufferReceived:(NSData *)buffer{
NSLog(@"录音数据: %@", buffer);
}
-(void)onWakeupReadyForSpeech{
NSLog(@"engine startDid ");
}
3.4 功能列表
3.4.1 打开唤醒引擎,可以说话,等待唤醒结果
唤醒启动接口
[[wakeupEngine shareInstance] startWakeup];
3.4.2 关闭唤醒引擎
唤醒关闭接口
[[wakeupEngine shareInstance] stopWakeup];
3.4.3 更新唤醒词
如果您期望为设备增加唤醒词,可以在需要的时候调用下面的接口。
参数说明:
1)words :唤醒词数组(拼音)
2)threshold :阈值, 默认0.24
//设置唤醒词
NSMutableArray *arrWords = [[NSMutableArray alloc] init];
NSMutableArray *arrValues = [[NSMutableArray alloc] init];
[arrWords addObject:@"ni hao xiao long"];
[arrWords addObject:@"ni hao xiao shan"];
[arrValues addObject:@"0.126"];
[arrValues addObject:@"0.127"];
[[wakeupEngine shareInstance] setWakeupWord:arrWords threshold:arrValues];
//获取唤醒词
NSMutableArray * array = [[wakeupEngine shareInstance] getWakeupWord];
//删除唤醒词
[[wakeupEngine shareInstance] cancelWakeupWord:arrWords];
3.4.4 第三方录音引擎接口
您如果有自己的录音机,可以通过以下方法将录音数据(data为NSData类型)传给SDK。
第三方录音机接口
[[wakeupEngine shareInstance] feedData:data];
3.4.5 释放引擎接口
释放引擎接口
[wakeupEngine dellocInstance];
3.5 错误码描述
error id | 错误描述 | 原因及解决办法 |
---|---|---|
070930 | wakeup path is nil | 检查参数K_WAKE_RES_PATH的值 |
070931 | wakeup result is error | 检查是否有音频是否错误,或联系客服 |
070932 | wakeup core is error | 请联系客服 |
070933 | releasing engine is failed | 请联系客服 |
070934 | stopping engine is failed | 请联系客服 |
070935 | starting engine is failed | 请联系客服 |
070936 | init engine is failed | 请联系客服 |
070937 | start recorder is failed | 重新启动引擎或联系客服 |