我想区分音频文件中的男声和女声并将它们分开。作为输出,我想将两种声音分开。你能帮我吗,编码可以用Java还是C++完成?
最佳答案
这可能是一个非常复杂的问题,类似于编写自己的语音识别(或识别)算法。
您首先需要将音频转换为频域,这是使用Fast Fourier Transform完成的。
对于您进行FFT的每个时间片,这将为您提供频率及其幅度的列表。您将需要以某种方式通过分析谐波来检测基音。 2次和3次谐波将最清晰。很难弄清它们是哪些谐波,尤其是背景噪声和人们的声音之间的自然差异(就哪些谐波最大)而言。然后,您可以根据您猜出的基本音调,尝试确定说话者是男性还是女性。
请记住,在语音的许多部分(例如,“s”,“t”等)中,没有声音,只有噪音。它需要非常智能。
希望这能为您指明正确的总体方向。
注意:如果两个声音同时出现,并且您希望将它们清晰地分开,那么这将无济于事。我不相信任何人还可以解决这样的问题。
关于audio - 如何从音频文件中拆分男性和女性声音(使用C++或Java),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/605586/