iOS 语音识别(Recognizer)

这里介绍的是iOS API关于语音识别(Recognizer)的相关说明,点击右侧目录可快速找到相应文件。

类IFlyDataUploader

IFlyDataUploader Class Reference

Inherits from NSObject
Declared in IFlyDataUploader.h

Overview

数据上传类,主要用于上传语法文件或上传联系人、词表等个性化数据。

dataName

数据名称

@property (nonatomic, copy) NSString *dataName

Declared In
IFlyDataUploader.h

data

数据

@property (nonatomic, copy) NSString *data

Declared In
IFlyDataUploader.h

uploadDataWithCompletionHandler:name:data:

上传数据 此函数用于上传数据,下载的过程是异步的。

- (void)uploadDataWithCompletionHandler:(IFlyUploadDataCompletionHandler)*completionHandler* name:(NSString *)*name* data:(NSString *)*data

Parameters

completionHandler -[in] 上传完成回调
name -[in] 上传的内容名称,名称最好和你要上传的数据内容相关,不可以为nil
data -[in] 上传的数据,以utf8编码,不可以为nil

Declared In
IFlyDataUploader.h

setParameter:forKey:

设置上传数据参数

- (void)setParameter:(NSString *)*parameter* forKey:(NSString *)*key

Parameters

parameter 参数值
key 参数名

Declared In
IFlyDataUploader.h

类IFlyRecognizerView

IFlyRecognizerView Class Reference

Inherits from UIView
Conforms to NSObject
Declared in IFlyRecognizerView.h

Overview

语音识别控件
录音时触摸控件结束录音,开始识别(相当于旧版的停止);触摸其他位置,取消录音,结束会话(取消)
出错时触摸控件,重新开启会话(相当于旧版的再说一次);触摸其他位置,取消录音,结束会话(取消)

delegate

设置委托对象

@property (nonatomic, assign) id delegate

Declared In
IFlyRecognizerView.h

initWithOrigin:

初始化控件

- (id)initWithOrigin:(CGPoint)*origin

Parameters

origin 控件左上角的坐标

Return Value
IFlyRecognizerView 对象

Declared In
IFlyRecognizerView.h

initWithCenter:

初始化控件

- (id)initWithCenter:(CGPoint)*center

Parameters

center 控件中心的坐标

Declared In
IFlyRecognizerView.h

Return Value

IFlyRecognizerView 对象

Declared In
IFlyRecognizerView.h

setAutoRotate:

设置横竖屏自适应

- (void)setAutoRotate:(BOOL)*autoRotate

Parameters

autoRotate 默认值YES,横竖屏自适应

Declared In
IFlyRecognizerView.h

setParameter:forKey:

设置识别引擎的参数

- (BOOL)setParameter:(NSString *)*value* forKey:(NSString *)*key

Parameters

value 参数对应的取值
key 识别引擎参数

Return Value
成功返回YES;失败返回NO

Discussion
识别的引擎参数(key)取值如下:

参数 描述
domain 应用的领域: 取值为:iat 普通文本听写; asr:关键词识别;
vad_bos 前端点检测: 静音超时时间,即用户多长时间不说话则当做超时处理; 单位:ms; engine指定iat识别默认值为5000; 其他情况默认值为 4000,范围 0-10000。
vad_eos 后断点检测: 后端点静音检测时间,即用户停止说话多长时间内即认为不再输入,自动停止录音;单位:ms; sms 识别默认值为 1800; 其他默认值为 700,范围 0-10000。
sample_rate 采样率:目前支持的采样率设置有 16000 和 8000。
asr_ptt 标点符号设置: 默认为 1,当设置为 0 时,将返回无标点符号文本。
result_type 返回结果的数据格式: 可设置为json,xml,plain,默认为json。
grammarID 识别的语法id: 只针对 domain 设置为”asr”的应用。
asr_audio_path 音频文件名: 设置此参数后,将会自动保存识别的录音文件。 路径为Documents/(指定值)。 不设置或者设置为nil,则不保存音频。
params 扩展参数: 对于一些特殊的参数可在此设置,一般用于设置语义。

Declared In
IFlyRecognizerView.h

parameterForKey:

获取识别引擎参数

- (NSString *)parameterForKey:(NSString *)*key

Parameters

key 参数key

Return Value
参数值

Declared In
IFlyRecognizerView.h

start

开始识别

- (BOOL)start

Return Value
成功返回YES;失败返回NO

Declared In
IFlyRecognizerView.h

cancel

取消本次识别

- (void)cancel

Declared In
IFlyRecognizerView.h

类IFlySpeechRecognizer

IFlySpeechRecognizer Class Reference

Inherits from NSObject
Conforms to IFlySpeechRecognizerDelegate
Declared in IFlySpeechRecognizer.h

Overview

语音识别类 此类现在设计为单例,你在使用中只需要创建此对象,不能调用release/dealloc函数去释放此对象。所有关于语音识别的操作都在此类中。

音频流识别 音频流识别可以将文件分段写入

Other Methods

delegate

设置委托对象

