在iPhone应用程序中录制用户语音时降低噪音?

时间:2011-11-25 10:56:39

标签: iphone objective-c avfoundation audio-recording

我正在尝试用背后的音乐录制用户的声音。我可以使用AVAudioSessionCategoryPlayAndRecord设置会话并播放背景和同时录制。但它正在记录很多噪音,

是否有人知道如何降低噪音?

1 个答案:

答案 0 :(得分:1)

#define DOCUMENTS [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]
#define PATH_ARQUIVO [DOCUMENTS stringByAppendingPathComponent:@"gravacao.ma4"]



-(IBAction) recordAudio:(UIButton *)sender {

        NSURL* urlArquivo = [[NSURL alloc] initFileURLWithPath:PATH_ARQUIVO];

        NSDictionary *dic = [[NSDictionary alloc] initWithObjectsAndKeys: 
        [NSNumber numberWithInt:AVAudioQualityMin], AVEncoderAudioQualityKey,
        [NSNumber numberWithInt:16], AVEncoderBitRateKey,
        [NSNumber numberWithInt:2], AVNumberOfChannelsKey, 
        [NSNumber numberWithFloat:44.1], AVSampleRateKey,
                                    nil];
        NSError* error;

        self.audioRecorder = [[AVAudioRecorder alloc] initWithURL:urlArquivo settings:dic error:&error];


        if (error) {
            NSLog(@"error: %@", [erro localizedDescription]);
        } else {
            //buffering
            [self.audioRecorder prepareToRecord];
            //recording
            [self.audioRecorder record];
        }
    }

    -(IBAction) stopRecorder:(UIButton *)sender {
        if ([self.audioRecorder isRecording]) {
            [self.audioRecorder stop];
        }
    }



    -(IBAction) PlayAudio:(UIButton *)sender {
        NSURL* urlArquivo = [[NSURL alloc] initFileURLWithPath:PATH_ARQUIVO];

        NSError* error;
        self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:urlArquivo error:&error];

        if (erro) {
            NSLog(@"error %@", [error localizedDescription]);
        } else {
            self.audioPlayer.numberOfLoops = HUGE_VALF;
            self.audioPlayer.enableRate = YES;
            [self.audioPlayer prepareToPlay];
            [self.audioPlayer play];
        }
    }

    -(IBAction) stopPlaying:(UIButton *)sender {
        if ([self.audioPlayer isPlaying]) {
            [self.audioPlayer stop];
        }
    }

    -(IBAction) changeRate:(UISlider *)sender {
        self.audioPlayer.rate = sender.value * 2; 
        /* it's a UISlider, max value = 1, min = 0 */
    }