使用java从wav文件中提取人类的声音

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

音频.wav文件可能有3到4个声音,如狗,猫,音乐和人类.我将必须识别人类的声音,然后从音频.wav文件中删除该部分.

我正在使用FFT.javaComplex.java.

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

现在的问题是如何从返回的Complex数组中提取人类的声音字节模式…有没有人知道我可以如何实现这一点?

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

解决方法

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

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

您可能尝试的一个可能的捷径是将输入信号通过诸如AMBE的低比特率声码器进行解码,然后将原始信号的质量与编码/解码的信号进行比较.这些声码器被设计为以不能充分代表非言语声音为代价,以高质量高度压缩人类言语.

相关文章

Java中的String是不可变对象 在面向对象及函数编程语言中,不...
String, StringBuffer 和 StringBuilder 可变性 String不可变...
序列化:把对象转换为字节序列的过程称为对象的序列化. 反序...
先说结论,是对象!可以继续往下看 数组是不是对象 什么是对...
为什么浮点数 float 或 double 运算的时候会有精度丢失的风险...
面试题引入 这里引申出一个经典问题,看下面代码 Integer a ...