前言

当前的APP的查询都是使用手动输入,不仅效率低,而且查询的语句的限制比较大,不能够方便的扩展。 如果能方便的扩展查询语句,那么APP的使用就会有很大的灵活性。可以设计各种问句和语句,可以方便的和用户进行交互。在这里使用了olami平台提供的语音平台接口,很方便的实现了查询语句的扩展,而且可以返回需要的结果。同时,Olami平台也提供了完整的语音识别功能,再结合iOS 提供的AVSpeechSynthesis接口,就可以实现一套类似Siri的智能语音查询诗句的APP

APP功能介绍

源码下载地址:https://github.com/lym-ay/Poem

这是一个查询《唐诗三百首》、《宋词三百首》、《元曲三百首》的诗歌学习APP,可以查询名字查询诗歌,可以通过诗人查询诗歌,可以通过诗词查询是哪一首,可以查询唐代有哪些诗人,这些诗人的代表作是什么。并通过语音读出来 
通过诗人查询代表作,点击可以显示诗歌 

通过诗歌名称查询 

通过诗句查询诗歌 

通过诗句查询诗人 

功能的实现

语音识别和语义理解都是通过Olami平台来实现的。这个需要去Olami平台进行注册,然后就可以免费试用了。官网的地址https://olami.ai,网站上有丰富的教学资源具体的使用可以查看相关的文档,也可以查询我的前几篇博客 
定义的语句大部分都是查询的:例如 
落花时节又逢君出自哪首诗 
你会背李白的诗吗 
元代的诗人有哪些 
唐朝有哪些诗人 
唐朝诗人李白的主要作品有哪些

李商隐的诗

语音的读取是使用了苹果的AVSpeechSynthesis库进行的。这个库的使用也很简单。这个库是在AVFoundation中

#import<AVFoundation/AVFoundation.h>

使用了两个类

AVSpeechSynthesizer
AVSpeechUtterance
AVSpeechSynthesizer *av= [[AVSpeechSynthesizer alloc]init];
av.delegate=self;//挂上代理
AVSpeechUtterance *utterance = [[AVSpeechUtterance alloc]initWithString:@"你好!"];//需要转换的文字
utterance.rate=0.5;// 设置语速,范围0-1,注意0最慢,1最快;AVSpeechUtteranceMinimumSpeechRate最慢,AVSpeechUtteranceMaximumSpeechRate最快 AVSpeechSynthesisVoice*voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"zh-TW"];//设置发音,这是中文普通话 utterance.voice= voice; [av speakUtterance:utterance];//开始

AVSpeechSynthesizer定义了一些回调代理,可以侦测一些状态

- (void)speechSynthesizer:(AVSpeechSynthesizer*)synthesizer didStartSpeechUtterance:(AVSpeechUtterance*)utterance{

    NSLog(@"---开始播放");

}

- (void)speechSynthesizer:(AVSpeechSynthesizer*)synthesizer didFinishSpeechUtterance:(AVSpeechUtterance*)utterance{

    NSLog(@"---完成播放");

}

- (void)speechSynthesizer:(AVSpeechSynthesizer*)synthesizer didPauseSpeechUtterance:(AVSpeechUtterance*)utterance{

    NSLog(@"---播放中止");

}

- (void)speechSynthesizer:(AVSpeechSynthesizer*)synthesizer didContinueSpeechUtterance:(AVSpeechUtterance*)utterance{

    NSLog(@"---恢复播放");

}

- (void)speechSynthesizer:(AVSpeechSynthesizer*)synthesizer didCancelSpeechUtterance:(AVSpeechUtterance*)utterance{

    NSLog(@"---播放取消");

}

