c# - 在VB/C#中规范Wave文件

标签 c# asp.net vb.net audio wave

我目前有一个项目,该项目可捕获原始数据文件并通过合并wave标题来生成wave文件。但是,该文件需要规范化。导入Audacity并使用规范化效果时,文件将按预期播放。但是我不确定如何在代码中执行此操作。该代码是用VB.net编写的。我找到了这个示例https://markheath.net/post/normalize-audio-naudio,它可以满足我的需求,但是我没有合并NAudio,如果可以的话,我希望避免依赖。我几乎没有使用音频文件的经验,也很少有VB的经验。我不确定要看什么代码会有所帮助,因此如果有人需要引用,我也可以提供到目前为止的代码。
任何帮助表示赞赏。

最佳答案

如该示例所述:

It’s simply amplifying every sample in the file by the largest amount possible without causing any clipping.


当放大的(即按比例缩放的)样本(即值)变得比目标wave format中可表示的最小值/最大值小/大时,就会发生削波。假设格式为16位(带符号)样本,则minimum and maximum values为−32,768和32,767。 (在示例中,这些值被转换为浮点数,大概在-1.0和1.0之间。)
因此,您必须遍历原始数据文件中的样本以找到具有最大绝对值v的样本,然后将所有样本乘以32,767 / v。

关于c# - 在VB/C#中规范Wave文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62945330/

相关文章:

c# - Asp.net 用户登录计数和 LastLogin

jQuery AJAX - Controller 上的数据参数为空

c# - 将自适应卡 JSON 添加到机器人脚本 - C#

asp.net - 如何使用 Web API 实现基于声明的身份验证?

mysql 数据读取器

asp.net - 在 vb.net 中通过反射抛出类型 'E' 的异常

html - vb.net 获取 HTML 元素的样式

c# - CsvHelper 在糟糕的日期上呕吐(关于使用 Configuration.Seed() 进行的 EF 迁移)

c# - .MakeArrayType() 和 .MakeArrayType(1) 的区别

c# - 带参数的MySQL选择查询