2009-12-03 3 views
0

Теперь я создаю приложение, использующее распознавание речи. Чтобы проверить мощность звука, поступающего через микрофон, Я написал метод следующим образом.Аудио питание на AudioQueue

-(void)checkPower(AudioqueRef)queue{ 
    UInt32 expectedSize= sizeof(AudioQueueLevelMeterState); 
    AudioQueueGetProperty(queue, 
        kAudioQueueProperty_CurrentLevelMeter, 
        audioLevels,   
         expectedSize); 
    NSLog(@"average:%f peak:%f",audioLevels.mAveragePower,audioLevels.mPeakPower); 
} 

я обнаружил, что иногда mAveragePower было больше, чем mPeakPower, и когда mAveragePower был 1,0, другими словами, averagePower рассматривается как максимум, mPeakPower был ниже, чем 1,0.

Я думаю, что в целом этот результат невозможен. , пожалуйста, дайте мне знать, если у вас есть информация о звуковой мощности на CoreAudio.

спасибо.

+1

Вы проверяете код результата (OSStatus), возвращаемый AudioQueueGetProperty? При ошибке значения, вероятно, не имеют смысла. – diciu

+0

Спасибо за советы. Я проверил OSStatus, но это было «noErr» ... – Tomoyuki

ответ

0

Я думаю, что mPeakPower означает мощность канала в момент CURRENT & mAveragePower - средняя мощность канала для ВСЕГО времени записи, и если это правильно, ваш результат возможен.

Смежные вопросы