请问有没有类似苹果的 siri 或者 微软的 Cortana 的开源实现?

2014-08-12 08:44:49 +08:00
 ikaros
7809 次点击
所在节点    自然语言处理
7 条回复
Actrace
2014-08-12 08:56:17 +08:00
实现方案其实都差不多,主要是要有数据库.
ikaros
2014-08-12 09:24:52 +08:00
@Actrace 除去数据库应该还有其他的难点吧,比如自然语言识别和"理解"
icyalala
2014-08-12 10:42:30 +08:00
likaci
2014-08-12 10:59:24 +08:00
讯飞?不过也不是开源的
icyalala
2014-08-12 11:02:53 +08:00
技术要点:

语音到文本(STT)引擎:
Sphinx: 李开复当年在卡内基梅隆做的语音识别项目,现在已经有很多分支了
PocketSphinx: 微软在Sphinx基础上开发的更适于嵌入式设备的项目
Simon: KDE的项目
HTK: 隐马尔可夫模型(HMM)工具包,用于构建语音合成、识别、训练的基础库

文本到语音(TTS)引擎:
Festival/Flite: 著名的语音合成系统
eSpeak: 开源的语音合成
FreeTTS: 卡内基梅隆大学搞的,基于Flite的语音合成
hts_engine: 基于HTK的,以隐马尔可夫模型(HMM)为基础的语音合成、训练的基础库

标签(智能):
AIML:人工智能标记语言,例如PyAIML、AIMLBot


有上面这些,加上少量的自己的开发,就可以简单搞出一个类似Siri的系统。

但是Siri这些大部分都是基于云端的,比如语音是通过Speex压缩后扔到服务端解析的,那些可能会有更精确的降噪、识别、语义解析、问答系统、大量的训练数据什么的来支撑,这些才是语音助手的核心,自己一个人搞来玩玩的系统根本赶不上。。。
Actrace
2014-08-12 11:38:27 +08:00
@ikaros "理解"其实就是语音信息的逻辑化,即抽象声波数据转换成包含具体语义的"关键字"(在编程世界里叫做编译比较容易理解),然后逻辑机运行这些关键字,套用对应的逻辑,产出结果.

这样,我来简单模拟一个过程.

#1,假设,得到输入 "你吃饭了吗?" 语音信息
#2,得到转换 "你吃饭了吗?" 关键字信息
#3,逻辑机处理关键字信息,得到对象"你",操作"吃饭","了吗","?"
#4,套用逻辑处理关键字,通过数据库提取对象"你"的相关属性(这里是指自己),比如饱食度,心情状态等等.并匹配好操作,作为准备条件.
#5,根据准备好的条件,查询数据库选择合适的条件.产出查询结果.

实际上任何人对于外界信息输入都是这么个处理流程.
做出这些处理,算是半个人工智能了.
当然要想完成一个完整人工智能,还需要"成长"体系,即一套不断补充#5中所使用数据库的数据的体系.
目前siri和cortana基本都是依靠大规模人工补充的方式来实现.
什么?你说机械学习?我感觉目前还没有程序员能彻底理解人类自身的行为模式.在没做到这一点之前,都是不现实的.
ikaros
2014-08-12 12:41:29 +08:00
@icyalala Thanks
@Actrace Thanks

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/127335

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX