如何读取在Java中压缩的.wav音频文件?

问题描述 投票:-1回答:1

我想读这是从下采样到22050Hz的一个8000Hz的音频文件。缓冲区大小是512 22050Hz的。是否有这个或任何解决方案的任何其他方法来读取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);
      }
    }
}

预期的结果是在缓冲器照例获得的值。

java audio signal-processing bufferedreader wav
1个回答
1
投票

这个问题也许是你没有使用Java来下采样音频。 或

下采样.WAV使用Java,然后检查其工作。对于Java-based downsamplingthis很好的参考

要么

重新取样.WAV使用第三方库和测试。参考的Re-sample using third-party library

© www.soinside.com 2019 - 2024. All rights reserved.