[TOC]

语音唤醒

语音唤醒集成流程如下:

使用示例如下所示:(注意,启动唤醒需要关注系统录音权限,目前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的示例,用户可以说 讯飞语音/讯飞语点 + 张三/李四/张海洋 的组合。

使用唤醒+识别步骤

唤醒+识别回调

//录音开始
- (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(){}
Copyright © iflytek.com 2018 all right reserved,powered by Gitbook该文件修订时间: 2018-04-24 10:01:27

results matching ""

    No results matching ""