目标:微信录音amr格式转换成阿里能语音识别的wav格式文件
原理:使用ffmpeg工具对音视频格式进行转换
引入pom依赖
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <!-- jave核心包 --> <dependency> <groupId>ws.schild</groupId> <artifactId>jave-core</artifactId> <version>2.4.6</version> </dependency> <!-- window64位 ffmpeg --> <dependency> <groupId>ws.schild</groupId> <artifactId>jave-native-win64</artifactId> <version>2.4.6</version> </dependency> <!-- linux64位 ffmpeg --> <dependency> <groupId>ws.schild</groupId> <artifactId>jave-native-linux64</artifactId> <version>2.4.6</version> </dependency>
|
代码示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| File source = new File("D:\\1.amr"); //源文件 File target = new File("D:\\1.wav"); //目标文件 AudioAttributes audio = new AudioAttributes(); //设置解码格式,比特率,位数,声道等信息 audio.setCodec("pcm_s16le"); audio.setSamplingRate(new Integer(16000)); audio.setChannels(new Integer(1)); EncodingAttributes attrs = new EncodingAttributes(); attrs.setFormat("wav"); attrs.setAudioAttributes(audio); Encoder encoder = new Encoder(); try { MultimediaObject multimediaObject = new MultimediaObject(source); encoder.encode(multimediaObject, target, attrs); } catch (IllegalArgumentException | EncoderException e) { e.printStackTrace(); }
|
使用命令直接转换
ffmpeg-amd64.exe -i 1.amr -acodec pcm_s16le -ac 1 -ar 16000 1.wav