繁体   English   中英

了解音频的帧/样本

[英]Understanding frames/samples for Audio

我试图理解这个名为“ The Amazing Audio Engine”的GitHub项目,该项目可简化iOS上的音频处理。

我正在从麦克风捕获并使用此方法:

id<AEAudioReceiver> receiver = [AEBlockAudioReceiver audioReceiverWithBlock: ^(void *source, const AudioTimeStamp *time, UInt32 frames, AudioBufferList *audio) {
 // Do something with 'audio'
}];

据我所知,库以44100的采样频率采样,当该块运行时, frames为1024。如果我正确地理解了整个音频内容,则每次运行此块时,它都会提供诸如麦克风可以捕获的所有频率的快照之类的信息。 ,从最小到最大赫兹。 因此,如果在44100处对整个样本进行采样,则意味着整个频谱将被切成44100个切片。

不是,但假设最小频率为0Hz,最大频率为22 KHz,切片0将代表0Hz的振幅,切片44099将代表22KHz,换句话说,数组audio[0] = 0Hzaudio[44099] = 22KHz对吗?

然后,我测量了该块运行的时间,并在0.023秒内调用了该块一次。 为什么? 这个数字不慢吗?

这个数字对我来说没有意义。 难道不应该以极快的速度调用该块,这样整个频谱将以较短的间隔及时采样吗?

如果我正确理解了整个音频,那么每次运行此模块时,它都会发出类似麦克风可以捕获的所有频率(从最小到最大赫兹)的快照之类的信息。

没有; 这是不正确的。 音频数据通常在时域而不是频域中表示。

简而言之:将音频视为波形。 每个样本代表该波形在某个时间点的高度。 每秒有44100个这样的样本,样本数组中的每个值代表其中一个。 每秒44100个样本,一个1024个样本的块代表1024/44100 = 0.023秒的音频。

来自Wikipedia的图片-https://en.wikipedia.org/wiki/File:Sampled.signal.svg

此数据中没有直接表示音频的频率。 可以使用傅立叶变换将时域样本块转换为频域表示形式,但是解释这一点超出了我在单个答案中可以合理进行的范围。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM