适合录制语音的AVAudioRecorder设置?

时间:2010-01-27 18:14:00

标签: iphone avaudiorecorder

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

不幸的是,我对音频一无所知,甚至不确定google的条款。

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

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但我不知道哪些用于语音。

Baring,如果有人知道一个好的“AudioFormats for Dummy”资源,我也会这样做。 (注意:我已经阅读了Apple Docs并且他们假设我没有数字音频的知识库。)

2 个答案:

答案 0 :(得分:88)

您需要阅读标题为“在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格式是否足以告诉您需要进行哪些设置,因此如果您决定继续使用该设置,则必须进行一些额外的研究。

答案 1 :(得分:2)

有一点需要考虑的是,长期以来传统的陆线语音公司 - 自数字化以来 - 使用8位,7KHz采样。这就是为什么干线有它们的尺寸.T1 20 64k通道,为56k的语音数据加上一点开销,加上他们需要的任何管理元数据。

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