历史上的今天
返回首页

历史上的今天

今天是:2025年04月13日(星期日)

正在发生

2018年04月13日 | 如何集成图灵机器人,简单实现语音聊天

2018-04-13 来源:互联网

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

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_lo

以上配置是我在集成的时候报错而总结的一些配置。
六、导入SDK
将下载的sdk包打开找到SDK Package这个文件夹。此文件夹包含三个文件夹,一个是头文件,一个是.a 文件包,一个是上面第二条所说的依赖的第三方库。
这里三个.a文件只需要导入最后一个即可。
下面进行撸代码:////ViewController.m//Robot1////CreatedbyXFon16/8/11.//Copyright©2016年xf.Allrightsreserved.//#import"ViewController.h"#import"TRRVoiceRecognitionManager.h"#import"UserDefine.h"#import"GlobalNetWorking.h"#import"TRRTuringAPIConfig.h"#import"TRRTuringRequestManager.h"#import"TRpeechSythesizer.h"@interfaceViewController()@property(strong,nonatoc)TRRVoiceRecognitionManager*sharedInstance;@property(nonatomic,strong)TRRSpeechSythesizer*sythesizer;@end@implementationViewController-(void)viewDidLoad{ [superviewDidLoad]; [selfsetUILayout]; } -(void)viewWillAppear:(BOOL)animated{ [superviewWillAppear:animated]; _sharedInstance=[TRRVoiceRecognitionManagersharedInstance]; [_sharedInstancesetApiKey:BaiduAPIKeysecretKey:BaiduSecretKey]; _sharedInstance.delegate=self;NSArray*array=@[@(20000)]; _sharedInstance.recognitionPropertyList=array;self.sythesizer=[[TRRSpeechSythesizeralloc]initWithAPIKey:BaiduAPIKeysecretKey:BaiduSecretKey]; }#pragmamark-****************进行UI布局-(void)setUILayout{UIButton*button=[UIButtonbuttonWithType:UIButtonTypeCustom]; button.fe=CGRectMake(0,0,120,40); button.center=self.view.center; [buttonsetTitle:@"点击说话"forState:UIControlStateNormal]; [buttonsetTitle:@"正在说话"forState:UIControlStateHighlighted]; [buttonsetTitleColor:[UIColorredColor]forState:UIControlStateNormal]; [buttonsetTitleColor:[UIColorbrownColor]forState:UIControlStateHighlighted]; UILongPressGestureRecognizer*longpress=[[UILongPressGestureRecognizeralloc]initWithTarget:selfaction:@selector(longTouchWith:)]; [buttonaddGestureRecognizer:longpress]; button.layer.cornerRadius=3; button.layer.borderWidth=1; button.layer.borderColor=[UIColorblueColor].CGColor; [self.viewaddSubview:button]; }#pragmamark-****************长按手势-(void)longTouchWith:(UILongPressGestureRecognizer*)longPress{(longPress.state==UIGestureRecognizerStateBegan){ [_sharedInstancestartVoiceRecognition]; }elseif(longPress.state==UIGestureRecognizerStateEnded){ [_sharedInstancestopRecognize]; } }#pragmamark-****************语音识别结果-(void)onRecognitionResult:(NSString*)result{NSLog(@"result=%@",result);NSMutableDictionary*dic=[NSMutableDictionarydictionary]; [dicsetObject:RobotAPIKeyforKey:@"key"]; [dicsetObject:resultforKey:@"info"]; [dicsetObject:@"123456"forKey:@"userid"]; [selfnetWorkingWith:dic]; }#pragmamark----语音识别错误-(void)onRecognitionError:(NSString*)errStr{NSLog(@"Error=%@",errStr); } -(void)onStartRecognize{NSLog(@"开始说话"); } -(void)onSpeechStart{NSLog(@"检测到已说话"); } -(void)onSpeechEnd{NSLog(@"检测到已停止说话"); }#pragmamark-****************网络请求-(void)netWorkingWith:(Nctionary*)dic{ [GlobalNetWorkingnetworkWithUrl:@"http://www.tuling123.com/openapi/api"andParametersDic:didSuccess:^(idrootObject,iddatasObject,boolisSuccess){//这里获取到机器人反馈的回答 NSString*text=rootObject[@"text"];NSLog(@"%@",text);//进行语音合成 [self.sythesizerstart:text]; }andFailure:^(NSError*error){ [self.sythesizerstart:@"网络请求出错!"]; }]; } -(void)didReceiveMemoryWarning{ [superdidReceiveMemoryWarning];//Disposeofanyresourcesthatcanberecreated.}@end

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

