我正在做一个项目,我必须使用 java 从音频 .wav 文件中提取人声。
音频 .wav 文件可能包含 3 到 4 种声音,例如狗、猫、音乐和人声。我将必须识别人声,然后从音频 .wav 文件中提取该部分。
我正在使用 FFT.java和 Complex.java .
现在我已经编写了一个 AudioFileReader 类,它从硬盘驱动器读取 audio.wav 文件,然后将其转换为字节数组。然后使用上面提到的 FFT.java 和 Complex.java 来应用 FFT.fft(bytesArray),这会返回 Complex 数组;
现在的问题是如何从返回的 Complex 数组中提取人声字节模式...有谁知道我如何实现这一点?
编辑:我们假设一个非常简单的 audio.wav 文件。例如,猫声后无声,人声后无声,狗声后无声等。不能混音。
最佳答案
我认为处理此类问题的标准方法是将输入信号转换为倒谱或梅尔倒谱表示,然后使用特征空间的系数输入分类器。有许多研究论文基于这种基本方法讨论了解决这类问题的方法,例如:
http://www.ics.forth.gr/netlab/data/J17.pdf
您可以尝试的一种可能的捷径是将输入信号通过低比特率声码器(例如 AMBE),然后解码,并将原始信号的质量与编码/解码信号的质量进行比较。这些声码器旨在以无法充分表示非语音的声音为代价,高度压缩人类语音,使其具有一般到良好的质量。
关于java - 使用java从wav文件中提取人声,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5416167/