аудио анализ iPhone - PullRequest
       7

аудио анализ iPhone

7 голосов
/ 21 января 2010

Я занимаюсь разработкой приложения для iPhone, которое потенциально может включать "простой" анализ звука, который он получает со стандартного микрофона телефона. В частности, меня интересуют взлеты и падения микрофонов, и на самом деле все промежуточное для меня не имеет значения.

Есть ли приложение, которое уже делает это (просто чтобы я мог видеть, на что оно способно)? И где мне искать, чтобы начать работу с таким кодом?

Спасибо за вашу помощь.

Ответы [ 4 ]

9 голосов
/ 21 января 2010

Посмотрите в структуре Audio Queue . Вот что я использую, чтобы получить высшую отметку:

AudioQueueRef audioQueue; // Imagine this is correctly set up
UInt32 dataSize = sizeof(AudioQueueLevelMeterState) * recordFormat.mChannelsPerFrame;
AudioQueueLevelMeterState *levels = (AudioQueueLevelMeterState*)malloc(dataSize);

float channelAvg = 0;

OSStatus rc = AudioQueueGetProperty(audioQueue, kAudioQueueProperty_CurrentLevelMeter, levels, &dataSize);
if (rc) {
    NSLog(@"AudioQueueGetProperty(CurrentLevelMeter) returned %@", rc);
} else {    
    for (int i = 0; i < recordFormat.mChannelsPerFrame; i++) {
        channelAvg += levels[i].mPeakPower;
    }
}
free(levels);

// This works because one channel always has an mAveragePower of 0.
return channelAvg;

Вы можете получить пиковую мощность в свободном масштабе дБ (с kAudioQueueProperty_CurrentLevelMeterDB) или просто в виде числа с плавающей точкой в ​​интервале [0.0, 1.0] (с kAudioQueueProperty_CurrentLevelMeter).

4 голосов
/ 19 октября 2012

Не забудьте сначала активировать измерение уровня для AudioQueue:

UInt32 d = 1;
OSStatus status = AudioQueueSetProperty(mQueue, kAudioQueueProperty_EnableLevelMetering, &d, sizeof(UInt32));
2 голосов
/ 21 января 2010

Проверьте пример кода «SpeakHere». он покажет вам, как записывать звук с помощью AudioQueue API. Он также содержит некоторый код для анализа звука в реальном времени и отображения индикатора уровня.

Вы можете использовать большую часть кода индикатора уровня для ответа на «максимумы» и «минимумы».

0 голосов
/ 21 января 2010

Пример кода AurioTouch выполняет анализ Фурье на входе микрофона. Может быть хорошей отправной точкой:

https://developer.apple.com/iPhone/library/samplecode/aurioTouch/index.html

Вероятно, излишний для вашего приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...