在处理一些用户上传的音频的时候,往往根据用户的设备不通,文件格式难以统一,尤其是涉及到算法模型相关的,更是令人头疼,这里提供两种思路解决这个问题。
不借助三方库
这种采用的是javax.sound.sampled下的包来实现,缺点是需要预先知道目标的采样率等信息。
工具类
import com.example.phoneme.constant.WavConstant;
import lombok.extern.slf4j.Slf4j;
import javax.sound.sampled.*;
import java.io.*;
import java.util.Arrays;
@Slf4j
public class WavUtils {
public static byte[] toPCM(byte[] src) {
if (src.length > 44) {
return Arrays.copyOfRange(src, 44, src.length);
}
return new byte[0];
}
public static byte[] convertTo16kHzMono16bitPCM(byte[] audioData,int sampleRate,int sampleSizeBits,int channels,boolean signed,boolean bigEndian) {
try{
// 创建输入字节数组流
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(audioData);
// 创建目标音频格式
AudioFormat targetFormat = new AudioFormat(WavConstant.SAMPLE_RATE, WavConstant.BIT_DEPTH, WavConstant.CHANNELS

本文介绍了在处理用户上传音频时,如何使用Java的javax.sound.sampled库进行格式转换,以及利用ffmpeg命令行工具实现更灵活但依赖性更强的音频转换过程,讨论了两者的优势和局限性。
最低0.47元/天 解锁文章
474

被折叠的 条评论
为什么被折叠?



