gpt4 book ai didi

iphone - 为 iPhone 中录制的音频实现噪声过滤算法

转载 作者:搜寻专家 更新时间:2023-10-30 19:49:52 29 4
gpt4 key购买 nike

我正在开发类似 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;

最佳答案

你的问题不清楚。如果您希望确保遵守奈奎斯特采样标准,则需要在 ADC 之前实现滤波器,即,如果您的采样频率接近您打算记录的频谱,则在硬件中实现。

如果您确实有合适的 LPF,但仍然听到有趣的噪音,我建议您输入音频电平过高。这又是一个硬件问题;降低你的输入音量。

另一个干扰源可能是您的记录并非真正由一个连续的样本 block 组成,没有中断。或者,这也可能是播放问题。

很多事情都可能出错,导致“噪音或失真”......

关于iphone - 为 iPhone 中录制的音频实现噪声过滤算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7581908/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com