【发布时间】:2015-12-11 17:18:52
【问题描述】:
我一直在尝试使用 Mac OS X 上的音频队列来录制声音。现在,我的代码可以正常工作,我可以将录制的声音存储在文件中,但是当我播放声音时,它会失真、嘈杂且几乎无用。我已经根据 Apple 发布的官方代码(SpeakHere)改编了我的代码,但它似乎不起作用。我不知道问题出在哪里,但我猜可能是格式的设置,就像:
AudioStreamBasicDescription recordFormat;
memset(&recordFormat, 0, sizeof(recordFormat));
recordFormat.mFormatFlags = kAudioFormatFlagIsPacked | kAudioFormatFlagIsSignedInteger;
recordFormat.mFormatID = kAudioFormatALaw; // 2
recordFormat.mSampleRate = 16000.0; // 3
recordFormat.mChannelsPerFrame = 1; // 4
recordFormat.mBitsPerChannel = 16; // 5
recordFormat.mBytesPerPacket = recordFormat.mChannelsPerFrame * sizeof (SInt16); // 6
recordFormat.mBytesPerFrame =
recordFormat.mChannelsPerFrame * sizeof (SInt16);
recordFormat.mFramesPerPacket = 1; // 7
recordFormat.mReserved = 0;
感谢任何有关主题的线索(录制难以理解、失真和嘈杂的原因)声音。
编辑
我使用 CoolEdit Pro 打开了文件。它看起来像这样:
【问题讨论】:
-
增益太大导致削峰?
-
@LinusLecter 尝试使用 Audacity 等软件分析音频波形。
-
什么样的失真?什么样的噪音?你是如何播放文件的?为什么使用 16kHz 的采样率?其他录音机可以通过同一个麦克风录制相同的声音吗?
-
@hotpaw2 好吧,我必须将缓冲区发送到语音识别服务器,他们需要那个频率。我已成功使用 AVAudioRecorder 录制声音,效果很好,但我需要一个流。如果您知道任何提供缓冲区的 [第三方?] 库,我真的很感激。由于服务器无法识别我过去发送的数据流,我将其保存在文件中,我发现它完全被扭曲了。好吧,我不知道该怎么称呼这种失真,但问题是,我什至无法识别自己的声音。
-
什么音频文件格式?
标签: c cocoa core-audio