[英]how to do framing for a given wave file in java
我想将我的音频文件(.wav格式)分割为32毫秒的帧,每个采样频率为16khz,通道数为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;
}
}
以16kHz的采样率,每毫秒将有16个采样。 因此,每个32ms帧将是32 * 16 = 512个单采样。 乘以每个样本的字节数(通常为2或4),即每帧的字节数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.