你会用什么算法来编写鹦鹉?

时间:2010-05-11 11:22:34

标签: pattern-matching

鹦鹉学习附近最常说的单词和短语,以便在不适当的时刻重复它们。那么你将如何创建一个软件版本?假设它可以访问麦克风并且可以随意录制声音,那么如何在不需要无限资源的情况下对其进行编码?

我能想象的最好的方法是使用声音中的静音来划分流,然后使用一些模式识别将每个模式编码为一个标记列表,并在遇到它们时存储新的标记。散列令牌序列并计算数据库中的出现次数,您可以构建最常出现的短语的图片。但鉴于短语种类繁多,你如何防止它成为一个巨大的名单?而匹配的绝对数量肯定会从匹配的组合性质中产生大量的误报。

你会使用神经网络吗,因为这是一只真正的鹦鹉如何管理它?或者是否有另一种更聪明的方法来匹配模拟数据中的大规模模式?

4 个答案:

答案 0 :(得分:3)

It's been done,sorta。

编辑:好的,因为furbys已经出局了,我将建议一个Gordian-knot类型的解决方案。将一个带有扬声器和麦克风的盒子连接起来,并在其中粘上一只实际的鹦鹉。它对于演示非常有用,然后一旦你掌握了一些风险投资,你就可以开始研究你的神经网络版本了。神经网络(因为它们已经实现到目前为止)实际上是无用的,但是它们应该足以让你完成第二轮演示,到那时你将太大而不能失败。

答案 1 :(得分:2)

我可能会使用马尔可夫链来模仿它。

如果您之前没有使用马尔可夫链生成自然随机文本(或语音),请查看Fun With Markov Chains

答案 2 :(得分:2)

  

你如何防止这种情况发生变化   一个巨大的名单?

我想你可以维护一个有限的近期单词列表,以及一个无限的常用单词列表。如果鹦鹉听到一个之前没有听过的单词,它会被存储在它的“短期记忆”中。如果它再次听到这个词,它可以将单词移动到频繁单词列表中并无限期地存储它。偶尔,您可以清除最近的单词列表,其中只包含鹦鹉只听过一次的单词或声音。

答案 3 :(得分:0)

也许 - 不要试图单独存储每个剪辑,而是与你想要学习的目标数字进行相似性匹配,说可能是十几个...... 所以声音 - 你匹配你正在跟踪的十几个中最接近的一个 - 当你找到足够的模式匹配其中一个时,你将这个新声音平均到存储的版本 - 给出一个新版本... < / p>

如果传入的声音与存储的任何内容不匹配 - 扔掉它。

引导程序将是最棘手的部分 - 区分目标短语的初始数量......

无论如何 - 脱离我的头顶。 HTH