我正在尝试显示波形(我将自己记录在麦克风中)。

将数据保存在字节数组中。

另外,我的采样率为44100,采样大小为 16bit

我的数组仅包含正值,但是在某些示例中,我看到该值在-1.0到1.0之间。这是为什么?
另外,如果我的样本大小为16位并且我正在使用字节数组-我需要进行转换。
到目前为止,这是我尝试做的事情:

    double[] x = new double[Arc.Buffer.Count / 2];
    byte[] y = new byte[2];

                for (i = 0; i < Arc.Buffer.Count; i++)
                {
                    Array.Copy(Arc.Buffer.ToArray(), 2*i, y, 0, 2);
                    x[i] = (double)((y[1] << 8) | (y[0] & 0x00FF));
                }

但是在这段代码之后,我的x数组包含巨大的值(而不是-1.0到1.0)。

我是这个学科的新手,我将不胜感激! (:

最佳答案

假设这是PCM数据,则可能有多种WAV / RIFF格式。如果样本大小为16位,则正在读取的值将在-32,768和32,767之间进行签名。

快速搜索“wav riff格式”后发现a resource与解析数字音频数据有关。

关于c# - C#波形-如何显示麦克风数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32910358/

10-17 02:47