[TOC]

语法识别是基于语法文件的一种命令词识别技术。在线语法识别基于abnf语法文件;离线语法基于bnf语法文件。语法文件可以参照Demo的工程所示。

在线识别(该服务已下线,新用户无法使用)

应用级命令词识别

使用浏览器访问讯飞开放平台。在打开的页面中,点击“产品服务”、“在线命令词识别” 。如下图所示:

在随后打开的页面中,点击“使用服务”,选择应用,点击“确定”,即可打开应用级在线语法文件上传页面,如下图所示。上传所需的语法文件,待页面提示“语法文件已生效”,则应用级在线语法文件启用成功。

使用示例如下所示:

//获取识别对象单例
_iFlySpeechRecognizer = [IFlySpeechRecognizer sharedInstance];
//设置协议委托对象
_iFlySpeechRecognizer.delegate = self;
//设置在线识别参数
//设置引擎类型,cloud或者local
[_iflySpeechRecognizer setParameter:@"cloud" forKey:[IFlySpeechConstant ENGINE_TYPE]];
//设置服务类型为asr识别
[_iflySpeechRecognizer setParameter:@"asr" forKey:[IFlySpeechConstant IFLY_DOMAIN]];

//启动识别
[_iFlySpeechRecognizer startListening];

//识别IFlySpeechRecognizerDelegate协议
//本地和在线的识别返回代理是一致
//在切换在线和离线服务时还需要注意参数的重置,具体可以参照demo所示
//结果返回代理
- (void) onResults:(NSArray *) results isLast:(BOOL) isLast{}
//会话结束回调
- (void) onCompleted:(IFlySpeechError*) error{}
//录音音量回调
- (void) onVolumeChanged: (int)volume{}
//录音开始回调
- (void) onBeginOfSpeech{}
//录音结束回调
- (void) onEndOfSpeech{}
//会话取消回调
- (void) onCancel{}

终端级命令词识别

终端级在线命令词识别需要先在终端上构建语法文件,上传语法文件之后获得相应的Grammer ID,以后每次使用识别功能前,设置该Grammar ID参数即可。其示例代码如下:

//获取识别对象单例
_iFlySpeechRecognizer = [IFlySpeechRecognizer sharedInstance];
//设置协议委托对象
_iFlySpeechRecognizer.delegate = self;
//设置在线识别参数
//开启候选结果
[_iflySpeechRecognizer setParameter:@"1" forKey:@"asr_wbest"];
//设置引擎类型,cloud或者local
[_iflySpeechRecognizer setParameter:@"cloud" forKey:[IFlySpeechConstant ENGINE_TYPE]];
//设置字符编码为utf-8
[_iflySpeechRecognizer setParameter:@"utf-8" forKey:[IFlySpeechConstant TEXT_ENCODING]];
//语法类型,本地是bnf,在线识别是abnf
[_iflySpeechRecognizer setParameter:@"abnf" forKey:[IFlyResourceUtil GRAMMARTYPE]];
//设置服务类型为asr识别
[_iflySpeechRecognizer setParameter:@"asr" forKey:[IFlySpeechConstant IFLY_DOMAIN]];

//编译语法文件,注意grammerType参数的区别
//读取本地abnf语法文件内容
NSString* grammerContent = [self readFile:_abnfFilePath];
//调用构建语法接口
[_iflySpeechRecognizer buildGrammarCompletionHandler:^(NSString * grammerID, IFlySpeechError *error){
      //设置grammerID
      [_iFlySpeechRecognizer setParameter:grammerID  forKey:[IFlySpeechConstant CLOUD_GRAMMAR]];
   }grammarType:@”abnf” grammarContent:grammarContent];

//启动识别
[_iFlySpeechRecognizer startListening];

//识别IFlySpeechRecognizerDelegate协议
//本地和在线的识别返回代理是一致
//在切换在线和离线服务时还需要注意参数的重置,具体可以参照demo所示
//结果返回代理
- (void) onResults:(NSArray *) results isLast:(BOOL) isLast{}
//会话结束回调
- (void) onCompleted:(IFlySpeechError*) error{}
//录音音量回调
- (void) onVolumeChanged: (int)volume{}
//录音开始回调
- (void) onBeginOfSpeech{}
//录音结束回调
- (void) onEndOfSpeech{}
//会话取消回调
- (void) onCancel{}

离线命令词识别

引擎大小

状态 大小
编译前静态库 24.5 MB
编译后(ipa) 8 MB

资源大小: 5.0MB

空间大小:(不同的编译器编译后大小会有不同,请以实际为准) ipa文件大小 = 引擎编译后(8MB) +资源(5MB)= 13MB。

//设置本地识别参数,其他参数与在线方式一致
//设置引擎类型,cloud或者local
[_iflySpeechRecognizer setParameter:@ "local" forKey:[IFlySpeechConstant ENGINE_TYPE]];
//语法类型,本地是bnf,在线识别是abnf
[_iflySpeechRecognizer setParameter:@ "bnf" forKey:[IFlyResourceUtil GRAMMARTYPE]];
//设置引擎资源文件路径,如demo中的resource/aitalk中的common.jet
NSString *aitalkResourcePath = [[NSString alloc] initWithFormat:@"fo|%@/common.jet",appPath];
[_iflySpeechRecognizer setParameter:aitalkResourcePath forKey:[IFlyResourceUtil ASR_RES_PATH]];

//启动asr识别引擎
[[IFlySpeechUtility getUtility] setParameter:@"asr" forKey:[IFlyResourceUtil ENGINE_START]];

//编译语法文件(注意grammarType参数的区别)
//读取本地bnf语法文件内容
NSString* grammarContent = [self readFile:_bnfFilePath];
//调用语法编译接口
[_iflySpeechRecognizer buildGrammarCompletionHandler:^(NSString *
grammerID, IFlySpeechError *error){
        //设置grammerID
        [_iFlySpeechRecognizer setParameter:grammerID  forKey:[IFlySpeechConstant LOCAL_GRAMMAR]];
   }grammarType:@”bnf” grammarContent:grammarContent];
//启动识别
[_iFlySpeechRecognizer startListening];

//识别IFlySpeechRecognizerDelegate协议
//本地和在线的识别返回代理是一致
//在切换在线和离线服务时还需要注意参数的重置,具体可以参照demo所示
//结果返回代理
- (void) onResults:(NSArray *) results isLast:(BOOL) isLast{}
//会话结束回调
- (void) onError:(IFlySpeechError*) error{}
//录音音量回调
- (void) onVolumeChanged: (int)volume{}
//录音开始回调
- (void) onBeginOfSpeech{}
//录音结束回调
- (void) onEndOfSpeech{}
//会话取消回调
- (void) onCancel{}

results matching ""

    No results matching ""