我想将音频文件(.wav格式)拆分为32毫秒,每帧采样频率为16毫秒,通道数为1(单声道),pcm信号,样本大小= 93638。我正在使用以下代码来读取我的wave文件,该文件提供了一个存储在data2数组中的数组。可以告诉我如何从这个开始 - :
import java.io.ByteArrayOutputStream;
import java.io.File;
import javax.sound.sampled.AudioFileFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
public class AudioFiles
{
public static void main(String[] args)
{
String file = "D:/p.wav";
int i;
AudioFiles afiles = new AudioFiles();
byte[] data2 = afiles.readWAVAudioFileData(file);
for(i=0;i<data2.length;i++)
{
System.out.format("\t"+data2[i]);
}
System.out.printf("\n%d",data2.length);
}
public byte[] readWAVAudioFileData(final String filePath)
{
byte[] data = null;
try {
final ByteArrayOutputStream baout = new ByteArrayOutputStream();
final AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File(filePath));
AudioSystem.write(audioInputStream, AudioFileFormat.Type.WAVE, baout);
audioInputStream.close();
baout.close();
data = baout.toByteArray();
} catch (Exception e) {
e.printStackTrace();
}
return data;
}
}
答案 0 :(得分:0)
在16kHz采样率下,每毫秒将有16个样本。因此,每个32ms帧将是32 * 16 = 512个单声道样本。乘以每个样本的字节数(通常为2或4),这将是每帧的字节数。