java - 使用java从wav文件中提取人声

标签 java algorithm signals javasound

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

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

我正在使用 FFT.javaComplex.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/

相关文章:

java - 在 Java 中调用该类的任何方法之前调用方法

c++ - 生成对象 vector 的所有可能排列

python - 未排序列表与线性和二进制搜索

linux - 手动触发正在等待信号的休眠 bash 脚本

java - 信号量如何阻塞和解除阻塞

java - 无法打开事务 : ConnectionWrapper is not visible from class loader 的 Hibernate session

java - 捕获异常后请求输入

java - 如何连接到 Docker Swarm 中的 Postgresql 服务?

algorithm - 计算交叉点的高效数学算法

c++ - 关于 Boost Signals2,没有名为 'apply' 的类模板