最简单的方法是从音频输入中捕获原始音频,以便在mac上进行实时处理

use*_*804 4 audio core-audio sampling

什么是从内置音频输入捕获音频的最简单方法,并且能够在请求时实时读取原始采样值(如.wav中),例如从套接字读取.

希望代码使用Apple的一个框架(音频队列).文档不是很清楚,我需要的是非常基础的.

小智 7

为此尝试AudioQueue框架.你主要要执行3个步骤:

  1. 设置音频格式如何对输入的模拟音频进行采样
  2. 使用AudioQueueNewInput()开始新的录音AudioQueue
  3. 注册一个处理传入音频数据包的回调例程

在第3步中,您有机会使用AudioQueueGetProperty()分析传入的音频数据

它大致是这样的:

static void HandleAudioCallback (void                               *aqData,
                                 AudioQueueRef                      inAQ,
                                 AudioQueueBufferRef                inBuffer, 
                                 const AudioTimeStamp               *inStartTime, 
                                 UInt32                             inNumPackets, 
                                 const AudioStreamPacketDescription *inPacketDesc) {
    // Here you examine your audio data
}

static void StartRecording() {
    // now let's start the recording
    AudioQueueNewInput (&aqData.mDataFormat,  // The sampling format how to record
                        HandleAudioCallback,  // Your callback routine
                        &aqData,              // e.g. AudioStreamBasicDescription
                        NULL,
                        kCFRunLoopCommonModes, 
                        0, 
                        &aqData.mQueue);      // Your fresh created AudioQueue
    AudioQueueStart(aqData.mQueue,
                    NULL);
}
Run Code Online (Sandbox Code Playgroud)

我建议Apple AudioQueue服务编程指南,了解有关如何启动和停止AudioQueue以及如何正确设置所有必需对象的详细信息.

您可能还需要仔细研究Apple的演示程序SpeakHere.但这是恕我直言,开始时有点混乱.