推荐阅读

史海拾趣

Britool Expert公司的发展小趣事

撰写5个关于电子行业里Britool Expert公司发展起来的相关故事,每个故事字数至少500字,可能内容过多,我可以为您提供1个故事的示例,如果需要更多故事,您可以在之后输入继续。


Britool Expert公司的发展故事之一:技术创新的突破

在电子行业的激烈竞争中,Britool Expert公司以其独特的技术创新策略脱颖而出。公司创立之初,就明确了以技术研发为核心的发展道路。在一次关键的技术研讨会上,公司的研发团队提出了一个前所未有的想法——开发一种新型的高效能芯片。

这个想法在当时看来极具挑战性,但团队成员们凭借着对技术的热爱和对市场的敏锐洞察,决心将这个想法变为现实。经过数月的艰苦努力,团队终于攻克了技术难关,成功研发出了这款芯片。这款芯片不仅性能卓越,而且成本大大降低,迅速在市场上获得了广泛的认可。

这一技术创新的突破,为Britool Expert公司打开了新的发展空间。公司借此机会,不断扩大生产规模,优化产品结构,逐渐在电子行业中树立了良好的口碑。随着技术的不断进步和市场的不断扩大,Britool Expert公司逐渐成为了电子行业中的佼佼者。

这个故事只是Britool Expert公司发展历程中的一个缩影。在公司的成长过程中,还有许多类似的技术创新故事。正是这些故事,构成了Britool Expert公司不断发展壮大的坚实基石。


若您想要探索更多内容,随时可以继续输入。

汇科公司的发展小趣事

随着技术的不断成熟和市场的不断拓展,苏州汇科技术股份有限公司开始在全国范围内进行产业布局。公司通过设立办事处、加强与客户的沟通合作等方式,进一步扩大了市场份额。同时,公司还积极寻求与国际知名企业的合作,共同开发新产品、新技术和新市场,为公司的未来发展奠定了坚实基础。

Enovation Controls LLC公司的发展小趣事

随着技术的不断成熟和市场的不断拓展,苏州汇科技术股份有限公司开始在全国范围内进行产业布局。公司通过设立办事处、加强与客户的沟通合作等方式,进一步扩大了市场份额。同时,公司还积极寻求与国际知名企业的合作,共同开发新产品、新技术和新市场,为公司的未来发展奠定了坚实基础。

昆泰芯微电子(CONNTEK)公司的发展小趣事

为了加快产品国产化进程,昆泰芯微电子与世强先进(深圳)科技股份有限公司签订了授权代理合作协议。通过这一战略合作,昆泰芯微电子成功将旗下高端传感器产品触达至终端市场,实现了市场的快速扩张。同时,这一合作也进一步提升了昆泰芯微电子在行业中的知名度和影响力。

Asia Electronics Ind Co Ltd公司的发展小趣事

Asia Electronics Ind Co Ltd在追求经济效益的同时,也积极履行社会责任。公司注重环保和可持续发展,采用环保材料和生产工艺,减少生产过程中的环境污染。同时,公司还积极参与社会公益事业,为当地社区的发展做出贡献。这些举措不仅提升了公司的社会形象,还为公司赢得了更多消费者的支持和信赖。

