【问题标题】:How to normlize audio file in Matlab如何在 Matlab 中标准化音频文件
【发布时间】:2015-01-06 12:12:48
【问题描述】:

我有几个音频文件想在 .-1dB 上进行标准化,不知道该怎么做。 PS:我不是问如何阅读它们,考虑它们都保存在工作区中:A1 A2 A3 etc 更新 感谢 Neil 的评论,这里是两个文件的示例,您可以看到信号不在同一级别,(这在尝试使用任何 PSD 时会导致问题,所以我想获取所有文件就我所知,这称为标准化。我可以在 Audacity 中做到这一点,但在 Matlab 中却不行,因为我不知道它背后的数学原理。

感谢您的帮助

【问题讨论】:

  • 规范化有什么问题?你能展示一下你目前拥有的音频处理代码吗?
  • @Neil 问题是我不知道该怎么做,我的工作空间中的倍数向量需要归一化为 -1dB
  • 请花一些时间来展示您拥有的代码,并提供比“我不知道该怎么做”更多的内容。您对音频规范化了解多少,您知道一个好的答案可以填补哪些知识空白?如果您花时间解释这将使问题更适合 SO,并且更有可能得到您需要的答案。
  • @Neil 我更新了问题

标签: matlab


【解决方案1】:

标准化音频波形涉及:

  • 选择所需的规范。您有更多选择,而不仅仅是最大偏移量,但这是最简单的。如果您的表示是 -1.0 到 1.0 范围内的样本值,那么归一化到 -1dB 实际上是说您希望所有值都在 -0.891 到 0.891 之间(from Wikipedia article on Decibel)

  • 查找当前绝对最大值。您可以使用例如max(abs( A1(:) ) ) 为此

  • 将所有值相乘,使得最大值现在限制为新的最大值。由于大多数原始音频信号使用的表示形式,乘法运算是正确的。

所以,理论上,你想要这样的东西:

A1_norm = A1 * 0.891 / max( abs( A1(:) ) );

【讨论】:

  • 好吧,我会忘记使用 abs() 并因此忽略负值...
猜你喜欢
  • 2017-07-18
  • 2012-01-16
  • 1970-01-01
  • 2014-07-31
  • 2011-12-05
  • 1970-01-01
  • 1970-01-01
  • 2013-09-19
相关资源
最近更新 更多