【问题标题】:Compare voice wav in android or voice tag ( voice commands ) API比较android中的语音wav或语音标签(语音命令)API
【发布时间】:2011-06-23 13:40:32
【问题描述】:

我正在开发一个应用程序,我需要一些方法来比较两个语音是否匹配,我知道语音识别器是一种方法,但因为(我认为)它需要将语音转换为字符串首先,除了语音识别器支持的语言之外,它不太适合其他语言……有什么想法吗?就像以前的电话一样,语音标签只是将语音输入与设置过程中录制的语音进行比较

【问题讨论】:

  • 您是想识别两个录音是同一个说话者(语音验证或说话者识别),还是想确定说的是同一个词?你配什么?说话者的身份或他所说的话?
  • 嗨。你是怎么解决这个问题的?

标签: android wav speech-recognition voice-recognition wave


【解决方案1】:

一个相对简单的方法是使用 FFT(快速傅里叶变换)将原始 WAV 文件的时域数据转换为频域数据(其中您的每个值变换后的数组表示特定频带的相对幅度/强度)。

如果同一个人说同一个词两次,则生成的时域数据在两个 WAV 文件中的数值仍然会有很大差异。将两个 WAV 文件转换到频域(使用相同大小的 FFT 窗口,即使两个文件的长度略有不同)将产生比原始 WAV 文件更相似的频率数组。

很遗憾,我找不到任何专门用于 Android 的 FFT 库。这是一个引用一些基于 Java 的库的问题:

Signal processing library in Java?

【讨论】:

  • 谢谢,但我真的很惊讶,为什么我的旧 moto 手机可以做到这一点,而这个新的愚蠢的 android 却不能,天哪,我只想录下我的声音,然后再说一遍,它会知道它是否接近原版!我不想做这种复杂的事情,我的意思是它们是否完全一样没问题,但是有很多算法可以决定它是否接近原始,我不想重新发明轮子!跨度>
  • 是的,Android 中的语音识别功能看起来不像你想要的那样工作。我认为制造商实际上已经远离你的 moto 进行语音识别的方式,因为这种旧方式依赖于“训练”你的手机来识别你的特定声音。当然,这正是你想要的,但它被认为是一个严重的弱点,大概是为什么没有人再这样做了。
  • MusiGenesis 是对的。进行语音识别的旧方法是手机本身拥有所有的库和处理软件。 Android 向谷歌打开一个流,你实际上是在和谷歌服务器“交谈”,而不是你的手机。然后服务器将解释发送回电话。它更准确,支持更多功能,并通过这种方式节省手机空间。但是,这对你想要做的事情是有害的,这是不幸的。 :(
  • 更糟糕的是,当android无法联系到服务器时,主屏幕语音搜索让你重新尝试录制,而不是让你用现有的录音重新尝试(甚至让你设置它会自动继续这样做)。
  • 您是否有描述语音识别/分类有用功能的参考资料(最好是已发表的调查论文)?
【解决方案2】:

一个想法是比较声谱图中声音的相似性。声谱图的特点是鲁棒性强,抗噪性强,是分析两种声音的良好参考。 如果你采用这种方法,你应该先找出声音的特征,然后你需要知道如何比较两个频谱图中的特征,这就是模式识别。

这个apihttp://code.google.com/p/musicg-sound-api/是用java写的,可以在android中使用。它捕获波谱图。

【讨论】:

    猜你喜欢
    • 2015-08-04
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-18
    • 1970-01-01
    • 2014-06-07
    相关资源
    最近更新 更多