音频单元产生8000采样率的噪声。Xamarin.ios(Monotouch)

音频单元产生8000采样率的噪声。Xamarin.ios(Monotouch),ios,xamarin.ios,core-audio,audiounit,Ios,Xamarin.ios,Core Audio,Audiounit,我正在使用AudioUnit类进行录制和播放。录音时,我能听到声音。问题是,当我使用采样率44100时,它工作正常,但如果我使用采样率8000时,它会产生噪音。用8000采样率录制后,当我播放时,没有噪音,有实际声音。 仅指录制时产生的噪音与实际声音 我的AudioStreamBasicDescription设置为- audioStreamDescription.Format = AudioFormatType.LinearPCM; audioStreamDescription.FormatFl

我正在使用
AudioUnit
类进行录制和播放。录音时,我能听到声音。问题是,当我使用采样率
44100
时,它工作正常,但如果我使用采样率
8000
时,它会产生噪音。用
8000
采样率录制后,当我播放时,没有噪音,有实际声音。 仅指录制时产生的噪音与实际声音

我的AudioStreamBasicDescription设置为-

audioStreamDescription.Format = AudioFormatType.LinearPCM;
audioStreamDescription.FormatFlags = AudioFormatFlags.LinearPCMIsSignedInteger |
                                                      AudioFormatFlags.LinearPCMIsPacked;
audioStreamDescription.SampleRate = 8000; // 44100;
audioStreamDescription.BitsPerChannel = 16;
audioStreamDescription.ChannelsPerFrame = 1;
audioStreamDescription.BytesPerFrame = (16 / 8);
audioStreamDescription.FramesPerPacket = 1;
audioStreamDescription.BytesPerPacket = audioStreamDescription.BytesPerFrame * audioStreamDescription.FramesPerPacket;
audioStreamDescription.Reserved = 0;
public void prepareAudioUnit()
{
    // Getting AudioComponent Remote output 
    _audioComponent = AudioComponent.FindComponent(AudioTypeOutput.Remote);

    // creating an audio unit instance
    audioUnit = new AudioUnit.AudioUnit(_audioComponent);

    // turning on microphone
    audioUnit.SetEnableIO(true, AudioUnitScopeType.Input, 1 );

    audioUnit.SetEnableIO(true, AudioUnitScopeType.Output, 0 );

    // setting audio format        
    var austat = audioUnit.SetFormat(audioStreamDescription, AudioUnitScopeType.Output, 1);

   var austatInput = audioUnit.SetFormat(audioStreamDescription, AudioUnitScopeType.Input, 0);

   //audioUnit.SetSampleRate(8000.0f, AudioUnitScopeType.Output, 0);
   //audioUnit.SetSampleRate(8000.0f, AudioUnitScopeType.Input, 1);

  // setting callback method
  audioUnit.SetRenderCallback(render_CallBack, AudioUnitScopeType.Input, 0);

  audioUnit.Initialize();
}
音频单元设置为-

audioStreamDescription.Format = AudioFormatType.LinearPCM;
audioStreamDescription.FormatFlags = AudioFormatFlags.LinearPCMIsSignedInteger |
                                                      AudioFormatFlags.LinearPCMIsPacked;
audioStreamDescription.SampleRate = 8000; // 44100;
audioStreamDescription.BitsPerChannel = 16;
audioStreamDescription.ChannelsPerFrame = 1;
audioStreamDescription.BytesPerFrame = (16 / 8);
audioStreamDescription.FramesPerPacket = 1;
audioStreamDescription.BytesPerPacket = audioStreamDescription.BytesPerFrame * audioStreamDescription.FramesPerPacket;
audioStreamDescription.Reserved = 0;
public void prepareAudioUnit()
{
    // Getting AudioComponent Remote output 
    _audioComponent = AudioComponent.FindComponent(AudioTypeOutput.Remote);

    // creating an audio unit instance
    audioUnit = new AudioUnit.AudioUnit(_audioComponent);

    // turning on microphone
    audioUnit.SetEnableIO(true, AudioUnitScopeType.Input, 1 );

    audioUnit.SetEnableIO(true, AudioUnitScopeType.Output, 0 );

    // setting audio format        
    var austat = audioUnit.SetFormat(audioStreamDescription, AudioUnitScopeType.Output, 1);

   var austatInput = audioUnit.SetFormat(audioStreamDescription, AudioUnitScopeType.Input, 0);

   //audioUnit.SetSampleRate(8000.0f, AudioUnitScopeType.Output, 0);
   //audioUnit.SetSampleRate(8000.0f, AudioUnitScopeType.Input, 1);

  // setting callback method
  audioUnit.SetRenderCallback(render_CallBack, AudioUnitScopeType.Input, 0);

  audioUnit.Initialize();
}
现在,我的主要问题是如何去除与实际声音混合的噪音?
如果我无法正确解释,请让我知道。

我只有有限的AU经验,但我猜您实际录制的不是8kHz,而是44.1kHz。你在AVAudioSession上正确设置了首选采样率了吗?你好,Tim,我设置了。这是我的会话代码-bool preferredSampleRateResult=avAudioSessionObj.SetPreferredSampleRate(8000.0f,out errorRes);