首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我需要将音频文件从μ-law转换为PCM。

我需要将音频文件从μ-law转换为PCM。
EN

Stack Overflow用户
提问于 2017-07-06 16:37:10
回答 2查看 2.1K关注 0票数 2

我需要将wav文件从格式1转换为格式2

格式1 :μ-law,8000 64,64 kbps,mono

格式2 :容器WAV编码PCM速率16K样例格式16位通道单通道

下面是代码片段:

代码语言:javascript
复制
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:到μ-law

EN

回答 2

Stack Overflow用户

发布于 2017-12-06 15:42:41

下面的代码为我工作--

代码语言:javascript
复制
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();
        }
票数 2
EN

Stack Overflow用户

发布于 2017-08-29 06:40:02

您需要使用AudioSystem并将格式转换和音频写入分为两个不同的步骤:

代码语言:javascript
复制
final File file = new File("audio_before_conversion.wav");
// open the audio stream
final AudioInputStream pcmStream8k = AudioSystem.getAudioInputStream(file);
// specify target format
final AudioFormat targetFormat = new AudioFormat(16000, 16, 1, true , true);
// this converts your audio stream
final AudioInputStream pcmStream16k = AudioSystem.getAudioInputStream(targetFormat, pcmStream8k);
// this writes the audio stream
AudioSystem.write(pcmStream16k, AudioFileFormat.Type.WAVE, new File("audio_after_conversion.wav"));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44954593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档