python把多个人声分离_一段音频中判断多个人声?

谢邀,这个问题有几种可能的解读:

1)只需要判断人数,不需要知道他们分别在什么时间说话(number of speakers)

2)判断人数并且知道他们说话的时间点(diarization)

3)判断人数并且分离每个人的说话声(separation)

除此之外还有很多需要考虑的因素。录音环境,比如近场或者远场,单通道或者多通道,也是非常重要的信息;说话人信息也可能影响方法,比如只要求判断事先知道的某些说话人(speaker dependent)或者对任意说话人都要能判断(speaker independent);说话人之间的重叠(overlap)长度也可能影响“判断有几个人在说话”的时间区间(0.3秒内有几个人?1秒内有几个人?等等)。

从问题描述来看我就默认是近场、单通道、说话人无关的情况了(如果不准确还请告知)。多通道的情况会简单一些,因为可以提取说话人的空间信息来做判断。

1)如果只需要知道人数,一个简单的分类器一般就能满足需求,其效果类似一个多说话人的vocal activity detection (VAD)。

2)如果需要知道“谁在什么时间讲话”,问题就变成了speaker diarization问题,这方面文献很多但我不大了解,就不敢乱说了。我所知道的方法大多基于说话人的i-vector或某些能体现说话人信息的特征。

3)如果要求分离出每个人的说话声,就变成了多说话人分离问题(multi-talker separation)。以目前的发展,在单通道情况一般3人及以下的音频里,分离效果已经不错了,并且新的系统已经能够通过判断有几个人来调整输出(比如只有2个人说话,那么3个输出里有1个输出会是静音)。我们最近的一些工作也在持续提高这个问题下系统的性能。

你可能感兴趣的:(python把多个人声分离)