为什么在 VGGish 中使用 32768 作为常量来归一化 wav 数据?

Why is 32768 used as a constant to normalize the wav data in VGGish?

我正在尝试了解代码为 VGGish 所做的事情,但我遇到了一段我不太理解的内容。在 vggish_input.py 中有这个:

def wavfile_to_examples(wav_file):
  """Convenience wrapper around waveform_to_examples() for a common WAV format.
  Args:
    wav_file: String path to a file, or a file-like object. The file
    is assumed to contain WAV audio data with signed 16-bit PCM samples.
  Returns:
    See waveform_to_examples.
  """
  wav_data, sr = wav_read(wav_file)
  assert wav_data.dtype == np.int16, 'Bad sample type: %r' % wav_data.dtype
  samples = wav_data / 32768.0  # Convert to [-1.0, +1.0]
  return waveform_to_examples(samples, sr)

常数32768从何而来,除以如何将数据转化为样本?

我发现这个用于转换为 -1 和 +1,但不确定如何将其与 32768 桥接。

https://stats.stackexchange.com/questions/178626/how-to-normalize-data-between-1-and-1

32768 是 2^15。 int16 的范围是 -32768 到 +32767。如果您将 int16 作为输入并将其除以 2^15,您将得到一个介于 -1 和 +1 之间的数字。