gpt4 book ai didi

javascript - 将 PCM 流转换为 Javascript 可读流

转载 作者:行者123 更新时间:2023-11-28 01:14:04 52 4
gpt4 key购买 nike

我正在尝试将 PCM 流转换为可读的 float32Array。我正在尝试使用以下方法进行转换

function parseHexString(str) { 
var result = [];
while (str.length >= 8) {
int16 = parseInt(str.substring(0, 8), 16);
float32 = (int16 / 32767) - 1;
result.push(float32);

str = str.substring(8, str.length);
}

return result;
}

输入(int16)

\x86%\x03%>$\xb1#\x06#8"\xc0!E!\xc5 \xad \xa4 \x97 \xe4 \x1e!/!\x80!\xb5!\xcb!+"u"\x8e"\xd2"\xdd"\xa4"\x98"l"$"3">"<"\x8a"\xc4"\xd9"$#I#@#h#j#8#2#\t#\xbf"\xc1"\xcb"\xd3")#h#t#\x9c#\x8d#?#\x15#\xbb"("\xbc!*!w \r \xa3\x1f2\x1f\x13\x1f\xf1\x1e\xbe\x1e\xd3\x1e\xd4\x1e\xae\x1e\xb1\x1e\x81\x1e\x16\x1e\xda\x1d\x84\x1d\x19\x1d\xfa\x1c\xd2\x1c\x9c\x1c\xb4\x1c\xd0\x1c\xe5\x1cK\x1d\x9b\x1d\xb0\x1d\xd2\x1d\x9d\x1d\x0b\x1d\x90\x1c\xf3\x1bF\x1b\x02...

返回类似这样的内容

[NaN, NaN, -0.9929502243110446, -0.999603259376812, NaN, -0.99954222235786, NaN, -0.9929502243110446, NaN, -0.9929502243110446, NaN, -0.9929502243110446, NaN, -0.9929502243110446, NaN, -0.9929502243110446, NaN, NaN, -0.9929502243110446, NaN, -0.999664296395764, NaN, -0.999877925962096, NaN, NaN, -0.999908444471572, NaN, NaN, -0.999908444471572, NaN, NaN, -0.999877925962096, NaN, NaN,

我不知道为什么我得到 NaN。任何人?我也不确定 PCM 流的格式是否正确

最佳答案

我很乐意在这一点上犯错 - 然而遗憾的是,我对网络套接字的使用仅限于通过网络发送无符号 8 位整数的二进制数据(不是 16 位整数,更不用说梦想直接发送 32 位 float ) -因此,在您的发送端,请确保您的数据得到适当的简化 - 请告诉我网络套接字是否按照您的代码建议处理 16 位整数。同样,在套接字的接收端,您需要通过移位和缝合 4 个 8 位整数实例来恢复 32 位 float 。我用 javascript 编写了代码来在管道的两端执行这些步骤。幸运的是 javascript 将这种拼接隐藏在一起。以下是 Web 套接字如何接收数组缓冲区形式的 8 位整数数组,并将其转换为 32 位类型数组:

socket.binaryType = "arraybuffer";

socket.onmessage = function (e) {

if (e.data instanceof ArrayBuffer) {

var retrieved_buffer_obj = {};

retrieved_buffer_obj.buffer = new Float32Array(e.data);

// now do something with your new floats

}
}

您提到流 - 在我的代码中,它在数据缓冲区级别运行,其中每个缓冲区只是流数据传输的一小部分。

关于javascript - 将 PCM 流转换为 Javascript 可读流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24056758/

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