c# - 如何在c#中获取声音数据样本值

标签 c# audio sampling bitconverter

我需要获取 WAV 文件的声音数据的样本值,以便通过使用这些样本值我需要每秒获取该声音数据的振幅值。

重要提示:有没有办法使用Naudio库或wmp库获取音频数据样本值?

我以这种方式获取示例值:

byte[] data = File.ReadAllBytes(File_textBox.Text);
            var samples=new int[data.Length];
            int x = 0;
            for (int i = 44; i <data.Length; i += 2)
            {
                samples[x] = BitConverter.ToInt16(data, i);
                x++;
            }

但我得到的负值更像是 (-326260)。那么这是对还是错? 我的意思是样本值是否可以为负数,如果它是正确的,那么它意味着声音还是静音?

最佳答案

NAudio 可以为您做这件事,它在库中(我认为它是 WaveStream 或 WaveReader 类,或类似的东西)。如果开销不是太大,我可以推荐使用它。

如果你想自己动手,并想处理任意波形文件,你必须阅读 WAV 文件格式,并自己分析标题。

虽然 一般 WAV 文件包含 16 位样本,但它不是必须的,并且根据具体格式,它们可能以小端或大端存储。

header 包含有关采样率、 channel 数、每个样本的位数、每个样本的字节数等信息,这使您可以进行实际数学运算以准确获得一个样本。

关于c# - 如何在c#中获取声音数据样本值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10477697/

相关文章:

c# - 在 C# 中将 DataUrl 转换为图像并写入包含字节的文件

c# - 在 C# 中对同一结果进行多个断言的最佳实践

c# - 注入(inject) IOptions<> 的实例

audio - 我可以使用该网站的 "free"声音文件吗?

python-2.7 - 在sklearn python中处理逻辑回归分类器中的极端不平衡多类

c# - 如何摆脱 Visual Studio 2010 中烦人的代码提示?

java - 为什么在使用Eclipse IDE播放.wav声音文件时出现此错误?

javascript - Howler.js-仅暂停方法使Mut叫静音,实际上不暂停它们

r - 从数据帧进行分层随机抽样

c - 水库采样算法不起作用