6

我想区分音频文件中的男性和女性声音并将它们分开。作为输出,我希望将两个声音分开。你能帮我吗?编码可以用 java 还是 c++ 完成

4

5 回答 5

14

这可能是一个非常复杂的问题,类似于编写自己的语音识别(或识别)算法。

您首先将音频转换为频域,这是使用快速傅里叶变换完成的。

对于您进行 FFT 的每个时间片,这将为您提供频率及其幅度的列表。您将需要通过分析谐波来检测基音。2 次和 3 次谐波将最清晰。很难弄清楚它们是哪些谐波,尤其是在背景噪音和人们的声音之间的自然差异方面,哪些谐波最大。然后,您可以尝试通过您猜到的基本音调来确定说话者是男性还是女性。

请记住,在诸如齿音('s'、't'等)的许多语音部分中,没有音调,只有噪音。它需要非常聪明。

希望这能让你朝着正确的方向前进。

注意:如果两个声音是同时的,并且你想干净地分开它们,那么这对你没有帮助。我不相信任何活着的人已经解决了这样的问题。

于 2009-03-03T09:23:33.137 回答
3

我认为这已经成为可能。我刚开始在斯坦福大学和 Andrew Ng 教授一起参加关于机器学习的在线课程,在第一堂课中,他展示了一个演示,其中处理了两个重叠声音的录音并提取了单个声音(与音乐相同)背景和说话的人)。显然,它使用了一种无监督学习算法,可以提取两种底层模式。您可能想查看该课程(这里有该课程的一个版本:http ://www.academicearth.org/courses/machine-learning )

于 2012-10-26T00:35:35.860 回答
3

使这成为可能的一种工具是LIUM spkdiarization。它是用 Java 编写并在 GPL 下可用,它是一种语音识别工具,使用男性、女性和儿童的统计模型。幸运的是,我们提供了模型,您可以使用它而无需标记记录和训练模型。

有关示例,请参见LIUM wiki 的脚本页面,在页面中搜索“性别”。

于 2013-06-09T13:40:26.507 回答
1

我首先要说这是不可能的。语音识别真的非常非常难。

您的问题不清楚 - 声音是否重叠?如果是这样,将它们分开将非常困难。

如果它们是分开的,您更有可能的赌注是拥有大量男性和女性声音的样本,并寻找共同特征(以及以编程方式识别它们的方法)。如果样本记录不干净(如果它们有背景噪音),事情就会变得更加复杂。

您可能会以平均音调逃脱 - 男性的声音通常比女性的声音更深。.

于 2009-03-03T10:05:08.810 回答
0

您要问的是一项艰巨的任务。thomasrutter 写了一些“指针”如何做到这一点 - 但是,我想如果你想在任何地方使用它(在各种音乐中(当然是唱歌)),算法必须非常强大。也许从歌曲中分离(拆分)单个乐器样本开始会更好/更容易。

于 2009-03-03T09:54:34.777 回答