1
Actrace 2014-08-12 08:56:17 +08:00
实现方案其实都差不多,主要是要有数据库.
|
3
icyalala 2014-08-12 10:42:30 +08:00
|
4
likaci 2014-08-12 10:59:24 +08:00
讯飞?不过也不是开源的
|
5
icyalala 2014-08-12 11:02:53 +08:00 2
技术要点:
语音到文本(STT)引擎: Sphinx: 李开复当年在卡内基梅隆做的语音识别项目,现在已经有很多分支了 PocketSphinx: 微软在Sphinx基础上开发的更适于嵌入式设备的项目 Simon: KDE的项目 HTK: 隐马尔可夫模型(HMM)工具包,用于构建语音合成、识别、训练的基础库 文本到语音(TTS)引擎: Festival/Flite: 著名的语音合成系统 eSpeak: 开源的语音合成 FreeTTS: 卡内基梅隆大学搞的,基于Flite的语音合成 hts_engine: 基于HTK的,以隐马尔可夫模型(HMM)为基础的语音合成、训练的基础库 标签(智能): AIML:人工智能标记语言,例如PyAIML、AIMLBot 有上面这些,加上少量的自己的开发,就可以简单搞出一个类似Siri的系统。 但是Siri这些大部分都是基于云端的,比如语音是通过Speex压缩后扔到服务端解析的,那些可能会有更精确的降噪、识别、语义解析、问答系统、大量的训练数据什么的来支撑,这些才是语音助手的核心,自己一个人搞来玩玩的系统根本赶不上。。。 |
6
Actrace 2014-08-12 11:38:27 +08:00
@ikaros "理解"其实就是语音信息的逻辑化,即抽象声波数据转换成包含具体语义的"关键字"(在编程世界里叫做编译比较容易理解),然后逻辑机运行这些关键字,套用对应的逻辑,产出结果.
这样,我来简单模拟一个过程. #1,假设,得到输入 "你吃饭了吗?" 语音信息 #2,得到转换 "你吃饭了吗?" 关键字信息 #3,逻辑机处理关键字信息,得到对象"你",操作"吃饭","了吗","?" #4,套用逻辑处理关键字,通过数据库提取对象"你"的相关属性(这里是指自己),比如饱食度,心情状态等等.并匹配好操作,作为准备条件. #5,根据准备好的条件,查询数据库选择合适的条件.产出查询结果. 实际上任何人对于外界信息输入都是这么个处理流程. 做出这些处理,算是半个人工智能了. 当然要想完成一个完整人工智能,还需要"成长"体系,即一套不断补充#5中所使用数据库的数据的体系. 目前siri和cortana基本都是依靠大规模人工补充的方式来实现. 什么?你说机械学习?我感觉目前还没有程序员能彻底理解人类自身的行为模式.在没做到这一点之前,都是不现实的. |