怎么区分两个人说话?就像有人说“你好”然后另一个人说“你好”我应该在音频数据中寻找什么样的签名?周期性?
非常感谢能回答这个问题的人!
怎么区分两个人说话?就像有人说“你好”然后另一个人说“你好”我应该在音频数据中寻找什么样的签名?周期性?
非常感谢能回答这个问题的人!
这个问题的解决方案在于数字信号处理(DSP)。说话人识别是一个复杂的问题,它使计算机和通信工程齐头并进。大多数说话人识别技术都需要使用机器学习进行信号处理(通过说话人数据库进行训练,然后使用训练数据进行识别)。可以遵循的算法大纲 -
有两个开源实现可以识别说话者 - ALIZE:http ://mistral.univ-avignon.fr/index_en.html和MARF:http ://marf.sourceforge.net/ 。
我知道回答这个问题有点晚了,但我希望有人觉得它有用。
这是一个极其困难的问题,即使对于语音和信号处理专家来说也是如此。此页面包含更多信息: http ://en.wikipedia.org/wiki/Speaker_recognition
以及一些建议的技术起点:
用于处理和存储声纹的各种技术包括频率估计、隐马尔可夫模型、高斯混合模型、模式匹配算法、神经网络、矩阵表示、向量量化和决策树。一些系统还使用“反说话者”技术,例如队列模型和世界模型。
另一种方法是使用一组麦克风并区分声源的位置和方向。我认为这是一种更简单的方法,因为位置计算比从单声道或立体声源中分离不同的扬声器要简单得多。
只有两个人来区分,如果他们说的是同一个词或短语,这会更容易。我建议从简单的事情开始,只根据需要增加复杂性。
首先,我会尝试数字波形的样本计数,按时间和幅度或(如果您有方便的软件功能)对整个话语进行 FFT 分箱。我也会首先考虑一个基本的建模过程,例如线性判别(或任何你已经可用的)。