我需要将WAV文件从 FORMAT 1 转换为 FORMAT 2

格式1:
μ律,8000Hz,64 kbps,单声道

格式2:
集装箱WAV
编码PCM
速率16K
样本格式16位
channel 单声道

以下是代码段:

File file = new File("audio_before_conversion.wav");
AudioFormat audioFormat = new AudioFormat(16000, 16, 1, true , true);
AudioInputStream audioInputStream1 = new AudioInputStream(
     new FileInputStream(file), audioFormat, numFrames);
AudioSystem.write(audioInputStream1, Type.WAVE,
     new File("audio_after_conversion.wav"));

问题:
但是,这不起作用。它会发出一些噪音,也减少了我的音频文件长度。

编辑1:μ律到μ律

最佳答案

以下代码对我有用-

File sourceFile = new File("<Source_Path>.wav");

        File targetFile = new File("<Destination_Path>.wav");

        AudioInputStream sourceAudioInputStream = AudioSystem.getAudioInputStream(sourceFile);


        AudioInputStream targetAudioInputStream=AudioSystem.getAudioInputStream(AudioFormat.Encoding.PCM_SIGNED, sourceAudioInputStream);
        System.out.println("Sample Rate1 "+targetAudioInputStream.getFormat().getFrameRate());
    AudioFormat targetFormat = new AudioFormat(new AudioFormat.Encoding("PCM_SIGNED"), 16000, 16, 1, 2, 8000, false);



        AudioInputStream targetAudioInputStream1 = AudioSystem.getAudioInputStream(targetFormat, targetAudioInputStream);
        System.out.println("Sample Rate "+targetAudioInputStream1.getFormat().getFrameRate());

        try {
            AudioSystem.write(targetAudioInputStream1, AudioFileFormat.Type.WAVE, targetFile);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

关于java - 我需要将音频文件从μ律转换为PCM,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44954593/

10-15 11:26