gpt4 book ai didi

javascript - 如何将 JavaScript 浮点 PCM 音频数组转换为小端字节字符串?

转载 作者:行者123 更新时间:2023-11-28 05:37:05 26 4
gpt4 key购买 nike

我想在 JavaScript 中将音频 float 组转换为字节字符串。通过转换为字节,我需要一个两位数,然后我可以附加到一个字符串,请参阅此示例的输出:

Input: [0.0007124987314455211, 0.0005752402357757092, -0.0010658394312486053, -0.0004562278045341372 ,...]
Output: '\x02\x04\x35...'

但是我得到了 4 位数字。如何正确转换为字节?

function floatToByteString(input){
//first convert to 16 bit int array
var intarray = new Int16Array(input.length);
for (var i = 0; i < input.length; i++){
var s = Math.max(-1, Math.min(1, input[i]));
var newint = s < 0 ? s * 0x8000 : s * 0x7FFF;
intarray[i] = newint;
}

//second: convert 16 bit int array to little endian byte string
var bytestring = "";
for (var i = 0; i < input.length; i++){
var thisint = intarray[i]
var bytel = thisint & 0xff;
var byteb = (thisint >> 8) & 0xff;
bytestring += "\\x"+bytel + "" + byteb
}

return bytestring;
}

最佳答案

您将通过这种方式生成非常大的字符串,其中包含大量不必要的数据。如果它绝对必须是一个字符串,base64 会更好。此外,您的临时 int 数组将使用不必要的内存并减慢速度。

16 位值生成 4 位十六进制值。那么 4 位数字不正是您想要的吗?

关于javascript - 如何将 JavaScript 浮点 PCM 音频数组转换为小端字节字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39275175/

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