43

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

尽管如此,如果有人知道一个好的“Dummy 的音频格式”资源,我也会接受。(注意:我浏览过 Apple Docs,他们假设我不具备数字音频知识库。)

4

2 回答 2

91

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

于 2010-02-02T14:33:47.117 回答
2

需要考虑的一件事是,很长一段时间以来,传统的固定电话公司——自从数字化以来——使用 8 位、7KHz 采样。这就是为什么主干线的尺寸有它们进来的原因。T1 20 64k 通道,这为通过的 56k 语音数据以及他们需要的任何管理元数据留下了一点开销。

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

于 2013-07-28T03:50:03.950 回答