ios - 不同的AVAudioQuality选项对生成的录音有什么影响?

标签 ios swift avfoundation audio-recording

我正在开发的应用程序的一部分涉及音频录制。以下是相关代码:

let settings = [
            AVFormatIDKey: Int(kAudioFormatMPEG4AAC),
            AVSampleRateKey: 12000,
            AVNumberOfChannelsKey: 1,
            AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue]

audioRecorder = try AVAudioRecorder(url: self.audioFilename, settings: settings)

我希望质量尽可能好,但如果可以节省空间,我希望允许用户在设置中更改质量。
不同的价值观实际上是做什么的?随着质量的下降,他们会把文件变小吗?抽样率也一样吗?我看过的很多教程都使用12000左右的采样率,虽然我知道专业录音通常是44100,有理由不使用44100吗?

最佳答案

我将把上面的图形翻译成它在实践中的工作方式[对录制的声音]。
音频采样率影响要记录的频率范围,采样率越高,可能记录的音频频率越高。
该采样数基于用于对声音进行数字化的PCM(脉冲编码调制)。它越高,曲线定义越好(如上图所示)
但在实践中,更好的曲线意味着什么呢?
更好的曲线意味着更详细的高频音频。你可以录制更清晰的声音,特别是在高音频率。
为什么是44100这个数字意味着什么?有没有一种方法可以让你从心理上弄明白,使用较低的采样率(220501110008000)录制的声音会怎么样?
是的,有。
人的耳朵能从20Hhz到20000Hz[一个完美的耳朵,对一个非常年轻的人来说,可以达到20000Hz,例如孩子们]
所有其他成年人类都能听到大约20hz到17500hz(这是平均值)
当我们对声音进行数字化时,如果我们想让它成为最适合人类听觉的声音,我们需要能够对人类耳朵能够听到的全部频率范围进行数字化。从20Hhz到20000Hhz。
简而言之,在不深入讨论PCM工作原理的情况下,数学和实用规则是:“采样率必须是音频的两倍,才能以数字方式记录音频。”
这意味着:为了能够数字记录18000Hhz的高音,你需要36000Hz的采样率(总是双倍的采样率)
这就是为什么第44100个数字是44100:它是人类最大听觉容量的加倍(加上一点点)。
因此,44100的采样率能够在20Hz到22000赫兹的范围内数字化和记录音频频率,这是最大的人类容量之上的,这意味着:一个完美的声音!(*对于我们人类)
如果您将应用程序采样率设置为12000左右,它将允许您录制高达6000Hhz的声音频率。你将失去大部分高音。
例如,电话通话是以8000的数字采样,这使得它能够传输高达4000Hz的声音频率。它很适合说话,但它会错过很多高于4000Hz的高频。因此电话里没有高音。
现在,您可以从心理上了解采样率如何影响最终录制的声音。从4000Hz的电话音质,到15200Hz的任何调频电台,到20000Hz的任何CD音质。
选择所需的最大音频范围,您需要/能够记录,并加倍值:您将知道正确的采样率,您将不得不调整您的应用程序。
你问有没有理由不去44100。这取决于录制的声音的最终效果。对于声音,仅仅是声音,记录人们的谈话,12000已经足够好了:它不像电话那么糟糕,它将记录高达6000Hz的声音频率,这是大多数声音的调子,它将削减所有高于6000Hz的其他更高频率(鸟鸣、分心的声音、金属声音等)。所以12000,比44100更适合录制人声。让我们考虑一个餐厅,所有的饮食噪音和玻璃噪音,记录声音更好一个较低的采样率,消除所有的高音和记录更好的只是声音。
对于音乐,请始终选择44100。
关于文件大小,是的,采样率越低,生成的音频文件就越小。但您使用的是AAC压缩,因此不必担心文件大小:
44100的1分钟AAC记录[2个通道]约为950KB
12000下1分钟AAC录制[2个频道]约为280KB
44100的1小时AAC录音[2个频道]为abt 57MB
大于44100的抽样怎么办有48000,96000,甚至更多。
48000的采样将允许高达24000hz的声音频率(没有超人能够听到这样的高频声音),你只会得到一个更大的文件。
一个96000的采样将允许声音频率高达48000赫兹,只有狗能够听到这样的高音高达45000赫兹。一个96000的采样是很好的记录声音,当再现将听起来完全像真实的声音,但狗耳朵。对我们来说,与44100的抽样评级没有区别。我们的耳朵听不清。(注:在这种情况下,有效的说法是,你需要一个扬声器能够再现20000赫兹以上的声音,这是很难找到的。)
注:采样率是以赫兹为单位测量的,就像声音频率一样。
我在提到采样率时故意省略了上面的“Hz”,而在提到声音频率时,我故意省略了“Hz”,以避免与这么多看起来相似的数字混淆,但代表了两个不同的东西。
所以,44100的采样意味着44100Hz[采样率]。。等等。。
_
1赫兹表示1(一)秒间隔内的1(一)次振荡/旋转/事件
20000Hz意味着声音频率每秒振荡20000次。
44100Hz意味着我们以每秒44000次的速度采集声音样本,从而对声音进行数字化处理。

关于ios - 不同的AVAudioQuality选项对生成的录音有什么影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57263129/

相关文章:

iphone - iOS - 如何在加载新 View 后删除以前的 View ?

arrays - 初始化多维数组

ios - 使用 AVCaptureSession 以编程方式捕获最高分辨率图像

ios - 如何使用 vImageMatrixMultiply 将 YUV 平面数据转换为 32 bpp、8bpc RGBX?

ios - 在 SKRecognizer 中检测不到语音

ios - UIWebview中如何获取当前播放视频的url

ios - UICollectionView 水平分页 - 我可以使用 Flow Layout 吗?

ios - 如何使函数内的值成为全局值

ios - 带有未格式化表情符号的 NSAttributedString 结尾

ios - 示例代码中 AVFoundation.Framework 中的 static void 指针