2009-12-03 6 views
0

Je crée maintenant une application en utilisant la reconnaissance vocale. Pour vérifier la puissance audio entrant par le microphone, j'ai écrit une méthode comme suit.puissance audio sur AudioQueue

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

I a constaté que parfois mAveragePower était plus grande que mPeakPower, et quand mAveragePower était de 1,0, en d'autres termes, averagePower est considéré comme max, mPeakPower était inférieur à 1,0.

Je pense que généralement ce résultat est impossible. Faites-moi savoir si vous avez des informations sur la puissance du son sur CoreAudio.

merci.

+1

vérifiez-vous le code de résultat (OSStatus) retourné par AudioQueueGetProperty? En cas d'erreur, les valeurs risquent de ne pas avoir de sens. – diciu

+0

Merci pour vos conseils.J'ai vérifié OSStatus, mais c'était "noErr" ... – Tomoyuki

Répondre

0

Je pense que mPeakPower signifie la puissance du canal à l'instant CURRENT & mAveragePower - puissance moyenne du canal pour TOUT le temps d'enregistrement, et si c'est juste votre résultat possible.