10

我正在做一个项目,我必须使用 java 从音频 .wav 文件中提取人声。

音频 .wav 文件可能有 3 到 4 种声音,例如狗、猫、音乐和人。我将不得不识别人声,然后从音频 .wav 文件中提取该部分。

我正在使用FFT.javaComplex.java

现在我编写了一个 AudioFileReader 类,它从硬盘驱动器读取 audio.wav 文件,然后将其转换为字节数组。然后使用上面提到的 FFT.java 和 Complex.java 来应用 FFT.fft(bytesArray),这给了我 Complex 数组作为回报;

现在的问题是如何从返回的 Complex 数组中提取人类声音字节模式......有谁知道我如何能够做到这一点?


编辑:我们假设一个非常简单的 audio.wav 文件。例如,猫的声音然后沉默,人的声音然后沉默,狗的声音然后沉默等。没有声音的混合。

4

3 回答 3

2

我认为处理此类问题的标准方法是将输入信号转换为倒谱或梅尔倒谱表示,然后使用特征空间的系数输入到分类器中。有许多研究论文基于这种基本方法讨论了这类问题的解决方案,例如:

http://www.ics.forth.gr/netlab/data/J17.pdf

您可能会尝试的一种可能的捷径是将输入信号通过低比特率声码器(例如 AMBE),然后解码,并将原始信号的质量与编码/解码信号的质量进行比较。这些声码器旨在以无法充分表示非语音声音为代价,以中等到良好的质量高度压缩人类语音。

于 2011-03-24T14:52:59.790 回答
1

这可以通过人工智能来实现(而且几乎没有)。您可能会研究用于语音识别的 API,但我怀疑它们是否能够支持背景中有噪声的信号。

例如

  • 那是一只猫,还是有人在说“喵”?
  • 是音乐,还是有人在唱“do, re, mi..”?
  • 谁说“波莉想吃饼干”,是人还是鹦鹉?
于 2011-03-24T08:38:04.143 回答
0

嗯,这是一个经典的 AI 问题(机器学习/模式识别)看看Wikipedia 文章

但基本上,您需要将已经分类的数据输入算法,以便它可以学习如何对新数据进行分类。但请注意,100% 的正确性对于该领域的几乎任何事情都是虚幻的,尽管对于您的简单问题它可能是可能的(取决于您对问题的确切定义)

于 2011-03-24T13:49:38.470 回答