gpt4 book ai didi

java - 将 16 位 PCM Wave 数据转换为 float 的正确方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:51:29 33 4
gpt4 key购买 nike

我有一个 16 位 PCM 格式的波形文件。我在 byte[] 中获得了原始数据和一种提取样本的方法,我需要它们采用浮点格式,即 float[] 来执行傅里叶运算转变。这是我的代码,这看起来对吗?我在 Android 上工作,所以 javax.sound.sampled 等不可用。

private static short getSample(byte[] buffer, int position) {
return (short) (((buffer[position + 1] & 0xff) << 8) | (buffer[position] & 0xff));
}

...

float[] samples = new float[samplesLength];
for (int i = 0;i<input.length/2;i+=2){
samples[i/2] = (float)getSample(input,i) / (float)Short.MAX_VALUE;
}

最佳答案

我有一个类似的解决方案,但恕我直言,更简洁一些。不幸的是,据我所知,没有好的库方法:*这假设偶数字节是低字节

private static float[] bytesToFloats(byte[] bytes) {
float[] floats = new float[bytes.length / 2];
for(int i=0; i < bytes.length; i+=2) {
floats[i/2] = bytes[i] | (bytes[i+1] << 8);
}
return floats;
}

关于java - 将 16 位 PCM Wave 数据转换为 float 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4630221/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com