2010-01-21 11 views
7

मैं एक आईफोन ऐप विकसित करने की तलाश में हूं जो संभावित रूप से मानक फोन माइक से प्राप्त ऑडियो के "सरल" विश्लेषण को शामिल करेगा। विशेष रूप से, मुझे ऊंचे में दिलचस्पी है और माइक पिक्चर्स को कम करता है, और वास्तव में बीच में सब कुछ मेरे लिए अप्रासंगिक है।

क्या कोई ऐप है जो पहले से ही करता है (बस इतना है कि मैं देख सकता हूं कि इसके क्या सक्षम हैं)? और मुझे ऐसे कोड पर कहां से शुरू करना चाहिए?

आपकी मदद के लिए धन्यवाद।आईफोन ऑडियो विश्लेषण

+0

बढ़िया, आप अपने सभी उत्तरों के लिए धन्यवाद देता हूं। मैं अभी तक ऐप को खोलने के लिए नहीं मिला है, इसलिए मुझे डर है कि मुझे नहीं पता कि मेरा जवाब सही होने तक सही है। –

उत्तर

9

Audio Queue framework में देखें। यह वही है मैं एक उच्च पानी के निशान प्राप्त करने के लिए उपयोग करते हैं:

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 साथ) में एक नाव के रूप में ।

+0

शानदार उत्तर और वह नमूना कोड वास्तव में उपयोगी है। –

2

'SpeakHere' नमूना कोड देखें। यह आपको ऑडियोक्यूयू एपीआई का उपयोग करके ऑडियो रिकॉर्ड करने का तरीका दिखाएगा। इसमें एक स्तर मीटर दिखाने के लिए ऑडियो रीयलटाइम का विश्लेषण करने के लिए कुछ कोड भी शामिल हैं।

आप वास्तव में 'हाई' और 'लो' के जवाब देने के लिए उस स्तर मीटर कोड का अधिकतर उपयोग करने में सक्षम हो सकते हैं।

0

ऑरियो टच उदाहरण कोड माइक्रो इनपुट पर फूरियर विश्लेषण निष्पादित करता है।

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

शायद आपके आवेदन के लिए overkill: एक अच्छा प्रारंभिक बिंदु हो सकता है।

3

मत भूलना पहले AudioQueue के लिए स्तर पैमाइश सक्रिय करने के लिए:

UInt32 d = 1; 
OSStatus status = AudioQueueSetProperty(mQueue, kAudioQueueProperty_EnableLevelMetering, &d, sizeof(UInt32)); 
संबंधित मुद्दे