簡體   English   中英

在iPhone中為錄制的音頻實現噪聲濾波算法

[英]Implement a noise filter algorithm for recorded audio in iPhone

我正在開發像TomCat這樣的應用程序。 我用有趣的聲音錄制了音頻,並使用音頻隊列服務進行播放。 我已經改變了AVAudioRecorder的設置,但是在我玩的時候會有一些噪音或扭曲。

NSMutableDictionary *settings = [[NSMutableDictionary alloc] init]; 
[settings setValue:[NSNumber numberWithInt:kAudioFormatLinearPCM] forKey:AVFormatIDKey]; 
[settings setValue:[NSNumber numberWithFloat:44100.0] forKey:AVSampleRateKey]; 
[settings setValue:[NSNumber numberWithInt:1] forKey:AVNumberOfChannelsKey]; 
[settings setValue:[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey]; 
[settings setValue:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey]; 
[settings setValue:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey]; 


self.recorder = [[AVAudioRecorder alloc] initWithURL:[NSURL fileURLWithPath:self.audioPath] settings:settings error:nil];

self.recorder = [self.recorder retain];
[self.recorder prepareToRecord]; 
[self.recorder record]; 

我知道如何將分貝轉換為振幅,或者如果頻率太高則使用LowPassFilter Block。 如果頻率太低,HighPassFilter會阻止。 我如何在Objective-C中實現它?

//convert decibels to amp
const double ALPHA = 0.05;
double peakPowerForChannel = pow(10, (0.05 * [audioMonitor peakPowerForChannel:0]));
double audioMonitorResults;
audioMonitorResults= ALPHA * peakPowerForChannel + (1.0 - ALPHA) *audioMonitorResults;

你的問題不明確。 如果您希望確保遵守奈奎斯特采樣標准,則需要在ADC之前實現濾波器,即如果采樣頻率接近您要記錄的頻譜,則需要在硬件中實現。

如果你有一個合適的LPF並且仍能聽到有趣的聲音,我建議你輸入的音頻電平太高了。 這又是一個硬件問題; 降低你的輸入音量。

另一個噪聲源可能是您的記錄實際上並不是由一個連續的樣本塊組成而沒有中斷。 或者,這也可能是回放問題。

很多事情都可能出錯導致“噪音或扭曲”......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM