在 iPhone 中为录制的音频实现噪声过滤算法
Posted
技术标签:
【中文标题】在 iPhone 中为录制的音频实现噪声过滤算法【英文标题】:Implement a noise filter algorithm for recorded audio in iPhone 【发布时间】:2011-09-28 10:37:02 【问题描述】:我正在开发像 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 Blocks。如果频率太低,高通滤波器会阻塞。如何在 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;
【问题讨论】:
请帮帮我,我如何去除压缩音频中的噪音../ 嘿@Gupta 你的问题解决了吗?因为我在录制时遇到了同样的问题。 【参考方案1】:你的问题不清楚。如果您希望确保遵守 Nyquist 采样标准,则需要在 ADC 之前实施滤波器,即,如果您的采样频率接近您打算记录的频谱,则在硬件中实施。
如果您确实有合适的 LPF 并且仍然听到有趣的噪音,我建议您输入音频电平太高。这又是一个硬件问题。降低输入音量。
另一个噪音来源可能是您的记录实际上并不是由一个连续的样本块组成而没有中断。或者,这也可能是播放问题。
很多事情都可能出错,导致“噪音或失真”......
【讨论】:
以上是关于在 iPhone 中为录制的音频实现噪声过滤算法的主要内容,如果未能解决你的问题,请参考以下文章