3
我一直在嘗試用一些類似的代碼的頻率下,從麥克風讀取電流聲C#的Silverlight播放聲音
_Capture是CaptureSource
和_Encoder是(自定義類)
_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();
}
}
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)
{
}
}
Im的
定義猜測的sampleData
byte[]
陣列具有我正在查找的數據,但我如何使用它來查找聲音的頻率?
這將是巨大的,如果我能找到像
public double GetFreq(byte[] data)
功能使用像
double hertz = GetFreq(sampleData)
什麼是一些第三方庫? –
也可以使用這個傅里葉變換類http://www.codeproject.com/script/Articles/ViewDownloads.aspx?aid=20025點擊FourierTansform.cs –
另請參閱http://stackoverflow.com/questions/1847633/net-library-to-identify-pitches/1847723,因爲這主要是要求在Silverlight中進行數字運算。 –