本地语音唤醒(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 重新启动引擎或联系客服