这个故事始于那个“企业家”老兄在领英上给我发的信息。
“你只管编程吧,兄弟,我给你 20% 的股份,只要你给我做一个能自动驾驶我的车的应用......”在我拒绝异想天开先生的慷慨提议之前,我暗暗下定决心,有一天我要做一个听起来很时髦的应用,而且它不会涉及区块链技术,或 NFT 之类的东西(我还不知道 NFT 到底是个啥)。
快到一月时,我的女朋友问我:
“如果你能为我做一个情人节的应用,岂不是很酷?”这听起来是个非常棒的主意,原因有二;第一,这样我就用不上发愁礼物的事儿了,第二,我终于可以做前面要做的那个应用了。
这是我们的猫咪 Gilbert,他什么都挺好的,就是喵喵叫得太厉害了...... 真的非常烦人。因为他太能叫,我只好翻阅以前的机器学习笔记,然后做了一个应用来理解他到底在说什么。这是一个能把喵星人语言翻译成英语的应用。
我认为,要想翻译猫的语言,首先你应该能分辨出一段声音是否是猫的叫声。听起来很合乎逻辑对不对?为此我设计了一个非常复杂的深度学习算法,可以分辨出各种声音——开个玩笑。其实我只是用了华为技术公司 ML 套件 中的声音检测器。它可以检测出多达 12 种不同的声音,其中之一就是猫叫。
于是我们可以区分喵喵叫和放屁声了,现在怎么办?在下面这个阶段,我需要一堆猫叫声的样本,还要有附带的注释标注对应的猫行为类型。在这个阶段,我沿用了 Yagya Raj Pandeya 和 Joonwhoan Lee 所做的工作,《使用迁移学习分类家猫叫声》。所幸猫咪不会谈论政治。当它们说话时,内容几乎都是与特定情况或行为相关的。
饿了
想玩 / 想打猎 / 想出门
恼火 / 有危险
困了
快乐 / 舒适
饥渴
愤怒既然我已经有了分类好的行为,现在是时候收集一些样本了。好消息是有很多人在猫叫的时候录了下来,坏消息是我的 Youtube 历史上有了一大堆这样的搜索记录:
“性感的猫叫声——1 小时高质量”
也许有人会好奇,不过上面就是性感的猫叫声的频谱图像
当我把所有原始的样本数据收集成 MP3 格式后,就该把它与 Gilbert 发出的声音做对比了。请记住,因为这个应用是专门针对 Gilbert 的,所以所有用到的数据都来自 1 岁的公猫。
在这个阶段,我必须将应用记录的声音与样本数据做比较,并决定它属于哪种猫叫声类型。
现在我们有了 Gilbert 的原始音频和我们预训练的样本,是时候对比音频频谱,找出它属于 7 种行为中的哪一种了。为此,我使用了一个从谷歌的音频分析器分叉出来的分析器。
当我知道它是哪种类型的猫叫声后,就从行为列表中随机显示一段话。比方说,叫声对应的行为类型是“饥饿”,而当时的时间是在中午 12 点之前,这种情况下我们可能会看到应用显示一句话:“我饿了,把我的早餐给我!”
这个应用叫 WDGS,意思是“Gilbert 在说什么?”,我还不打算开源,因为它仍处于学习阶段:ML 套件的声音检测器是不稳定的,代码也写得很粗糙,所以它看起来像意大利面条……
是的,这就是我在空闲时间制作的应用。
https://developer.huawei.com/consumer/en/hms/huawei-mlkit
https://www.ijfis.org/journal/view.html?uid=827&&vmd=Full
https://github.com/bewantbe/audio-analyzer-for-android
https://developer.android.google.cn/jetpack/compose?hl=en
原文链接:
https://medium.com/@egek92/how-i-made-an-app-that-translates-cat-sounds-to-human-language-9c40c487a2d4
你也「在看」吗?👇