작동하는 Android 응용 프로그램을 개발했으며이 중 C# 버전을 만들려고합니다. 버퍼 데이터를 검색하고 바이트 배열로 전달하는 데 막혔습니다. 프로젝트를 NAudio 등에 참조했습니다.NAudio C# : 추가 조작을 위해 WaveInEventArgs에서 바이트 배열을 얻는 방법
프로젝트를 통해 대기 시간을 프로그래밍 방식으로 조정 했으므로 프로젝트를 통해 마이크 입력을 읽고 스피커를 통해 지연 시간을 거의 출력 할 수있게되었습니다. 그러나 버퍼 데이터를 검색하는 데 어려움이 있습니다. 어떻게 waveInEventArgs를 가지고 놀 수 있습니까? 나는 waveIn의 데이터가 waveInEventArgs.buffer로 전달된다는 것을 이해하지만, 그냥 버퍼 데이터를 가져 와서 그것을 배치 할 수 없다. 어떻게해야합니까?
private void RecorderOnDataAvailable(object sender, WaveInEventArgs waveInEventArgs)
{
bufferedWaveProvider.AddSamples(waveInEventArgs.Buffer, 0, waveInEventArgs.BytesRecorded);
}
public String processAudioFrame(short[] audioFrame)
{
double rms = 0;
for (int i = 0; i < audioFrame.Length; i++)
{
rms += audioFrame[i] * audioFrame[i];
}
rms = Math.Sqrt(rms/audioFrame.Length);
double mGain = 2500.0/Math.Pow(10.0, 90.0/20.0);
double mAlpha = 0.9;
double mRmsSmoothed = 0;
//compute a smoothed version for less flickering of the display
mRmsSmoothed = mRmsSmoothed * mAlpha + (1 - mAlpha) * rms;
double rmsdB = 20.0 * Math.Log10(mGain * mRmsSmoothed);
//assign values from rmsdB to debels for comparison in errorCorrection() method
double debels = rmsdB + 20;
String value = debels.ToString();
return value;
}
변수 값은 내가 디자인에 구현 한 텍스트 상자에 결과를 표시하는 문자열로 반환됩니다 : 여기
내 코드입니다.감사합니다. 나는이 프로젝트를 2 일 전에 시작 했으므로 간단한 용어로 설명하면 크게 감사하겠습니다.