音频单元产生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);