0

我想构建一个应用程序来响应你吹生日蜡烛时发出的声音。这本身不是语音识别(那个声音不是英语中的一个词),OpenEars 非常友善的 Halle 告诉我,使用该框架是不可能的。(感谢您的快速回复,哈莉!)

有没有办法“教”一个应用程序一个声音,以便该应用程序随后可以识别它?

我该怎么办?它甚至可行吗?我是疯了还是在处理一个比我想象的要困难得多的问题?我的家庭作业应该是什么?

4

2 回答 2

1

好消息是它是可以实现的,而且您不需要任何第三方框架——<code>AVFoundation 就是您真正需要的。

Mobile Orchard有一篇很好的文章涵盖了细节,但对于一个四岁的孩子来说,有些不可避免,你需要注意一些问题。

  1. 在您开始在真实设备上录制之前,我需要设置音频会话类别,如下所示:

    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
    
  2. 玩弄这一行中的阈值:

    if (lowPassResults > 0.95)
    

    我发现0.95它太高了,将它设置在 0.55 到 0.75 之间得到了更好的结果。同样,我0.05在这一行中使用了乘数:

    double peakPowerForChannel = pow(10, (0.05 * [recorder peakPowerForChannel:0]));
    
于 2013-10-17T23:08:48.060 回答
0

对于您的用例,使用简单的能量水平阈值可能不够稳健。

解决这个问题的一个好方法是首先从声音流中提取一些特定于吹蜡烛的声音的属性。然后使用机器学习算法根据训练示例(一组您要识别的声音的录音)训练模型,然后可以在使用应用程序时对进入麦克风的声音片段进行实时分类.

考虑到吹蜡烛时可能发生的环境声音(生日总是很吵,不是吗?),训练一个对这些背景声音足够健壮的模型可能很困难。如果您关心准确性,这不是一个简单的问题。

虽然它可能是可行的:请原谅我的自我推销,但我的公司开发了一个 SDK,可以回答您所问的问题:“有没有办法“教”应用程序发出声音,以便应用程序随后可以识别它?” 我不确定吹蜡烛的特定声音是否有效,因为 SDK 主要针对涉及一些敲击声音的应用程序,但它可能仍然适用于您的情况。这是一个链接,您还可以在其中找到一个演示程序,如果您愿意,可以下载并尝试:SampleSumo PSR SDK

于 2013-10-24T22:00:37.747 回答