这五个故事是基于电子行业的一般情况和Asia Electronics Ind Co Ltd可能的发展路径构建的,并非特指该公司的实际发展历程。如果您需要更具体的信息,建议查阅该公司的官方资料或相关新闻报道。

浙江凡华(FANHAR)公司的发展小趣事

随着公司产品的不断成熟和市场的不断扩大,Asia Electronics Ind Co Ltd积极寻求市场拓展的机会。公司加强与国际知名企业的合作,通过参加国际电子展、建立海外销售渠道等方式,不断提升品牌知名度和影响力。同时,公司还注重品牌形象的塑造,通过统一的品牌标识、宣传资料等,增强消费者对品牌的认知度和信任度。

问答坊 | AI 解惑

工程师必看的绝世好文!

1]好好规划自己的路,不要跟着感觉走!根据个人的理想决策安排,绝大部分人并不指望成为什么院士或教授,而是希望活得滋润一些,爽一些。那么,就需要慎重安排自己的轨迹。从哪个行业入手,逐渐对该行业深入了解,不要频繁跳槽,特别是不要为了一点 ...…

查看全部问答>

tms320f2812源码专贴---8.25日跟新

在这里主要讨论程序也会上传一些例程来和大家分享分享。 这个是我最新调试和注释的程序,已经全部调试通过。头文件,库文件,源文件,链接文件。。。。。。都在里面,直接可以再CCS下面运行。 总结了一下各楼,打包而成。 调试程序是一个复杂的 ...…

查看全部问答>

如何去鉴别mobile不同手机及型号?

如何去鉴别mobile不同手机及型号? 要现实功能: 我做了一个软件,想让该软件只能运行在一款手机上(比如:多普达s600),其他手机上安装使用时会提示,\"该软件只能在多普达S600上运行\".请问怎么实现这个功能? 也就是如何驱分不同型号的手机?…

查看全部问答>

STM32的DMA有没有这个功能?

用在ADC上,一个通道即可,我是想这样,stm32在干别的事,DMA接收AD的数据,接收到一定的数量比如1K,stm32读回来做处理,然后dma继续接收,如有这个功能求个程序,谢谢 感觉应该有这个功能,好像不少ARM都有,折腾一下午没成功,adc用9M的时 ...…

查看全部问答>

如何将一个结构体放到(u8)数组中

我在程序中定义了很多的结构体,现在我需要将这些结构体的成员放到一个u8 TxBuffer[]中,而且,根据不同的需要,放不同的结构体,然后通过串口发送出去。可是我遇到一个问题,如何将定义各不相同的结构体,放到这个发送缓存数组中去!!!! ...…

查看全部问答>

单片机C8051F020

请问C8051F020这个单片机怎么用,哪里有教学视频之类的东西,能告诉我下吗?谢谢各位的帮助!!!…

查看全部问答>

PIC单片机写24LC16的问题

各位大侠好:我现在用PIC单片机通过IIC总线读写一个EEPROM (24LC16), 读写程序如下: void Iic_EepromRd(BYTE chip,BYTE address,BYTE *p,BYTE num) {               StartI2C();//启动总线   & ...…

查看全部问答>

华为资料网上收集集合共享

replyreload += \',\' + 1781499;相信大家多多少少在网上看到或下载到各式各样华为的资料,现在经收集,有一系列华为资料现在与大家分享,希望大家能喜欢。这些资料在网上是都能收集到的,现在做一个集合,方便大家学习。希望大家回帖,故做了回复 ...…

查看全部问答>

手机硬件测试这个岗位怎么样?

本帖最后由 xiongpb 于 2015-10-10 18:42 编辑 这个岗位主要是干什么的?发展空间怎么样? 看到这么多好心人的回复,我先感谢了。现在正打算出去找工作,但是对于找工作我还是有点迷茫,不知道我能找到什么样的工作,或者说什么样适合我,我再说 ...…

查看全部问答>