2018-07-25 10:03:54 +08:00

175 lines
7.0 KiB
Objective-C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// IFlySpeechRecognizer.h
// MSC
//
// Created by iflytek on 13-3-19.
// Copyright (c) 2013年 iflytek. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "IFlySpeechRecognizerDelegate.h"
#define IFLY_AUDIO_SOURCE_MIC @"1"
#define IFLY_AUDIO_SOURCE_STREAM @"-1"
/*!
* 语音识别类
* 此类现在设计为单例你在使用中只需要创建此对象不能调用release/dealloc函数去释放此对象。所有关于语音识别的操作都在此类中。
*/
@interface IFlySpeechRecognizer : NSObject<IFlySpeechRecognizerDelegate>
/** 设置委托对象 */
@property(nonatomic,assign) id<IFlySpeechRecognizerDelegate> delegate ;
/*!
* 返回识别对象的单例
*
* @return 识别对象的单例
*/
+ (instancetype) sharedInstance;
/*!
* 销毁识别对象。
*
* @return 成功返回YES,失败返回NO
*/
- (BOOL) destroy;
/*
* | ------------- |-----------------------------------------------------------
* | 参数 | 描述
* | ------------- |-----------------------------------------------------------
* | 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 |返回结果的数据格式: 可设置为jsonxmlplain默认为json。
* | ------------- |-----------------------------------------------------------
* | grammarID |识别的语法id: 只针对 domain 设置为”asr”的应用。
* | ------------- |-----------------------------------------------------------
* | asr_audio_path|音频文件名: 设置此参数后,将会自动保存识别的录音文件。
* | | 路径为Documents/(指定值)。
* | | 不设置或者设置为nil则不保存音频。
* | ------------- |-----------------------------------------------------------
* | params |扩展参数: 对于一些特殊的参数可在此设置,一般用于设置语义。
* | ------------- |-----------------------------------------------------------
*
*/
/*!
* 设置识别引擎的参数
* 识别的引擎参数(key)取值如下:
* <table>
* <thead>
* <tr><th>*参数</th><th><em>描述</em></th>
* </tr>
* </thead>
* <tbody>
* <tr><td>domain</td><td>应用的领域: 取值为:iat、search、video、poi、music、asr<br/>iat普通文本听写<br/>search热词搜索<br/>video视频音乐搜索<br/>video视频音乐搜索<br/>asr关键词识别;</td></tr>
* <tr><td>vad_bos</td><td>前端点检测: 静音超时时间,即用户多长时间不说话则当做超时处理; 单位ms<br/>engine指定iat识别默认值为5000<br/>其他情况默认值为 4000范围 0-10000。</td></tr>
* <tr><td>vad_eos</td><td>后断点检测: 后端点静音检测时间,即用户停止说话多长时间内即认为不再输入,<br/>自动停止录音;单位:ms;<br/>sms 识别默认值为 1800;<br/>其他默认值为 700范围 0-10000。</td></tr>
* <tr><td>sample_rate</td><td>采样率:目前支持的采样率设置有 16000 和 8000。</td></tr>
* <tr><td>asr_ptt</td><td>标点符号设置: 默认为 1当设置为 0 时,将返回无标点符号文本。</td></tr>
* <tr><td>result_type</td><td>返回结果的数据格式: 可设置为jsonxmlplain默认为json。</td></tr>
* <tr><td>grammarID</td><td>识别的语法id: 只针对 domain 设置为”asr”的应用。</td></tr>
* <tr><td>asr_audio_path</td><td>音频文件名: 设置此参数后,将会自动保存识别的录音文件。<br/> 路径为Documents/(指定值)。<br/>不设置或者设置为nil则不保存音频。</td></tr>
* <tr><td>params</td><td>扩展参数: 对于一些特殊的参数可在此设置,一般用于设置语义。</td></tr>
* </tbody>
* </table>
* @param value 参数对应的取值
* @param key 识别引擎参数
*
* @return 成功返回YES失败返回NO
*/
-(BOOL) setParameter:(NSString *) value forKey:(NSString*)key;
/*!
* 获取识别引擎参数
*
* @param key 参数key
*
* @return 参数值
*/
-(NSString*) parameterForKey:(NSString *)key;
/*!
* 开始识别
* 同时只能进行一路会话,这次会话没有结束不能进行下一路会话,否则会报错。若有需要多次回话,
* 请在onError回调返回后请求下一路回话。
*
* @return 成功返回YES失败返回NO
*/
- (BOOL) startListening;
/*!
* 停止录音
* 调用此函数会停止录音,并开始进行语音识别
*/
- (void) stopListening;
/*!
* 取消本次会话
*/
- (void) cancel;
/*!
* 上传语法
*
* @param completionHandler 上传语法完成回调
* @param grammarType 语法类型
* @param grammarContent 语法内容
*
* @return 错误码
*/
- (int) buildGrammarCompletionHandler:(IFlyOnBuildFinishCompletionHandler)completionHandler
grammarType:(NSString *)grammarType
grammarContent:(NSString *)grammarContent;
/** 是否正在识别
*/
@property (nonatomic, readonly) BOOL isListening;
@end
/*!
* 音频流识别
* 音频流识别可以将文件分段写入
*/
@interface IFlySpeechRecognizer(IFlyStreamRecognizer)
/*!
* 写入音频流
* 此方法的使用示例如下:
* <pre><code>[_iFlySpeechRecognizer setParameter:@"audio_source" value:@"-1"];
* [_iFlySpeechRecognizer startListening];
* [_iFlySpeechRecognizer writeAudio:audioData1];
* [_iFlySpeechRecognizer writeAudio:audioData2];
* ...
* [_iFlySpeechRecognizer stopListening];
* </code></pre>
*
* @param audioData 音频数据
*
* @return 写入成功返回YES写入失败返回NO
*/
- (BOOL) writeAudio:(NSData *) audioData;
@end