@property (nonatomic, assign) id delegate

Declared In
IFlySpeechRecognizer.h

sharedInstance

返回识别对象的单例

+ (instancetype)sharedInstance

Return Value
识别对象的单例 Declared In
IFlySpeechRecognizer.h

destroy

销毁识别对象。

- (BOOL)destroy

Return Value
成功返回YES,失败返回NO

Declared In
IFlySpeechRecognizer.h

setParameter:forKey:

设置识别引擎的参数

- (BOOL)setParameter:(NSString *)*value* forKey:(NSString *)*key*

Parameters

value 参数对应的取值
key 识别引擎参数

Return Value

成功返回YES;失败返回NO

Discussion

识别的引擎参数(key)取值如下:

参数 描述
domain 应用的领域: 取值为:iat、search、video、poi、music、asr; iat:普通文本听写; search:热词搜索; video:视频音乐搜索; asr:关键词识别;
vad_bos 前端点检测: 静音超时时间,即用户多长时间不说话则当做超时处理; 单位:ms; engine指定iat识别默认值为5000; 其他情况默认值为 4000,范围 0-10000。
vad_eos 后断点检测: 后端点静音检测时间,即用户停止说话多长时间内即认为不再输入,自动停止录音;单位:ms; sms 识别默认值为 1800; 其他默认值为 700,范围 0-10000。
sample_rate 采样率:目前支持的采样率设置有 16000 和 8000。
asr_ptt 标点符号设置: 默认为 1,当设置为 0 时,将返回无标点符号文本。
result_type 返回结果的数据格式: 可设置为json,xml,plain,默认为json。
grammarID 识别的语法id: 只针对 domain 设置为”asr”的应用。
asr_audio_path 音频文件名: 设置此参数后,将会自动保存识别的录音文件。 路径为Documents/(指定值)。 不设置或者设置为nil,则不保存音频。
params 扩展参数: 对于一些特殊的参数可在此设置,一般用于设置语义。

Declared In
IFlySpeechRecognizer.h

parameterForKey:

获取识别引擎参数

- (NSString *)parameterForKey:(NSString *)*key

Parameters

key 参数key

Return Value
参数值

Declared In
IFlySpeechRecognizer.h

startListening

开始识别

- (BOOL)startListening

Return Value
成功返回YES;失败返回NO

Discussion
同时只能进行一路会话,这次会话没有结束不能进行下一路会话,否则会报错。若有需要多次回话,请在onCompleted回调返回后请求下一路回话。

Declared In
IFlySpeechRecognizer.h

stopListening

停止录音
调用此函数会停止录音,并开始进行语音识别

- (void)stopListening

Declared In
IFlySpeechRecognizer.h

cancel

取消本次会话

- (void)cancel

Declared In
IFlySpeechRecognizer.h

buildGrammarCompletionHandler:grammarType:grammarContent:

上传语法

- (int)buildGrammarCompletionHandler:(IFlyOnBuildFinishCompletionHandler)*completionHandler* grammarType:(NSString *)*grammarType* grammarContent:(NSString *)*grammarContent

Parameters

completionHandler 上传语法完成回调
grammarType 语法类型
grammarContent 语法内容

Return Value
错误码

Declared In
IFlySpeechRecognizer.h

isListening

是否正在识别

@property (nonatomic, readonly) BOOL isListening

Declared In
IFlySpeechRecognizer.h

IFlyStreamRecognizer Methods

writeAudio:

写入音频流

- (BOOL)writeAudio:(NSData *)*audioData

Parameters

audioData 音频数据

Return Value
写入成功返回YES,写入失败返回NO

Discussion
此方法的使用示例如下:

[_iFlySpeechRecognizer setParameter:@"-1" value:@"audio_source"];
[_iFlySpeechRecognizer startListening];
[_iFlySpeechRecognizer writeAudio:audioData1];
[_iFlySpeechRecognizer writeAudio:audioData2];
...
[_iFlySpeechRecognizer stopListening];

Declared In
IFlySpeechRecognizer.h

类IFlyUserWords

IFlyUserWords Class Reference

Inherits from NSObject
Declared in IFlyUserWords.h

Overview

用户词表类 获取用户词表是为了更好的语音识别(iat),用户词表也属于个性化的一部分.

initWithJson:

初始化对象

- (id)initWithJson:(NSString *)*json

Parameters

json 初始化时传入的数据

Return Value
IFlyUserWords对象

Discussion
在进行初始化时,需要传入的格式如下:

