AudioUnit以8000采样率产生噪声。 Xamarin.ios(Monotouch)

时间:2016-04-07 06:00:51

标签: ios xamarin.ios core-audio audiounit

我正在使用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;

AudioUnit设置为 -

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();
}

现在,我的主要问题是如何消除与实际声音相关的噪音? 如果我无法正确解释,请告诉我。

0 个答案:

没有答案