如何使用 java-openal 处理音频 (wav)

How to process audio (wav) using java-openal

我正在尝试从 .wav 文件中获取更多信息 例如,使用分贝或 RMS 将 .wav 切割成碎片。 或提高 .wav 的分贝 如果我也能得到频率信息就完美了。 .wav 是单声道。

我可以使用 urish/java-openal 播放我的 .wav。由 Uri Shaked 创建。 我会查看 OpenAL 文档吗? 还是我应该找另一个音频库? 我更喜欢 Java 而不是 C。我不擅长 C.

首先使用一些库打开 WAV 文件并用 PCM 格式的原始音频波填充一个数组...请参阅 Reading wav file in Java...WAV 格式很简单,因此您可以编写您自己的代码来解析 WAV 文件并查看 44 字节 header 和 PCM 音频有效负载,请参阅下面的 WAV 规范链接

一旦你有了整数数组,我建议你简单地打印到控制台......根据你发送整数数组的位置,你可能需要先将它转换成浮点数......通常整数从 0 变化到 2 的某个幂,例如 2^16 - 1 ... 通常您只会对这些整数的一小部分感兴趣,而不是整个文件...这称为 window 个样本,其中每个整数都是一个已经从其模拟源数字化的源音频样本,例如从麦克风转换为离散整数,以表示瞬间音频曲线的高度

通常为了获取频率,您将数组或数组的一部分发送到 FFT 调用中……这会将信号从时域转换为频域……它既不会丢失也不会在期间获取信息该变换...一旦进入频域,您就可以将其发送到反向,即进行逆变换以获得原始时域信号... here is how to parse the frequency domain data

请注意,您可以使用命令行工具 FFMEG 对音频(和视频)进行大量操作...它也可以作为一个库使用,您可以从您的代码中调用(各种语言)

OpenAL 是用于渲染音频或从麦克风捕获音频的好库

祝你好运,欢迎来到 DSP 的世界

这里有一些 WAV 规范的详细信息

http://tiny.systems/software/soundProgrammer/WavFormatDocs.pdf http://soundfile.sapp.org/doc/WaveFormat/ http://www.labbookpages.co.uk/audio/javaWavFiles.html https://blogs.msdn.microsoft.com/dawate/2009/06/23/intro-to-audio-programming-part-2-demystifying-the-wav-format/ http://soundfile.sapp.org/doc/WaveFormat/
http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/WAVE.html http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/Samples.html http://soundfile.sapp.org/doc/WaveFormat/#克雷格@ccrma.stanford.edu http://unusedino.de/ec64/technical/formats/wav.html http://www.drdobbs.com/database/inside-the-riff-specification/184409308 http://www.gamedev.net/page/resources/_/technical/game-programming/loading-a-wave-file-r709 http://www.topherlee.com/software/pcm-tut-wavformat.html http://www.labbookpages.co.uk/audio/javaWavFiles.html http://www.johnloomis.org/cpe102/asgn/asgn1/riff.html