{\"userword\":[{\"name\":\"iflytek\",\"words\":[\"科大讯飞\", \"云平台\",\"用户词条\",\"开始上传词条\"]}]}

Declared In
IFlyUserWords.h

toString

将数据转化为上传的数据格式

- (NSString *)toString

Return Value
没有数据或者格式不对时返回nil

Declared In
IFlyUserWords.h

getWords:

返回key对应的数据

- (NSArray *)getWords:(NSString *)*key

Parameters

key 在putword:value中设置的key

Return Value
key对应的数组

Declared In
IFlyUserWords.h

putWord:value:

添加一条用户词数据

- (BOOL)putWord:(NSString *)*key* value:(NSString *)*value

Parameters

key 用户词对应的key
value 上传的用户词数据

Return Value
成功返回YES,失败返回NO

Declared In
IFlyUserWords.h

putwords:words:

添加一组数据

- (BOOL)putwords:(NSString *)*key* words:(NSArray *)*words

Parameters

key 用户词对应的key
words 上传的用户词数据

Return Value
成功返回YES,失败返回NO

Declared In
IFlyUserWords.h

containsKey:

是否包含key对应的用户词数据

- (BOOL)containsKey:(NSString *)*key

Parameters

key 用户词对应的key

Return Value
成功返回YES,失败返回NO

协议IFlyRecognizerViewDelegate

IFlyRecognizerViewDelegate Protocol Reference

Conforms to NSObject
Declared in IFlyRecognizerViewDelegate.h

Overview

识别回调委托

onResult:isLast: required method

回调返回识别结果

- (void)onResult:(NSArray *)*resultArray* isLast:(BOOL)*isLast

Parameters

resultArray 识别结果,NSArray的第一个元素为NSDictionary,NSDictionary的key为识别结果,sc为识别结果的置信度
isLast -[out] 是否最后一个结果

Declared In
IFlyRecognizerViewDelegate.h

onCompleted: required method

识别结束回调

- (void)onCompleted:(IFlySpeechError *)*error

Parameters

error 识别结束错误码

Declared In
IFlyRecognizerViewDelegate.h

协议IFlySpeechRecognizerDelegate

IFlySpeechRecognizerDelegate Protocol Reference

Conforms to NSObject
Declared in IFlySpeechRecognizerDelegate.h

Overview

语音识别协议 在使用语音识别时,需要实现这个协议中的方法.

onCompleted: required method

识别结果回调

- (void)onCompleted:(IFlySpeechError *)*errorCode

Parameters

errorCode 错误描述

Discussion
在进行语音识别过程中的任何时刻都有可能回调此函数,你可以根据errorCode进行相应的处理,当errorCode没有错误时,表示此次会话正常结束;否则,表示此次会话有错误发生。特别的当调用cancel函数时,引擎不会自动结束,需要等到回调此函数,才表示此次会话结束。在没有回调此函数之前如果重新调用了startListenging函数则会报错误。

Declared In
IFlySpeechRecognizerDelegate.h

onResults:isLast: required method

识别结果回调

- (void)onResults:(NSArray *)*results* isLast:(BOOL)*isLast

Parameters

results -[out] 识别结果,NSArray的第一个元素为NSDictionary,NSDictionary的key为识别结果,sc为识别结果的置信度。
isLast -[out] 是否最后一个结果

Return Value
appendFormat:@“%@”,key];//合并结果 } }

Discussion
在识别过程中可能会多次回调此函数,你最好不要在此回调函数中进行界面的更改等操作,只需要将回调的结果保存起来。
使用results的示例如下:

- (void) onResults:(NSArray ) results{
NSMutableString result = [[NSMutableString alloc] init];
NSDictionary dic = [results objectAtIndex:0];
for (NSString key in dic){

Declared In
IFlySpeechRecognizerDelegate.h

onVolumeChanged:

音量变化回调
在录音过程中,回调音频的音量。

- (void)onVolumeChanged:(int)*volume

Parameters

volume -[out] 音量,范围从0-30

Declared In
IFlySpeechRecognizerDelegate.h

Declared In

IFlySpeechRecognizerDelegate.h

onBeginOfSpeech

开始录音回调
当调用了startListening函数之后,如果没有发生错误则会回调此函数。
如果发生错误则回调onCompleted:函数

- (void)onBeginOfSpeech

Declared In
IFlySpeechRecognizerDelegate.h

onEndOfSpeech

停止录音回调
当调用了stopListening函数或者引擎内部自动检测到断点,如果没有发生错误则回调此函数。
如果发生错误则回调onCompleted:函数

- (void)onEndOfSpeech

Declared In
IFlySpeechRecognizerDelegate.h

onCancel

取消识别回调
当调用了cancel函数之后,会回调此函数,在调用了cancel函数和回调onCompleted之前会有一个
短暂时间,您可以在此函数中实现对这段时间的界面显示。

- (void)onCancel

Declared In
IFlySpeechRecognizerDelegate.h

getAudioKey:

返回音频Key

- (void)getAudioKey:(NSString *)*key

Parameters

key 音频Key

Declared In
IFlySpeechRecognizerDelegate.h

onEvent:arg0:arg1:data:

扩展事件回调
根据事件类型返回额外的数据

- (void)onEvent:(int)*eventType* arg0:(int)*arg0* arg1:(int)*arg1* data:(NSData *)*eventData

Parameters

eventType 事件类型,具体参见IFlySpeechEventType的IFlySpeechEventTypeVoiceChangeResult枚举。
arg0 arg0
arg1 arg1
eventData 事件数据

Declared In
IFlySpeechRecognizerDelegate.h