用java可以实现将vox格式音频文件转换成wav格式音频文件,请求指导

ciazealee ciazealee 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
还有想知道,vox文件有文件头吗,网上查了,这方面的信息很少,如果有的话怎么用java读取
以下是自己下的demo

public class Test {

static float sampleRate = 6000.0F; // 每秒的样本数
static int sampleSizeInBits = 4; // 每个样本中的位数
static int channels = 1; // 声道数(单声道 1 个,立体声 2 个)
static boolean signed = true; // 指示数据是有符号的,还是无符号的
static boolean bigEndian = false; // 指示是否以 big-endian 字节顺序存储单个样本中的数据(false 意味着 little-endian)


public static void trans() throws Exception{
File outFile = new File("F:/123.wav");
RandomAccessFile file = new RandomAccessFile("F:/1234123.v3", "r");
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

byte tempBuffer[] = new byte[10000];
while (true) { //读取10000个数据
int cnt = file.read(tempBuffer, 0, tempBuffer.length);
if (cnt > 0) { //保存该数据
byteArrayOutputStream.write(tempBuffer, 0, cnt);
}else {
byteArrayOutputStream.close();
break;
}
}

AudioFormat audioFormat = new AudioFormat(sampleRate, sampleSizeInBits, channels, signed, bigEndian);
byte audioData[] = byteArrayOutputStream.toByteArray();
InputStream byteArrayInputStream = new ByteArrayInputStream(audioData);
AudioInputStream audioInputStream = new AudioInputStream(byteArrayInputStream, audioFormat, audioData.length / audioFormat.getFrameSize());

AudioSystem.write(audioInputStream, AudioFileFormat.Type.WAVE, outFile);
System.out.println("success");
}

/**
* @param args
*/
public static void main(String[] args) throws Exception{
Test.trans();
}

}


关于vox文件有24k和32k的,具体不是很懂,转换完成的文件杂声很大,想请了解这方面的人指导下,怎么才能成功转换,先谢过了!
...全文
评论 4
收藏 已收藏
分享
返回顶部
ciazealee
Java EE 67,535 成员 225,843 内容