将 .caf 文件转换为规范化浮点数组 Objective-C/C

Convert .caf file to normalised floating point array Objective-C/C

我已经设法使用 AVAudioRecorder 以 .caf 格式写入磁盘的线性 PCM 格式录制音频。没问题。

我现在想读取文件并将其转换为规范化的浮点数数组(即每个浮点数介于 -1 和 1 之间)。我尝试了以下方法:

NSData *data = [NSData dataWithContentsOfURL:url];
float *cData = (float *)malloc(data.length);
[data getBytes:cData length:data.length];

这给出了一个浮点数数组(主要在 -1 和 1 之间,但也有一些奇怪的大数字)。这是正确的吗?

您应该使用 Extended Audio File Services Reference 将音频文件读取到 PCM。你得到垃圾的原因是因为你将文件头解释为样本。 API 为您解析所有这些。如果您确实想手动执行此操作,则必须在数据中找到样本的起点,但我建议不要这样做。