我可以获得unsigned 32 bit ints from a WAV file的数组。
65509
65402
65518
65520
65521
...
如何将这些整数(或原始字节)转换为流的音量级别?
答案 0 :(得分:1)
Specification表示样本可以存储为无符号字节或有符号整数。如果你只是将它们作为二进制数据传递 - 这无关紧要。信息就是信息。要将该数据解释为您需要知道的音量级别,BitsPerSample会显示该数据。
所以有样本流,但有频道。所以你需要每秒钟,将立体声转换为单声道。再次,如果你只想玩 - 只需配置播放器使用立体声。
对我来说,很难判断ReadRawSample是允许访问字节流,还是访问特定块的行数据的bytearray?然后你需要知道已处理的内容。但如果你确定那是实际的样本 - 那你就知道了。
Here is sample code that plays sound。您可以使用波形样本填充out
缓冲区,而不是从输入二进制流中读取数据。如果这不是您打算做的 - 您可以检查您的样品是否听起来如您所愿。它在不久前帮助了我很多。
希望它对你有所帮助。
答案 1 :(得分:1)
您可能希望更准确地定义音量级别以获得特定公式。 Loudness of PCM stream问题/答案给出了一个受欢迎的选项。
顺便说一下,你的32位$('a').attr('deletevalue', 2);
看起来并不好看。对于16位/样本整数,样本通常以零为中心(也就是说,您将它们视为有符号整数!)并且您的问题中的值序列更像是16位PCM值错误地转换为32位忽略标志位。
无论哪种方式,您通常都有一个样本窗口,然后将上面引用的公式应用于值以汇总到音量级别。滑动窗口可以随时间变化音量。
这个答案提到了另一个规范/算法:get loudness level from raw data received from microphone in DirectShow。