【问题标题】:How do I compare two voice samples on iOS?如何在 iOS 上比较两个语音样本?
【发布时间】:2011-04-05 16:48:32
【问题描述】:

首先,我要声明,我的问题并不是关于语音识别的“经典”定义。

我们正在尝试做的事情有些不同,在以下意义上:

  1. 用户记录他的命令
  2. 稍后,当用户说出预先录制的命令时,会发生某种动作。

例如,我录制了一个给妈妈打电话的语音命令,所以我点击她并说“妈妈”。 然后当我使用程序说“妈妈”时,它会自动呼叫她。

如何将口述命令与保存的语音样本进行比较?

编辑: 我们不需要任何“文本到语音”的能力,只需要比较声音信号。 显然,我们正在寻找某种现成的产品或框架。

【问题讨论】:

  • 就像我说的,如何才能实现我所要求的 :)
  • 只是为了解决这个问题,我们不需要任何类型的“文本到语音”或任何类似的东西,我们正在寻找一个相对简单的框架,可以比较 2 个声音信号和看看它们是否“相同”。这样即使不会说英语的人也可以使用这个程序。
  • 你找到这个问题的有效答案了吗?

标签: iphone ios signal-processing voice-recognition


【解决方案1】:

音乐识别的一种方法是对所讨论的两种声音获取频谱的时间序列(时间窗 STFT FFT),在时间轴上映射频率峰值的位置,并互相关匹配的两个 2D 时频峰值映射。这比仅对 2 个声音样本进行互相关要稳健得多,因为峰值的变化远小于频谱峰值之间的所有频谱“残渣”。如果两个发音的频率和音调没有太大变化,这种方法会更好。

在 iOS 4.x 中,您可以将 Accelerate 框架用于 FFT,也可以使用 2D 互相关。

【讨论】:

    【解决方案2】:

    尝试使用第三方库,例如用于 iOS 应用程序的 OpenEars。您可以让用户录制语音样本并将其保存为翻译文本,或者让他们输入文本进行识别。

    【讨论】:

    • 我什至不需要将所说的语音命令翻译成文本,我只是想将所说的命令存储起来,然后再进行比较。
    • 不,您确实需要语音识别。比较“平等”的声音并没有考虑第二个录制的样本可能与第一个不同的许多方式中的任何一种。汽车在后台驶过?用户在单词之间的停顿时间稍长一些?还是口吃?宽容你的用户——他们是人类,不能两次发出完全相同的声音。
    【解决方案3】:

    我认为您必须执行某种cross correlation 来确定这两个信号的相似程度。 (假设当然是同一个用户说话)。我只是输入这个答案,看看它是否有帮助,但我会等待其他人的更好答案。我的信号处理能力接近于零。

    【讨论】:

    • 交叉相关似乎是我们项目所需要的,因为我们希望它是通用的(而不仅仅是针对说英语的客户)
    【解决方案4】:

    我不确定您的问题是关于 DSP 还是如何在 iPhone 上进行。如果是后者,我将从 Apple 提供的 Speak Here 项目开始。这样,您已经拥有将语音录制到文件的界面。它会为你省去很多麻烦。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-20
      • 1970-01-01
      • 2012-06-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多