iphone之使用讯飞语音sdk实现语音识别功能

1、首先下载讯飞sdk及文档:http://open.voicecloud.cn/

2、学习里面的demo简单实现了一个小的语音识别功能

先做一个简单demo,看看识别效果。注:语音识别必须联网。

所有接口必需在联网状态下才能正常使用。

效果图:


#import <UIKit/UIKit.h>
#import "iflyMSC/IFlySpeechRecognizer.h"
#import "iflyMSC/IFlyDataUploader.h"@protocol SpeechAlertViewDelegate <NSObject>
@optional
- (void)getResultText:(NSString *)text;
@end@interface SpeechAlertView : UIAlertView<IFlySpeechRecognizerDelegate>
{UIImageView *speechImage;//声音图片IFlySpeechRecognizer * _iFlySpeechRecognizer;//语音识别对象UIView *backgroundView;
}
@property (assign, nonatomic)id<SpeechAlertViewDelegate> speechDelegate;
@end

#import "SpeechAlertView.h"
#define APPID @"51de5743"
#define TIMEOUT @"20000"
// timeout      连接超时的时间,以ms为单位,毫秒,符号ms ,1000 毫秒 = 1秒,30000=30秒
//timeout:网络超时时间,单位:ms,默认为20000,范围0-30000
@implementation SpeechAlertView-(id)init
{self = [super initWithFrame:CGRectMake(0, 0, 300, 220)];if (self) {// Initialization code}return self;
}
- (id)initWithFrame:(CGRect)frame
{self = [super initWithFrame:frame];if (self) {// Initialization code}return self;
}//uialertview的大小位置
-(void)setFrame:(CGRect)frame{//重新设置弹出框的大小和位置    UIWindow *window =  [UIApplication sharedApplication].keyWindow;[super setFrame:CGRectMake((window.frame.size.width-self.frame.size.width)/2, (window.frame.size.height-self.frame.size.height)/2, self.frame.size.width, self.frame.size.height)];
}
//重新写界面内容
- (void) layoutSubviews {//屏蔽系统的ImageView 和 UIButtonfor (UIView *v in [self subviews]) {if ([v class] == [UIImageView class]){[v setHidden:YES];}if ([v isKindOfClass:[UIButton class]] ||[v isKindOfClass:NSClassFromString(@"UIThreePartButton")]) {[v setHidden:YES];}}//添加背影图UIView *backView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];backView.backgroundColor = [UIColor colorWithRed:66/255.0 green:68/255.0 blue:70/255.0 alpha:1.0];[self addSubview:backView];//添加标题UILabel *titleLabel = [[UILabel alloc]initWithFrame:CGRectMake(10, 0, backView.frame.size.width-20, 30)];titleLabel.backgroundColor = [UIColor clearColor];titleLabel.text = @"语音识别";titleLabel.font = [UIFont systemFontOfSize:16];titleLabel.textColor = [UIColor colorWithRed:218.0/255.0 green:217.0/255.0 blue:217.0/255.0 alpha:1];[backView addSubview:titleLabel];//添加关闭按钮huati_closeUIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];[button setImage:[UIImage imageNamed:@"alert_close.png"] forState:UIControlStateNormal];[backView addSubview:button];button.tag = 1;button.frame = CGRectMake(backView.frame.size.width-25, 5, 20, 20);[button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];//添加黄线UIView *xianView = [[UIView alloc]initWithFrame:CGRectMake(0, 30, backView.frame.size.width, 1)];xianView.backgroundColor = [UIColor yellowColor];[backView addSubview:xianView];//添加内容UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, 35, backView.frame.size.width, 40)];label.backgroundColor = [UIColor clearColor];label.text = @"默认不讲话5秒后自动关闭,间隔不讲话2秒后关闭,最多说20秒";label.font = [UIFont boldSystemFontOfSize:15];label.textAlignment = UITextAlignmentCenter;label.textColor = [UIColor yellowColor];[backView addSubview:label];label.numberOfLines = 0;//添加中间图片speechImage = [[UIImageView alloc]initWithFrame:CGRectMake((self.frame.size.width-50)/2, 80, 50, 85)];speechImage.image = [UIImage imageNamed:@"yuyin_01.png"];[backView addSubview:speechImage];//添加说完了按钮UIButton *submitButton = [UIButton buttonWithType:UIButtonTypeCustom];submitButton.frame = CGRectMake((backView.frame.size.width-170)/2, 170, 150, 35);submitButton.tag = 2;[submitButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];[submitButton setTitle:@"说完了" forState:UIControlStateNormal];[submitButton setBackgroundImage:[UIImage imageNamed:@"alert_tButton.png"] forState:UIControlStateNormal];[submitButton addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];[backView addSubview:submitButton];//想添加什么由此添加//创建对象NSString *initString = [[NSString alloc] initWithFormat:@"appid=%@,timeout=%@",APPID,TIMEOUT];//语音识别对象创建_iFlySpeechRecognizer = nil;_iFlySpeechRecognizer = [IFlySpeechRecognizer createRecognizer:initString delegate:self];
//    _iFlySpeechRecognizer.delegate = self;/*2.vad_bos:静音超时时间,即用户多长时间不说话则当做超 时处理,单位:ms,engine 指定 sms 识别默认值为 5000,其他 情况默认值为 4000,范围 0-10000;3.vad_eos:后端点静音检测时间,即用户停止说话多长时间 内即认为不再输入,自动停止录音,单位:ms,sms 识别默认 值为 1800,其他默认值为 700,范围 0-10000;*/[_iFlySpeechRecognizer setParameter:@"domain" value:@"sms"];[_iFlySpeechRecognizer setParameter:@"sample_rate" value:@"16000"];[_iFlySpeechRecognizer setParameter:@"plain_result" value:@"0"];initString = nil;//开始识别[_iFlySpeechRecognizer startListening];}
//按钮处理方法
-(void) buttonClicked:(id)sender
{[self dismissWithClickedButtonIndex:0 animated:YES];}//显示
-(void)show
{
//    [super show];UIWindow *window =  [UIApplication sharedApplication].keyWindow;backgroundView = [[UIView alloc]initWithFrame:window.frame];backgroundView.backgroundColor = [UIColor clearColor];[backgroundView addSubview:self];[window addSubview:backgroundView];
}
//弹出框消失
-(void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated
{[_iFlySpeechRecognizer stopListening];[_iFlySpeechRecognizer cancel];[_iFlySpeechRecognizer setDelegate:nil];_iFlySpeechRecognizer = nil;speechImage = nil;[backgroundView removeFromSuperview];backgroundView = nil;
}#pragma mark - IFlySpeechRecognizerDelegate
- (void) onVolumeChanged: (int)volume
{NSLog(@"%d",volume);//录音的音量,音量范围1~100if (volume>=0 &&volume<=5) {speechImage.image = [UIImage imageNamed:@"yuyin_01.png"];}else if(volume>5 && volume<=30){speechImage.image = [UIImage imageNamed:@"yuyin_02.png"];}else{speechImage.image = [UIImage imageNamed:@"yuyin_03.png"];}
}- (void) onBeginOfSpeech
{NSLog(@"正在录音");
}- (void) onEndOfSpeech
{NSLog(@"停止录音");
}- (void) onError:(IFlySpeechError *) error
{NSLog(@"停止录音%@,%@",error,[error errorDesc]);[self dismissWithClickedButtonIndex:0 animated:YES];
}//结果
- (void) onResults:(NSArray *) results
{NSMutableString *result = [[NSMutableString alloc] init];NSDictionary *dic = [results objectAtIndex:0];for (NSString *key in dic) {[result appendFormat:@"%@",key];}NSLog(@"转写结果:%@--results:%@",result,results);//返回结果[_speechDelegate getResultText:result];
}@end

源码下载地址:

http://download.csdn.net/detail/rhljiayou/5889565

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/65803.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用nodeJS中的WebSocket实现简单的聊天功能

思路整理 webSocket是服务器向客户端发送信息的一种手段 这里是 更多关于 webSocket 的内容 如果想要了解更多关于 nodeJS 中的webSocket内容&#xff0c;点击这里 开始之前&#xff0c;我们需要新建两个客户端和一个服务端&#xff0c; 服务端负责保存与客户端的连接并且在双…

node.js连接mysql出现错误

node.js连接mysql出现错误&#xff1a; ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client 目前是因为版本较高&#xff0c;最新的加密方式node还不支持 解决办法&#xff1a; 1、登录m…

GeneGPT:用领域工具增强大型语言模型,以改善对生物医学信息的访问

文章目录 一、论文关键信息二、主要内容1. Motivations2. 解决方案关键3. 实验和结果 三、总结与讨论 &#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、论文关键信息 论文标题&#xff1a;GeneGPT: Augmenting Large Language Models with Domain …

怎么禁止计算机共享磁盘,访问限制,分享如何禁止别人访问你电脑的本地磁盘...

随着科技的快速发展&#xff0c;现在的小学生都用上手机了&#xff0c;更是有不少小孩子都会在电脑上玩游戏了&#xff0c;小学生玩LOL可是不少见。在小孩子玩电脑时&#xff0c;除了害怕他沉迷游戏&#xff0c;无心向学&#xff0c;还有就是担心熊孩子乱删电脑文件。如果误删了…

hosts配置 kentrl 网络禁止 访问

hosts禁止联网的工具 127.0.0.1 activate.navicat.com 127.0.0.1 syntevo.com www.syntevo.com #smartgit 127.0.0.1 release.gitkraken.com api.gitkraken.com GitKraken – 超好用的 Git 可视化工具 - 免费版本 “version”: “6.5.1”, “url_deb”: “https://release.axo…

QQ/微信里被禁止访问的网页怎么处理 被屏蔽的域名如何正常访问

最近越来越多的网站被微信的检测系统封杀&#xff0c;有的是确实违规&#xff0c;有的则是被误报了。出现这样的问题&#xff0c;网站的流量瞬间就清零了&#xff0c;对站长来说是天塌一样的打击&#xff0c;那我们有没有办法能够有效的防止域名被微信封杀呢&#xff1f; 一、先…

禁止访问某文件

1.web.config文件配置&#xff1a; 在Web.config文件 <system.web> <httpHandlers>添加一个节点 <system.web><httpHandlers><!--禁止访问IPData目录下的文本文件--><add path"IPData/*.txt" verb"*" type"System.…

用户登录 默认 计算机 用户文件,guest登录系统默认禁止guest访问本地计算机(组图)...

Win10共享文件夹&#xff0c;创建(启用)用户和共享文件&#xff0c;修改特定用户访问权限 内容 一、以访客身份登录 默认情况下&#xff0c;系统禁止访客访问本地计算机。如果允许访客用户访问&#xff0c;则需要进行以下设置&#xff1a; 1.打开访客账户。 图1.1 打开Guest用户…

禁止外部网络访问公司内网

PC0所在网段模拟公司内网&#xff0c;Server0模拟外部网络。 要求内网可以访问外部网络&#xff0c;但是外网不能连接内网 Router1 配置如下&#xff1a; interface FastEthernet0/0 ip address 192.168.10.254 255.255.255.0 duplex auto speed auto ! interface Serial2/0…

微信内链接已禁止访问是什么情况?微信链接防封细节

有时候我们在微信上浏览一些网址的时候会出现这样的情况,比如提示已停止访问该网页,其实提示这个也是为了广大用户的安全着想,毕竟有很多不法网址存在的,但是也由于错杀等原因导致打不开,点击链接提示已禁止访问几种原因是什么呢?那么碰到这种情况我们应该怎么做呢? 一…

为什么公司内部服务禁止访问外网?

文章目录 什么是访问外网&#xff1f;访问外网的风险什么业务场景需要申请外连公网&#xff1f; 上图网络访问分为两个方向&#xff1a; Internet&#xff08;外网&#xff09;访问公司网络 www.taobao.com&#xff1a;请求经路由转发后会到公司负载均衡服务器上&#xff0c;负…

手动禁止访问某些网页,告别摸鱼

手动禁止访问某些网页 开端解题思路逆向思维实现效果总结 开端 有一个不自觉地朋友&#xff0c;告诉我有了新电脑后很烦恼&#xff1a;速度快了&#xff0c;访问网页也快了&#xff0c;管不住自己的手……总在该专心学习工作的时候忍不住刷微博&#xff0c;或者追剧停不下来。…

GoogleChrome禁止访问端口解决

由于系统的版本迭代&#xff0c;从weblogic10.3.6升级到最新的weblogic14.1.1.0&#xff0c;在本地环境搭建创建weblogic域的时候&#xff0c;由于个人风采定义了一个端口为6666的端口&#xff0c;在一起部署完成&#xff0c;通过Google Chrome浏览器访问访问不到&#xff0c;提…

chatgpt赋能python:Python如何利用GPU加速

Python如何利用GPU加速 在大数据时代&#xff0c;数据处理和分析的速度越来越成为企业和个人必备的能力。然而&#xff0c;随着数据集的不断增大&#xff0c;计算机处理速度的瓶颈逐渐暴露出来。为此&#xff0c;GPU加速成为了解决这一问题的有效途径。 什么是GPU加速 GPU即…

国产Gpt究竟该如何使用?

说实话&#xff0c;当初ChatGPT横空出世我是不相信它可以进行专业知识的解答的&#xff0c;毕竟只是人为写出来的一个程序而已&#xff0c;但是当使用了一段时间以后&#xff0c;发现人工智能真的不是说说而已。发展到现在gpt3.5已经很可怕了&#xff0c;4.0又出了~~ 由于一些不…

【2023】分享国内外大厂开发主要AI网站

大厂原版 OpenAI ChatGPT 921 New Bing 415 Notion AI 90 百度文心一言 467 TruthGPT 105 讯飞星火认知大模型 141 进阶 Hugging Face 62 写作AI ​ Dyrt 394&#xff08;AI写作&#xff09; ​ DeepL Write 211&#xff08;写作翻译&#xff09; ​AI自动写文章 535 …

为了你的账户安全,此WeChat ID 不能登入Wechat网页版。你可以.......

问题&#xff1a;微信网页版无法登录了。针对某些公司不允许下载客户端&#xff0c;但是是在Windows系统下的工作&#xff0c;可以按照我的这个简单方法来解决。 尝试咨询微信客服&#xff0c;微信客服的回复是&#xff1a;目前微信对网页版微信进行了动态安全策略调整。如登录…

iMeta | 中科院生态中心邓晔组发布微生物组网络分析平台iNAP(图文/视频教程)

点击蓝字 关注我们 针对微生物组学研究的集成网络分析平台 https://doi.org/10.1002/imt2.13 2022/3/16 ● 2022年3月16日&#xff0c;中国科学院生态环境研究中心邓晔组在iMeta在线发表题为“iNAP: An integrated network analysis pipeline for microbiome studies”的方法类…

【微信篇】电脑版微信的照片视频文件位置变化

【微信篇】电脑版微信的照片视频文件位置变化 新版的微信视频图片更新了位置&#xff0c;感觉有好有坏吧&#xff0c;好的方面就是以后查找视频、图片、文档等可能更方便&#xff1b;不好就是越更新占用体积越大&#xff0c;还多很多数据&#xff0c;不懂是否流氓&#xff1f;…

【二】微信公众号之扫码关注后自动登录

​ 原来公司的官网就支持账号密码、手机验证码、QQ扫码授权、微信扫码授权等多种登录方式。昨天分享了微信公众号之扫码登录&#xff0c;今天接到需求说要为了咋们的公众号涨粉&#xff0c;要扫码后关注公众号后才可以登录&#xff0c;我一想这不是耍流氓嘛&#xff0c;登个网站…