gpt4 book ai didi

ios - 了解音频的帧/样本

转载 作者:行者123 更新时间:2023-12-03 02:29:35 27 4
gpt4 key购买 nike

我正在尝试理解这个名为“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,当 block 运行时, frames是 1024。如果我正确理解了整个音频内容,则每次运行此 block 时,它都会提供麦克风可以捕获的所有频率的快照,从最小到最大赫兹。因此,如果在 44100 处对整个事物进行采样,则意味着整个频谱将被分成 44100 个切片。

不是,但假设最小频率为 0Hz,最大频率为 22KHz,切片 0 表示 0Hz 的幅度,切片 44099 表示 22KHz,即数组 audio[0] = 0Hzaudio[44099] = 22KHz , 对?

然后我测量了 block 运行的时间, block 在 0.023 秒内被调用一次。为什么?这个数字是不是很慢?

这个数字对我来说没有意义。不应该以极快的速度调用该 block ,以便在短时间内对整个频谱进行采样吗?

最佳答案

If I understood the whole audio thing correctly, every time this block runs it will deliver something like a snapshot of all frequencies the microphone can capture, from the minimum to the maximum hertz.



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

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

image from Wikipedia - https://en.wikipedia.org/wiki/File:Sampled.signal.svg

此数据中没有音频频率的直接表示。可以使用 Fourier transform 将时域样本 block 转换为频域表示。 ,但解释这一点超出了我在一个答案中可以合理地做的范围。

关于ios - 了解音频的帧/样本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34257434/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com