![](/img/trans.png)
[英]how to send .wav audio files using socket and serversocket class in java
[英]How to read compressed .wav audio files in Java?
我想读取从22050Hz降频到8000Hz的音频文件。 对于22050Hz,缓冲区大小为512。 是否有解决此问题的方法或任何其他方法来读取Java中经过降采样的.wav文件?
读取音频文件的方法是使用http://www.labbookpages.co.uk/audio/javaWavFiles.html中的ReadExample类实现的,该类对于22050Hz原始音频正常工作。
当我使用Python的librosa对音频进行降采样并以8000Hz的频率写入文件时,使用ReadExample方法读取该文件时,它抛出了异常-
Error :WavFileException: Compression Code 3 not supported WavFileException: Compression Code 3 not supported
Process finished with exit code -1
代码是-
import java.io.*;
public class ReadExample
{
public static void main(String[] args)
{
try
{
WavFile wavFile = WavFile.openWavFile(new File(args[0]); //22050Hz filepath
wavFile.display();
int numChannels = wavFile.getNumChannels(); //numChannels = 1
double[] buffer = new double[512 * numChannels];
int framesRead;
double min = Double.MAX_VALUE;
double max = Double.MIN_VALUE;
do
{
framesRead = wavFile.readFrames(buffer, 512);
for (int s=0 ; s<framesRead * numChannels ; s++)
{
if (buffer[s] > max) max = buffer[s];
if (buffer[s] < min) min = buffer[s];
}
}
while (framesRead != 0);
wavFile.close();
System.out.printf("Min: %f, Max: %f\n", min, max);
}
catch (Exception e)
{
System.err.println(e);
}
}
}
预期结果是照常获取缓冲区中的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.