生成音频波形

这篇文章更多的是关于澄清,而不是关于实现某种音频波形算法。 我已经阅读了大量关于这个主题的文章(包括SO和网络上的文章),以下是我收集到的内容:

  • 在16位WAV的上下文中,我想每两个字节读取一个short ,这将导致介于-32768到32767之间的值。
  • 采样率为44.1kHz时,每一秒钟的音频采样数为44000。
  • 这很简单,但我有以下问题:

  • 以单声道渲染的WAV只有一个通道,即每帧两个字节的信息。 在立体声中,这成为四个字节的信息。 在我的情况下,我不需要显示两个频道,所以我只需跳过正确的频道并只读取左侧的频道? 我读过的一些解决方案提到了将左右声道结合起来,但我不确定这是否是必需的。
  • 假设我有一个长达两秒的音频文件,另一个长达三十秒的音频文件。 如果我需要抓取最少800个样本来表示波形,则会沿着文件长度抓取800个样本,引入精度问题,例如(44,000 * 2) / 800 (两个第二音频文件)和(44,000 * 30) / 800为第三十二音频文件。
  • 一个解释将真正感激!


    这超出了我的专业领域,但我会放弃它。

    据我所知,你可能会跳过一些样本并保持合理的准确性 - 如果你跳过43 kHz文件中的每一个其他样本,就好像你以22.05 kHz记录了原始样本。 但是,根据维基百科,当您的采样频率小于您正在采样的某个声音组件的频率的两倍时,您会遇到准确性问题。 除非你的音频中有高调的铃铛和cy,否则这在22.05 kHz时可能不是问题。 但是如果你每30秒只抽样800次,那么处理器官的最低音就不足以处理。

    假设您每秒采样800次,并且800赫兹的声音(接近G或G#的高音C以上)。每次采样时,您都将获得完全相同的波形。 您正在采样的波浪中的这个位置可能是峰值点,或者它可能是一个低点。 不经常抽样,你不可能知道。

    至于是否可以只采样一个频道,取决于您是否可以忽略其他频道。 想象一下立体声文件,右边有声音,左边有音乐。 他们将有不同的波模式。 如果您可以忽略音乐,那么您可以右取样并忽略左侧。 如果你需要两者,那么你显然需要对两者进行抽样。

    链接地址: http://www.djcxy.com/p/33869.html

    上一篇: Generating Audio Waveforms

    下一篇: How to make waveform rendering more interesting?