企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] ## 语音唤醒 语音唤醒集成流程如下: ![](https://box.kancloud.cn/a0114603388aa2646c97990e37e97604_434x446.png) 使用示例如下所示:(*注意,启动唤醒需要关注系统录音权限,目前iOS唤醒只支持应用级唤醒。*) ~~~ #import "iflyMSC/IFlyMSC.h" //获取唤醒单例对象 _iflyVoiceWakeuper = [IFlyVoiceWakeuper sharedInstance]; //设置唤醒协议委托 _iflyVoiceWakeuper.delegate = self; //设置唤醒参数 //生成唤醒资源路径,唤醒资源需要定制,与唤醒词一一对应。 NSString *wordPath = [[NSBundle mainBundle] pathForResource:@"ivwres/wakeresource" ofType:@"irf"]; NSString *ivwResourcePath = [[NSString alloc] initWithFormat:@"fo|%@",wordPath]; //设置唤醒资源,并启动唤醒引擎 [[IFlySpeechUtility getUtility] setParameter:[NSString stringWithFormat: @"engine_start=ivw,ivw_res_path=%@",ivwResourcePath] forKey:[IFlyResourceUtil ENGINE_START]]; //设置唤醒门限值 //门限设置要和资源中的唤醒词个数匹配,以;分割。 //例如:0:-20,0代表第一个唤醒词 -20,代表第一个唤醒词门限 //根据下载的SDK中的说明来设置。 //0:表示第一个唤醒词,-20表示唤醒词对应的门限值; //1:表示第二个唤醒词,-20表示唤醒词对应的门限值 [_iflyVoiceWakeuper setParameter:@"0:-20;1:-20;" forKey:@"ivw_threshold"]; //设置唤醒的服务类型,目前仅支持wakeup [_iflyVoiceWakeuper setParameter:@"wakeup" forKey:@"ivw_sst"]; //设置唤醒的工作模式 //keep_alive表示一次唤醒成功后是否继续录音等待唤醒。1:表示继续;0:表示唤醒终止 [_iflyVoiceWakeuper setParameter:@"1" forKey:@"keep_alive"]; //启动唤醒 int bRet = [self.iflyVoiceWakeuper startListening]; //唤醒实现delegate //录音开始 -(void) onBeginOfSpeech{} //录音结束 -(void) onEndOfSpeech{} //会话错误 -(void) onError:(IFlySpeechError *)error{} //音量变化回调 - (void) onVolumeChanged: (int)volume{} //唤醒结果回调 -(void) onResult:(NSMutableDictionary *)resultArray{} ~~~ ## 语音唤醒OneShot oneshot是唤醒的一种扩展方式,支持唤醒+识别,唤醒+听写,唤醒+语义的组合解决方案。 此处介绍唤醒+识别模式,可以适用于唤醒词数量有限,而命令词又无法常驻运行的场景。在游戏场景下,可采用声控的方式来操控游戏。例如:定义唤醒词为阿里巴巴,定义命令词序列:“打开城门”,“发起攻击”,这样就形成若干命令序列。用户可以说: - 阿里巴巴打开城门 - 阿里巴巴发起攻击 除了游戏外,用户可以很容易的将唤醒+识别的应用扩展到其他领域,比如家电,车载等比较适合语音的场所。 ### 详细demo 唤醒+识别的代码比较复杂,限于篇幅不在本文档描述,详细过程可以参考Demo中的OneshotViewController示例代码。 Demo的示例,用户可以说 讯飞语音/讯飞语点 + 张三/李四/张海洋 的组合。 ### 使用唤醒+识别步骤 ![](https://box.kancloud.cn/85f3e02218da898bfc414199554b4b85_213x350.png) ### 唤醒+识别回调 ~~~ //录音开始 - (void) onBeginOfSpeech{} //录音结束 - (void) onEndOfSpeech{} //音量回调 - (void) onVolumeChanged: (int)volume{} //服务结束回调 - (void) onError:(IFlySpeechError *) error{} //唤醒结果回调 - (void) onResult:(NSMutableDictionary *)resultArray {} //会话事件回调 - (void) onEvent:(int)eventType isLast:(BOOL)isLast arg1:(int)arg1 data:(NSMutableDictionary *)eventData(){} ~~~