在android中比较两个声音

我正在一个语音消息应用程序工作,我需要比较两个声音,

  1. 通过录制您的声音注册应用程序
  2. 通过录制语音向其他用户发送语音留言,但首先需要将该语音与录制的语音进行比较。

它为了安全目的而需要知道录制的信息是否来自特定的用户。

我试过了 :

在Android中比较两个声音

http://www.dreamincode.net/forums/topic/274280-using-fft-to-compare-two-audio-files-and-then-realtime-comparison/

但没有得到有关语音比较的想法。

如果有人知道这一点,请分享。 没有find任何样品来做到这一点。

Solutions Collecting From Web of "在android中比较两个声音"

既然您表示这是出于安全目的,我想先分享一些关于语音生物统计的内容:-)

authentication某人的问题在于,你需要确定他实际上是在说那些被logging下来的东西……而这完全不同于复杂的声音特征。

从样本中提取语音特征的algorithm,后来计算新样本与第一个样本之间的距离,很容易被攻击者制作的logging所迷惑。

因为在你的情况下,有一个人的收件人,创build一个由乱七八糟的词或句子随机对话组成的消息实际上是相当困难和耗时。 但不完全不可能

为音乐行业创build了非常好的音效软件,例如采取一些语音audioinput,使其听起来像(第二个audio样本(欺诈者制作的指南))。 Vocalign Pro由SynchroArts做到这一点,以帮助获得完美的支持声乐曲目。 您可以使用其他语音编辑软件手动进一步调整audio,并达到可接受的质量水平,不会立即被收件人检测到。

根据攻击者希望用户说的话,如果他有所有他想要的logging材料,stream程的复杂性可能从一个小时到一天不等。

为了对付这种types的攻击,您需要检测已编辑的audio样本。 数字版将留下不自然的痕迹。 例如在声音周围的背景噪音。

AFAICT,只有最好的商业软件才能达到这个级别的安全检查,但是我不知道他们在检测这种编辑方面走多远。

从纯粹的安全angular度来看,您还需要确保设备没有受到损害。 所以这些语音validation检查应该发生在服务器端,而不是在电话本身。

请注意,这些都是一般的考虑因素,这一切都取决于您实际需要的安全措施。 我的汽车警报当然不是牢不可破的,但它有助于提高酒吧,所以更less的攻击者可能会偷走它…

另外要考虑的是生物统计学是一个统计过程,它会产生一定比例的误报和误报。 通过改变接受的门槛,你可以降低其中的一个,但要以提高另一个为代价。

select适当的阈值将需要您有相当数量的testing数据。 说至less200个讲话者的1分钟录音开始得到一张照片。

还有一件事我认为你需要考虑的是人类语音的固有变异性。 人们可能会生病,在某些情况下可能会使声音无法辨认。 情绪状态也可能起作用:悲伤或愤怒会产生不同的声音。

最后但并非最不重要的是,周围的噪音可能会造成问题。 假设用户在家中注册,然后在繁忙的城市环境中logging消息,系统可能有麻烦,确保它实际上是同一个人说话。 信噪比肯定会成为你的主要问题之一。 小提示:根据麦克风与嘴的距离,比例会有很大的不同。 当用户将手机放在脸上时,就像在普通的电话交谈中那样,当用户在logging信息的同时查看屏幕时,你会得到更好的结果。

语音变异性和信噪比可能是造成假阴性结果的主要原因。

希望您现在能够更好地理解等待您的挑战,并开始分享开源和商业图书馆的一些指引。

AFAIK,没有包含欺诈者检测的开源库…您可能需要检查Nuance Communication以了解最新的技术。 还有很多其他的供应商,只要跟Google联系,我只是提到了Nuance,因为它的名气。

有一个名为Alize的OSS库(用C ++编写,在LGPL许可证下)使用了一种叫做MFCC(Mel Frequency Cepstrum Coefficients)的algorithm。 已知MFCC带来优异的结果。 由于该软件针对的是愿意改进此主题的最新技术的研究人员,而且所用的词汇非常具体,所以预计学习曲线会非常陡峭。

我写了一个名为Recognito的OSS库(Java,Apache 2.0),针对普通开发者,所以你应该能够在几分钟内testing它。 lib非常年轻,在改进algorithm之前我首先关注它的API。 我现在使用的algorithm被称为线性预测编码(LPC),并且已知会带来好的结果(并且我确实有很好的结果,提供的logging产生相同的质量水平:-))。 目前我正在发布包含匹配结果中似然系数的新版本。 MFCC的实施是在路线图上。 有很多的javadoc和代码应该是非常简单的… https://github.com/amaurycrickx/recognito

Recognito对用于audio文件处理的javax.sound包有依赖性。 你可能想要检查这个post,以便在Android中使用它:在Android中进行语音匹配

鉴于许多人需要一些安卓的东西,我会在不久的将来做一些事情,而不是说如何修改lib 🙂

HTH