语音识别完成诗句的查询功能,iOS AVSpeechSynthesis语音输出结果的诗歌APP的更多相关文章

  1. 通过维基API实现维基百科查询功能

    通过英文维基的免费API,可以实现对维基百科的搜索查询或者标题全文查询等,尝试了一下通过title实现全文查询,返回的结果是wikitext格式,暂时不知道该如何应用,所以仅实现了查询功能,可以返回最 ...

  2. 创建ASP.NET Core MVC应用程序(5)-添加查询功能 & 新字段

    创建ASP.NET Core MVC应用程序(5)-添加查询功能 & 新字段 添加查询功能 本文将实现通过Name查询用户信息. 首先更新GetAll方法以启用查询: public async ...

  3. MySQL 5.5开启慢查询功能

    vim /etc/my.cnf [mysqld] slow-query-log = on # 开启慢查询功能 slow_query_log_file = /usr/local/mysql/data/s ...

  4. ASP.NET MVC系列:为视图添加查询功能

    首先,在MoviesController里添加一个查询方法,代码如下 public ActionResult SearchIndex(string title) { //查询数据库中的电影表 var ...

  5. 完善ext.grid.panel中的查询功能(紧接上一篇)

    今天的代码主要是实现,Ext.grid.panel中的查询,其实我也是一名extjs新手,开始想的实现方式是另外再创建一个新的grid类来存放查询出的数据(就是有几个分类查询就创建几个grid类),这 ...

  6. 033医疗项目-模块三:药品供应商目录模块——供货商药品目录t添加查询功能----------Dao层和Service层和Action层和调试

    什么叫做供货商药品目录t添加查询功能?就是说我们前面的博客里面不是说供货商登录后看到了自己供应的药品了么如下: 现在供货商想要往里面添加别的药品,那么这个药品的来源就是卫生局提供的那个Ypxx表(药品 ...

  7. [Architecture Pattern] Repository实作查询功能

    [Architecture Pattern] Repository实作查询功能 范例下载 范例程序代码:点此下载 问题情景 在系统的BLL与DAL之间,加入Repository Pattern的设计, ...

  8. RPM软件包管理的查询功能

    以后大家升级rpm包的时候,不要用Uvh了! 我推荐用Fvh 前者会把没有安装过得包也给装上,后者只会更新已经安装的包   总结:未安装的加上小写p,已安装的不需要加p   查询q    rpm {- ...

  9. 实现带查询功能的Combox控件

    前言 ComBox 还可以实现查询功能,通过设置 ComBox 控件的 AutoCompleteSource 属性和 AutoCompleteMode 属性,可以实现从 Combox 控件中查询已存在 ...

随机推荐

  1. 【2017集美大学1412软工实践_助教博客】个人作业3——个人总结(Alpha阶段)

    题目 个人作业3--个人总结(Aplha阶段) 成绩公示 评分项 alpha过程的总结 5个问题 自我评价表 评论区互动 总分 分值 4 2.5 2.5 1 10 201221123032 1 1 2 ...

  2. 团队作业8——第二次项目冲刺(Beta阶段)--5.25 5th day

    团队作业8--第二次项目冲刺(Beta阶段)--5.25 fifth day Day five: 会议照片 项目进展 Beta冲刺的第四天,以下是今天具体任务安排: 队员 昨天已完成的任务 今日计划完 ...

  3. 团队作业3-需求改进&原型设计

    选题:实验室报修系统 实验室设备经常会发生这样或那样的故障,靠值班人员登记设备故障现象,维护人员查看故障记录,进行维修,然后登记维修过程与内容,以备日后复查,用这种方式进行设备运营管理,它仅仅起到一个 ...

  4. 201521123050 《Java程序设计》第4周学习总结

    1. 本周学习总结 2. 书面作业 1.注释的应用 1.1使用类的注释与方法的注释为前面编写的类与方法进行注释,并在Eclipse中查看.(截图) 2.面向对象设计(大作业1,非常重要) 2.1 将在 ...

  5. 201521123038 《Java程序设计》 第一周学习总结

    201521123038 <Java程序设计> 第一周学习总结 1.本章学习总结 本周已掌握Java配置,初步认识Java运行软件和基本语法. Java语言语法和C语言基本类似,部分不同. ...

  6. 201521123012 《Java程序设计》第一周学习总结

    一.本章学习内容 1.了解了JDK.JRE .JVM. 2.大概看过了Java的诞生.版本演进(JDK1.1.4,JDK1.1.5--JDK1.1.8,J2SE1.2--Java SE 8)以及三大平 ...

  7. Hibernate第一篇【介绍Hibernate,简述ORM,快速入门】

    前言 前面已经学过了Struts2框架了,紧接着就是学习Hibernate框架了-本博文主要讲解介绍Hibernate框架,ORM的概念和Hibernate入门 什么是Hibernate框架? Hib ...

  8. apriori关联规则

    挖掘数据集:贩物篮数据 频繁模式:频繁地出现在数据集中的模式,例如项集,子结构,子序列等 挖掘目标:频繁模式,频繁项集,关联规则等 关联规则:牛奶=>鸡蛋[支持度=2%,置信度=60%] ...

  9. 自学Unity3D 之 贪吃蛇 添加摄像机跟随

    在Unity的世界中, 物体的位置都是由向量构成的. 今天所需要做的就是让摄像机保持跟蛇头的相对距离. 首先  设蛇头的位置在A 点  , 摄像机的位置在B 点 则  我们可以知道  他们的offse ...

  10. Web 项目更改项目名

    简单的记录web开发中基本的操作. 更改项目名 直接修改 找到原项目中的.project 文件,更改中项目名称.然后在同目录下找到.mymetadata 文件 并更改name.context-root ...