录制语音的正确 AVAudioRecorder 设置?

Posted

技术标签:

【中文标题】录制语音的正确 AVAudioRecorder 设置?【英文标题】:Proper AVAudioRecorder Settings for Recording Voice? 【发布时间】:2010-01-27 18:14:00 【问题描述】:

我正在使用 AVAudioRecorder 添加语音备忘录功能,我需要知道用于录制语音的录音机的最佳设置。

不幸的是,我对音频一无所知,以至于我什至不确定谷歌的术语是什么。

目前,我正在使用从某处复制的以下内容用于测试目的:

recorderSettingsDict=[[NSDictionary alloc] initWithObjectsAndKeys:[NSNumber numberWithInt:kAudioFormatAppleIMA4],AVFormatIDKey,
                        [NSNumber numberWithInt:44100.0],AVSampleRateKey,
                        [NSNumber numberWithInt: 2],AVNumberOfChannelsKey,
                        [NSNumber numberWithInt:16],AVLinearPCMBitDepthKey,
                        [NSNumber numberWithBool:NO],AVLinearPCMIsBigEndianKey,
                        [NSNumber numberWithBool:NO],AVLinearPCMIsFloatKey,
                        nil];

或:

defaultSettings =     
    AVFormatIDKey = 1768775988;
    AVLinearPCMBitDepthKey = 16;
    AVLinearPCMIsBigEndianKey = 0;
    AVLinearPCMIsFloatKey = 0;
    AVNumberOfChannelsKey = 2;
    AVSampleRateKey = 44100;
;

这可行,但我不知道它在质量、速度、文件大小等方面是否最适合语音。

AVAudioRecorder Class Reference list many settings constants,但我不知道哪些用于语音。

除此之外,如果有人知道一个好的“Dummy 的音频格式”资源,我也会接受。 (注意:我浏览过 Apple Docs,他们认为我没有数字音频知识库。)

【问题讨论】:

伙计,我认为在 iPad 发布当天发布此消息是一个战术错误。 【参考方案1】:

您需要阅读标题为在 iPhone OS 中使用声音的 iPhone Application Programming Guide 部分和 Audio Queue Services Programming Guide。 (编辑:这些链接已过时,在 iPhone OS 中使用声音已从当前的应用程序编程指南中删除,但 Audio Queue Services Programming Guide 已更新和移动。)

人类声音中的大多数声音都在人类听觉的中间范围内。即使以非常低的数据速率进行数字化,录制的语音也很容易理解。您可以踩遍录音,但仍然有一个有用的文件。因此,您对这些录音的最终用途将指导您对这些设置的决定。

首先您需要选择音频格式。您的选择将取决于您在录制音频后要对音频执行的操作。您当前的选择是 IMA4。也许您会想要不同的格式,但 IMA4 是 iPhone 的不错选择。这是一种快速编码方案,因此对于有限的 iPhone 处理器来说不会太费力,而且它提供 4:1 压缩,因此不会占用太多存储空间。根据您选择的格式,您需要进行进一步的设置。

您当前的采样率 44.1 kHz 与 CD 音频的标准相同。除非您追求高保真录音,否则您不需要这么高的速率,但您不想使用任意速率。大多数音频软件只能了解特定步骤的速率,例如 32 kHz、24 kHz、16 kHz 或 12 kHz。

您的声道数设置为 2,用于立体声。除非您使用额外的硬件,否则 iPhone 只有一个麦克风,1 个单声道就足够了。这将您的数据需求减少了一半。

您使用的三个线性 PCM 设置似乎仅适用于线性 PCM 格式的录音。我认为它们对您的代码没有影响,因为您使用的是 IMA4 格式。我不太了解 IMA4 格式,无法告诉您需要进行哪些设置,因此如果您决定继续使用该设置,则必须进行一些额外的研究。

【讨论】:

感谢您抽出宝贵时间写出这样的答案,但正如我在 OP 中所说,苹果文档没有说明哪些设置最适合语音。有关通道和采样率的信息很有用。 好的,如果我要在录制备忘录的应用程序中使用语音备忘录,我会将 AVFormatIDKey 设置为 kAudioFormatAppleIMA4,AVSampleRateKey 设置为 16000.0,AVNumberOfChannelsKey 设置为 1,并将其他所有内容保留为默认值。 很好的答案,谢谢。 Fwiw,WWDC 2010 的一些非常好的会议也涵盖了这个主题。特别是Fundamentals of Digital Audio 充满了很好的信息。该演示文稿中的slide deck 也非常有用。尤其是幻灯片 51 和 52。 我还是建议2个频道,因为用户可以使用耳机收听录音,更不用说通过电子邮件将文件发送到计算机了。 kiok45 - 在帖子发布 6 年后回复并抱怨链接断开是没有成效的;也许分享更新的链接!否则,指出并继续前进是你最好的选择;同样正确,只是 Apple 更改了他们的页面。【参考方案2】:

需要考虑的一点是,长期以来,传统的固定电话公司——自从数字化以来——使用 8 位、7KHz 采样。这就是为什么干线线路的尺寸会如此之大。T1 20 64k 通道,这为通过的 56k 语音数据以及他们需要的任何管理元数据留下了一点开销。

所以如果你想要 POTS 质量,8b/7KHz 应该没问题。根据您的需要进行调整。

【讨论】:

以上是关于录制语音的正确 AVAudioRecorder 设置?的主要内容,如果未能解决你的问题,请参考以下文章

使用 AVAudioRecorder 录制语音

AVAudioRecorder - 最后裁剪/修剪录音

AVAudioRecorder - 正确的 MPEG4 AAC 录制设置

IOS 8 AVAudioRecorder 更改示例格式

第六十九篇OC_录制语音和播放语音功能的实现

AVAudioRecorder 录制 AAC/m4a