图灵机器人SDK IOS 版是运行在IOS系统上的语音识别、语义理解及语音合成一体化解决方案,基于该方案,开发者可以轻松构建功能完备、交互性强的语音识别和语义理解应用程序,而且如果只使用语义理解引擎也是可以的。
(1)语音识别:Automatic Speech Recognition(ASR),也称自动语音识别,其目标是将人类的语音中的词汇内容转换相应的文本。
(2)自然语言理解:Natural Language Understanding(NLU),俗称人机对话,是人工智能的分支学科。本学科通过电子计算机模拟人的语言交际过程,从而使计算机能理解和运用人类社会的自然语言,实现人机之间的自然语言通信,进而代替人的部分脑力劳动,包括查询资料、解答问题、摘录文献、汇编资料以及一切有关自然语言信息的加工处理。
(1)语音识别:将语音识别成相应的文本。
(2)语义理解:将文本识别成领域相关的语义结果。
(3)语音合成 : 将文本转化成语音读出。
(1)产品需要流畅自然的中文聊天能力。我们提供精准的语义分析,可正确识别用户意图;支持多种上下文结构,满足连续对话和多重对话的需要。
(2)产品需要自定义语义库。支持可自定义的NLP智能语料库系统,满足用户特殊语义处理需求。
(3)产品需要广泛的语料库。支持上百个使用场景功能,以及丰富的百科知识。
网络:支持 NET、Wifi 网络环境
系统:支持 iOS 5.0 及以上系统
架构:armv7、armv7s、arm64、i386、x86_64;
机型:iPhone 4+,iPad 2+和 iPod 5+;
硬件要求:需要有麦克风,用于支持语音录入
文件名称 | 用途 |
---|---|
TRRTuringAPI.h | 图灵SDK API的通用头文件 |
TRRTuringAPIConfig.h | 图灵SDK API的配置工具类头文件 |
TRRTuringRequestManager.h | 图灵SDK API的请求管理器头文件 |
TRRVoiceRecognitionManager.h | 图灵SDK的语音识别管理器头文件 |
TRRSpeechSythesizer.h | 图灵SDK的语音合成管理器头文件 |
BDVoiceRecognitionClient.h | 百度语音识别功能头文件 |
libTuringSDK.a | 图灵SDK的静态链接库文件 |
Localizable.strings | 语音识别接口的字符本地化文件(中文简体) |
(1)使用图灵开放API SDK,需要注册图灵API开发者帐号,在个人中心的“我的机器人》机器人详情》接入”页获取图灵APIKEY。
(2)由于语音识别和语音合成接口底层会调用Baidu相关接口。因此使用图灵IOS SDK,需 要开发者提前获取Baidu开发者帐号,并创建应用,获得AppID、APIKey、Secret Key。具体请参考http://yuyin.baidu.com/http://yuyin.baidu.com/
以下9个是本SDK可能用到的Framework,部分依赖关系来自于BaiduSDK。
1. SystemConfiguration.framework
2. Foundation.framework
3. AVFoundation.framework
4. GLKit.framework
5. OpenGLES.framework
6. libz.1.dylib
7. Security.framework
8. CFNetwork.framework
9. CoreLocation.framework
IOS SDK依赖以下第三方库(SDK包中已提供,请集成到应用工程中)
1.OpenUDID
2.JSONKit
3.TTTAttributedLabel
4.CoreAudioUtility(苹果Audio库)
对于采用ARC内存管理方式的工程,需要利用Non-ARC方式表姨OpenUDID和JSONKit(对相应文件添加CompilerFlags为-fno-objc-arc)
因为SDK包中采用Objective C++实现,因此需要保证工程中引用静态库头文件的实现文件的扩展名必须为.mm。
(1)HTTP访问
IOS9系统默认使用HTTPS网络协议。由于百度和图灵SDK目前都只采用HTTP协议,因 此基于图灵SDK的应用程序也要允许HTTP访问。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
(2)BITCODE问题由于底层的百度SDK编译时采用ENABLE_BITCODE模式,因此基于图灵SDK的应用程序也不能采用ENABLE_BITCODE模式
图灵API使用需要APIKEY(注册激活图灵帐号获取)和UserID(由SDK根据用户信息生成)。TRRTuringAPIConfig类会协助用户获得这两个属性,用来完成图灵API的设置
1. 利用图灵API KEY初始化TRRTuringAPIConfig对象。
- (instancetype)initWithAPIKey:(NSString *)apikey;
2. 该初始化过程中,SDK将读取本地是否缓存了UserID信息。用户可以检查 TRRTuringAPIConfig对象的UserID属性,如UserID等于nil,用户需要调用以下接口,联网获取UserID
- (void)request_UserIDwithSuccessBlock:(SuccessStringBlock)success failBlock:(FailBlock)failed;
由于联网获取UserID是异步操作,用户可以通过设置参数success和failed两个Block, 来处理操作成功和失败场景。 其中success Block的参数是成功获得的UserID,failed Block的参数是API失败类型,或相关信息字符串。
1.首先要获得TRRTuringAPIConfig对象,并用该对象完成语义分析接口的设置;
- (instancetype)initWithConfig:(TRRTuringAPIConfig *)config;
2.调用语义分析接口
- (void)request_OpenAPIWithInfo:(NSString *)info successBlock: (SuccessDictBlock)success failBlock:(FailBlock)failed;
由于语义分析接口是异步操作,用户可以通过设置参数success和failed两个Block,来 处理操作成功和失败场景。其中success Block的参数是语义分析接口返回的JSON数 据转换成的Dictionary类型,failedBlock的参数是API失败类型,或相关信息字符串。
代码示例如下:
//初始化TRRTuringAPIConfig对象
TRRTuringAPIConfig *apiConfig = [[TRRTuringAPIConfig alloc]initWithAPIKey:@"TuringApiKey"];
TRRTuringRequestManager apiRequest = [[TRRTuringRequestManager alloc] initWithConfig:apiConfig];
//如userID==nil,需要调⽤用request_UserIDwithSuccessBlock:failBlock:接⼝口获
取UserID
if (apiConfig.userID == nil) {
[apiConfig request_UserIDwithSuccessBlock:^(NSString *str) {
//获取UserID成功,继续调用OpenAPI接⼝
[apiRequest request_OpenAPIWithInfo:self.inputTextView.text successBlock:^(NSDictionary *dict) {
//处理语义分析接口的返回结果
_outputTextView.text = [dict objectForKey:@"text"];
} failBlock:^(TRRAPIErrorType errorType, NSString
*infoStr) {
//处理语义分析失败结果
_outputTextView.text = infoStr;
}];
}
failBlock:^(TRRAPIErrorType errorType, NSString *infoStr) {
//处理获取UserID失败的场景
_outputTextView.text = infoStr;
NSLog(@"erroresult = %@", infoStr);
}];
} else {
//如本地缓存了UserID,则直接调用OpenAPI接⼝
[apiRequest request_OpenAPIWithInfo:self.inputTextView.text successBlock:^(NSDictionary *dict) {
NSLog(@"apiResult =%@",dict);
_outputTextView.text = [dict objectForKey:@"text"];
} failBlock:^(TRRAPIErrorType errorType, NSString
*infoStr) {
_outputTextView.text = infoStr;
NSLog(@"errorinfo = %@", infoStr);
}];
}
图灵语音合成API底层会调用Baidu语音合成API,因此使用图灵SDK时需要获得Baidu语音合成API所需的APIKEY和SecretKey。
初始化语音合成对象,并设置APIKEY和SecretKey。
- (instancetype)initWithAPIKey:(NSString *)apikey secretKey:(NSString*)secretkey;
通过以下接口设置语音合成参数,参数Key-Value取值参考Baidu SDK中的 BDSSpeechSynthesizer.h文件
- (int)setParamForKey:(NSString *)key value:(NSString *)value;
如果不进行参数设置,图灵SDK将采用默认的参数进行语音合成,默认参数如下
(1)文本编码,默认编码类型为UTF8;
(2)发音人,默认为女声;
(3)发音音量、语速、音调采取[0-9]的中间值5;
(4)音频格式,默认为amr;
(5)音频比特率,默认为15.85k比特率;
利用以下接口可以完成语音合成操作的开始、暂停、恢复、停止等操作。除停止操作外,其他 三个操作都会返回int类型的返回值,其错误值含义请参考BDSSpeechSynthesizer.h文件
- (int)start:(NSString *)text;
- (int)pause;
- (int)resume;
- (void)stop;
图灵语音识别API底层会调用Baidu语音识别API,因此使用图灵SDK时需要获得Baidu语音识别API所需的APIKEY和Secret Key。
语音识别结果为单例实现,在使用过程中可以调用以下接口获得单例句柄:
+ (TRRVoiceRecognitionManager *)sharedInstance;
- ( void)setApiKey:(NSString *)apiKey secretKey:(NSString *)secretKey;
通过以下接口可以完成对语音识别操作的启动、关闭和取消功能
//启动语音识别操作, 返回值参考BDVoiceRecognitionClient.h中
TVoiceRecognitionStartWorkResult
- (int)startVoiceRecognition;
//停止语音识别操作,代表手动触发用户发音结束事件
- (void)stopRecognize;
//取消正在进行的语音识别操作
- (void)cancleRecognize;
通过实现TRRVoiceRecognitionManagerDelegate协议,应用程序可以接收语音识别的结果信息,包括正确的结果信息和发生错误时的错误信息。通过实现TRRVoiceRecognitionManagerDelegate协议,开发人员可以捕获识别引擎开始工作,检测到用户已说话,检测到用户已停止说话等事件。
@protocol TRRVoiceRecognitionManagerDelegate
<MVoiceRecognitionClientDelegate>
//接收语音识别结果的代理函数
- (void)onRecognitionResult:(NSString *)result;
//接收语音识别错误信息的代理函数。
- (void)onRecognitionError:(NSString *)errStr;
//已启动语音识别的事件处理函数。
- (void)onStartRecognize;
//检测到用户已说话的事件处理函数。
- (void)onSpeechStart;
//检测到用户已停止说话的事件代理函数。
- (void)onSpeechEnd;
@end
开发人员需要操作TRRVoiceRecognitionManager对象的属性delegate来设置代理
@property (nonatomic, weak) id
delegate;
//获取采样速率信息
- (int)getCurrentSampleRate;
// 获取当前音量级别
- (int)getCurrentDBLevelMeter;
//当前识别类型数组,参见BDVoiceRecognitionClient.h
@property (nonatomic, strong) NSArray *recognitionPropertyList;
//设置城市信息
- (void)setCityID: (NSInteger)cityID;
//进行功能设置,具体参数及取值参考BDVoiceRecognitionClient.h
- (void)setConfig:(NSString *)key withFlag:(BOOL)flag;
//设置识别语言,具体参数及取值参考BDVoiceRecognitionClient.h
- (void)setLanguage:(int)language;
//关闭标点
- (void)disablePuncs:(BOOL)flag;
//设置是否需要对录音数据进行端点检测
- (void)setNeedVadFlag: (BOOL)flag;
//设置是否需要对录音数据进行压缩
- (void)setNeedCompressFlag: (BOOL)flag;
A:登录图灵帐号,在“我的机器人》机器人详情》接入”页面就能下载到SDK,除此之外,图灵机器人还提供安卓版本SDK。
A:您可以先查询下日志信息是否有相关的错误信息,如报错可先按照错误信息提示进行修改。如果问题还没解决,您可以加入图灵机器人官方交流群或者进入社区进行问题反馈。
A : 确保在图灵机器人官网申请正确的tulingAPIKey,并保证正确获取userid,可在SDK初始化回调中获取相应的信息。