如何将mp3转换成wav(将mp3格式的音频转换为采样率8k的wav)最近系统上需要增加一个功能,就是测试我们系统的ASR识别引擎,这就需要上传一段音频,然后我们返回识别后的文字,但是我们的识别引擎需要采样率16k,格式为wav的音频文件,但是我们又不能限定用户上传的录音格式,所以需要我们在后台转换一下格式,然后再去识别 。做这个功能时候,发现网上的资料真的很少,所以,只能安全上网了,在外面找到了方法 。1.1 引入jar:javazoomjlayer1.0.11.2 工具类代码:public boolean toWav(String inputFilePath, String outputFilePath) {Converter aConverter = new Converter();try {aConverter.convert(inputFilePath, outputFilePath);} catch (JavaLayerException e) {e.printStackTrace();return false;}return true;}1.3 测试类:public static void main(String args[]) {String filePath = "C:\\data\\hellowordread.pcm";&n百思特网bsp;String targetPath = "C:\\data\\111333.wav";toWav(filePath,targetPath);}还是非常简单哦 。public void toStandardWav( String inputFilePath, String outputFilePath){try {byte[] bytes = Files.readAllBytes(new File(inputFilePath).toPath());WaveFileReader reader = new WaveFileReader();AudioInputStream audioIn = reader.getAudioInputStream(new ByteArrayInputStream(bytes));AudioFormat srcFormat = audioIn.getFormat();int targetSampleRate = 8000;AudioFormat dstFormat = new AudioFormat(srcFormat.getEncoding(),targetSampleRate,srcFormat.getSampleSizeInBits(),srcFormat.getChannels(),srcFormat.getFrameSize(),srcFormat.getFrameRate(),srcFormat.isBigEndian());System.out.println(audioIn.getFrameLength());AudioInputStream convertedIn = Au百思特网dioSystem.getAudioInputStream(dstFormat, audioIn);File file = new File(outputFilePath);WaveFileWriter writer = new WaveFileWriter();writer.write(convertedIn, AudioFileFormat.Type.WAVE, file);} catch (Exception e) {e.printStackTrace();}}总结经过上面代码,我们就可以支持常用的音频格式进行ASR识别引擎的测试!本文地址: