说话人识别

时间:2011-01-29 14:56:03

标签: audio speech-recognition signatures

我如何区分两个人说话?如果有人说“你好”然后另一个人说“你好”我应该在音频数据中寻找什么样的签名?周期性?

非常感谢能够回答此问题的任何人!

4 个答案:

答案 0 :(得分:12)

这个问题的解决方案在于数字信号处理(DSP)。说话人识别是一个复杂的问题,它使计算机和通信工程技术携手并进。大多数说话人识别技术需要通过机器学习进行信号处理(通过扬声器数据库进行训练,然后使用训练数据进可遵循的算法大纲 -

  1. 以原始格式录制音频。这用作需要处理的数字信号
  2. 对捕获的信号应用一些预处理例程。这些例程可以简单地用信号归一化,或过滤信号去除噪声(使用带通滤波器来处理人类语音的正常频率范围。带通滤波器可以在使用低通和高通滤波器组合创建。)
  3. 一旦确定捕获的信号几乎没有噪声,特征提取阶段就开始了。用于提取语音特征的一些已知技术是 - 梅尔频率倒谱系数( MFCC ),线性预测编码( LPC )或简单 FFT < / strong>功能。
  4. 现在,有两个阶段 - 培训和测试
  5. 首先,系统需要在不同扬声器的语音功能之前进行训练才能区分它们。为了确保正确计算特征,建议必须收集来自扬声器的几个(> 10个)语音样本用于训练目的。
  6. 可以使用不同的技术(如神经网络或基于距离的分类)进行训练,以找出不同发言者的声音特征的差异。
  7. 在测试阶段,训练数据用于查找位于距被测信号最低距离的语音特征集。可以使用 Euclidean或Chebyshev 距离等不同距离来计算此距离。
  8. 有两个开源实现可以识别说话人 - ALIZE http://mistral.univ-avignon.fr/index_en.html MARF http://marf.sourceforge.net/

    我知道回答这个问题有点晚了,但我希望有人觉得它有用。

答案 1 :(得分:2)

即使是语音和信号处理方面的专家,这也是一个非常难的问题。此页面提供了更多信息:http://en.wikipedia.org/wiki/Speaker_recognition

一些建议的技术起点:

  

以往的各种技术   处理和存储声纹包括   频率估计,隐马尔可夫   模型,高斯混合模型,   模式匹配算法,神经网络   网络,矩阵表示,矢量   量化和决策树。一些   系统也使用“反扬声器”   技术,如队列模型,和   世界模特。

答案 2 :(得分:0)

只有两个人可以区分,如果他们说出相同的单词或短语会使这更容易。我建议从简单的事情开始,只根据需要增加复杂性。

首先,我会尝试数字波形的样本计数,按时间和幅度分组,或者(如果你有方便的软件功能)整个话语的FFT。我首先考虑一个基本的建模过程,例如线性判别(或任何你已经可用的)。

答案 3 :(得分:0)

另一种方法是使用麦克风阵列并区分声源的位置和方向。我认为这是一种更简单的方法,因为位置计算比从单声道或立体声源分离不同的扬声器要复杂得多。