如何集成图灵机器人,简单实现语音聊天

图灵机器人有三个基本功能:
(1)语音识别:将语音识别成相应的文本。
(2)语义理解:将文本识别成领域相关的语义结果。
(3)语音合成 : 将文本转化成语音读出。
要集成图灵机器人,首先要进行图灵官网的注册,这里就一笔带过,按照步骤进行注册即可。
然后创建自己的机器人,
这里写图片描述
注意这里我们选择的是自定义机器人,(qq,微信等机器人我只实现了一下qq机器人,很简单,可以自己下载文档根据步骤走就ok)
这里写图片描述
填好上面的信息,在这里下载iOS SDK和集成文档。走到这里我们的机器人就建立完成。
因为图;图灵机器人的的语音识别等使用的是百度语音,所以我们还需要去百度平台进行新建项目获取权限拿到百度的AppID、APIKey、Secret Key。具体请 参考 http://yuyin.baidu.com/
然后进行新建项目集成。
一、首先要导入依赖的Framework:
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. Core AudioUtility(苹果 Audio 库)
对于采用 ARC 内存管理方式的工程,需要利用 Non-ARC 方式表姨 OpenUDID 和 JSONKit(对相应文件添加 Compiler Flags 为-fno-objc-arc)
三、其他事项。
因为 SDK 包中采用 Objective C++实现,因此需要保证工程中引用静态库头文件的实现 文件的扩展名必须为.mm。
四、iOS9的适配问题
1、首先是http的访问。
在plist文件中添加:

<key>NSAppTransportSecurity</key> <dict>
<key>NSAllowsArbitraryLoads</key>
<true/> </dict>

2、BITCODE 问题
由于底层的百度 SDK 编译时采用 ENABLE_BITCODE 模式,因此基于图灵 SDK 的应用程序也不能采用 ENABLE_BITCODE 模式。如下图,将bitcode设置为NO。
这里写图片描述
五、其他的一些配置
1、在Build Setting -> Build Active Architecture Only 设置为No
2、Build Setting -> Build Options -> Debug Information Format 设置为DWARF with DSYM File
3、Build Setting -> Build Options -> Enable Testability 设置为NO
4、Build Setting ->Linking -> Other Linker Flags 添加 -all_load

以上配置是我在集成的时候报错而总结的一些配置。
六、导入SDK
将下载的sdk包打开找到SDK Package这个文件夹。此文件夹包含三个文件夹,一个是头文件,一个是.a 文件包,一个是上面第二条所说的依赖的第三方库。
这里写图片描述
这里写图片描述
这里三个.a文件只需要导入最后一个即可。
下面进行撸代码:

  //
//  ViewController.m
//  Robot1
//
//  Created by XF on 16/8/11.
//  Copyright © 2016年 xf. All rights reserved.
//

#import "ViewController.h"
#import "TRRVoiceRecognitionManager.h"
#import "UserDefine.h"
#import "GlobalNetWorking.h"
#import "TRRTuringAPIConfig.h"
#import "TRRTuringRequestManager.h"
#import "TRRSpeechSythesizer.h"
@interface ViewController ()<TRRVoiceRecognitionManagerDelegate>

@property (strong, nonatomic) TRRVoiceRecognitionManager *sharedInstance;

@property (nonatomic, strong) TRRSpeechSythesizer *sythesizer;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self setUILayout];
}
-(void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    _sharedInstance = [TRRVoiceRecognitionManager sharedInstance];
    [_sharedInstance setApiKey:BaiduAPIKey secretKey:BaiduSecretKey];
    _sharedInstance.delegate = self;
    NSArray *array = @[@(20000)];
    _sharedInstance.recognitionPropertyList = array;
    self.sythesizer = [[TRRSpeechSythesizer alloc] initWithAPIKey:BaiduAPIKey secretKey:BaiduSecretKey];
}
#pragma mark - **************** 进行UI布局
-(void)setUILayout{
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    button.frame = CGRectMake(0, 0, 120, 40);
    button.center = self.view.center;
    [button setTitle:@"点击说话" forState:UIControlStateNormal];
    [button setTitle:@"正在说话" forState:UIControlStateHighlighted];
    [button setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
    [button setTitleColor:[UIColor brownColor] forState:UIControlStateHighlighted];
    UILongPressGestureRecognizer *longpress = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longTouchWith:)];
    [button addGestureRecognizer:longpress];
    button.layer.cornerRadius = 3;
    button.layer.borderWidth = 1;
    button.layer.borderColor = [UIColor blueColor].CGColor;
    [self.view addSubview:button];
}
#pragma mark - **************** 长按手势
-(void)longTouchWith:(UILongPressGestureRecognizer *)longPress{
    if (longPress.state == UIGestureRecognizerStateBegan) {
        [_sharedInstance startVoiceRecognition];
    }else if(longPress.state == UIGestureRecognizerStateEnded){
        [_sharedInstance stopRecognize];
    }

}
#pragma mark - **************** 语音识别结果
- (void)onRecognitionResult:(NSString *)result {
    NSLog(@"result = %@", result);
    NSMutableDictionary *dic = [NSMutableDictionary dictionary];
    [dic setObject:RobotAPIKey forKey:@"key"];
    [dic setObject:result forKey:@"info"];
    [dic setObject:@"123456" forKey:@"userid"];
    [self netWorkingWith:dic];
}
#pragma mark ---- 语音识别错误
- (void)onRecognitionError:(NSString *)errStr {
    NSLog(@"Error = %@", errStr);
}

- (void)onStartRecognize {
    NSLog(@"开始说话");
}

- (void)onSpeechStart {
    NSLog(@"检测到已说话");
}

- (void)onSpeechEnd {
    NSLog(@"检测到已停止说话");

}
#pragma mark - **************** 网络请求
-(void)netWorkingWith:(NSDictionary *)dic{
    [GlobalNetWorking networkWithUrl:@"http://www.tuling123.com/openapi/api" andParametersDic:dic andSuccess:^(id rootObject, id datasObject, bool isSuccess) {
        //这里获取到机器人反馈的回答
        NSString *text = rootObject[@"text"];
        NSLog(@"%@",text);
        //进行语音合成
        [self.sythesizer start: text];
    } andFailure:^(NSError *error) {
        [self.sythesizer start:@"网络请求出错!"];
    }];

}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

demo 下载地址:http://download.csdn.net/detail/qq_34195670/9602252
github地址:https://github.com/goingmyway1/TuLingRobot

以上如有错误,请留言指出,不胜感激。

阅读更多
版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/qq_34195670/article/details/52197680
个人分类: iOS第三方集成
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