我一直在尝试使用以下代码从麦克风读取当前声音:
_Capture是一个CaptureSource,_Encoder是一个SimpleAudioEncoder(自定义类)。
我猜测
如果能够找到像这样的函数就太好了:
_Capture是一个CaptureSource,_Encoder是一个SimpleAudioEncoder(自定义类)。
_Capture = new CaptureSource();
_Encoder = new SimpleAudioEncoder(this);
_Encoder.CaptureSource = _Capture;
if (_Capture != null)
{
_Capture.AudioCaptureDevice = CaptureDeviceConfiguration.GetDefaultAudioCaptureDevice();
CaptureDeviceConfiguration.GetDefaultAudioCaptureDevice();
if (CaptureDeviceConfiguration.AllowedDeviceAccess || CaptureDeviceConfiguration.RequestDeviceAccess())
{
MessageBox.Show("_Capture.Start()");
_Capture.Start();
}
}
SimpleAudioEncoder
的定义
public class SimpleAudioEncoder : AudioSink
{
public SimpleAudioEncoder() {
}
protected override void OnCaptureStarted()
{
}
protected override void OnCaptureStopped()
{
}
protected override void OnFormatChange(
AudioFormat audioFormat) {
}
protected override void OnSamples(
long sampleTimeInHundredNanoseconds,
long sampleDurationInHundredNanoseconds,
byte[] sampleData)
{
}
}
我猜测
sampleData
的 byte[]
数组内应该有我要找的数据,但是我该如何使用它来查找声音的频率?如果能够找到像这样的函数就太好了:
public double GetFreq(byte[] data)
可以像这样使用:
double hertz = GetFreq(sampleData)