适合录制人声的AVAudioRecorder设置是什么?

45

我正在使用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类参考文献列出了许多设置常量,但我不知道哪些是用于语音的。

如果有人知道一个好的“白痴音频格式”资源,我也可以接受。(注意:我已经看过苹果文档,但他们假定我具备数字音频方面的知识,而我并没有。)


2
哎呀,我觉得在iPad发布的当天发这个帖子是个战术性错误。 - TechZen
2个回答

94
你需要阅读名为“在iPhone OS中使用声音”的iPhone应用程序编程指南章节和音频队列服务编程指南。 (编辑:这些链接已过时,“在iPhone OS中使用声音”已从当前的应用程序编程指南中删除,但音频队列服务编程指南已更新和移动。)
人类语音中的大多数声音都处于人类听力的中间范围。即使以非常低的数据速率数字化,录制的语音也很容易理解。您可以践踏语音记录,但仍然拥有一个有用的文件。因此,您对这些记录的最终使用将指导您对这些设置的决策。
首先,您需要选择音频格式。您的选择将取决于录制后要对音频进行的操作。您当前的选择是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格式,无法告诉你需要进行哪些设置,如果你决定继续使用该设置,你需要进行一些额外的研究。


18
好的,如果我要制作用于应用程序记录备忘录的语音备忘录,我会将AVFormatIDKey设置为kAudioFormatAppleIMA4,将AVSampleRateKey设置为16000.0,将AVNumberOfChannelsKey设置为1,并将其他所有设置保持默认。 - Mr. Berna
6
非常好的回答,谢谢。顺便说一下,2010年苹果全球开发者大会有一些非常好的演讲涉及了这个主题。特别是《数字音频基础》(Fundamentals of Digital Audio),其中包含了很多有用的信息。那次演讲的幻灯片也非常有用。特别是看第51页和第52页。 - lambmj
3
我仍建议使用两个声道,因为用户可以使用耳机收听音频录音,更不用说通过电子邮件将文件发送到电脑了。 - Guntis Treulands
kiok45 - 在帖子发布6年后回复并抱怨链接失效是没有意义的;也许可以分享更新后的链接!否则,指出问题然后继续前进是最好的选择;这并没有错,只是苹果更改了他们的页面。 - TahoeWolverine
@GuntisTreulands 如果只有一个频道,用户将音频文件通过电子邮件发送给某人会发生什么? - Lance Samaria
显示剩余4条评论

2

需要考虑的一件事是,自从传统的固定电话语音公司数字化以来,它们使用了8位、7KHz采样。这就是为什么干线的大小是它们的大小。T1有20个64k信道,留下一些空间来容纳56k的语音数据以及它们所需的任何管理元数据。

因此,如果您想要POTS质量,8b/7KHz应该就可以了。根据您的需求进行调整。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接