C#Silverlight获取声音频率
我一直在尝试使用如下代码读取麦克风的当前声音 _Capture是一个C#Silverlight获取声音频率,c#,silverlight,audio,byte,bytearray,C#,Silverlight,Audio,Byte,Bytearray,我一直在尝试使用如下代码读取麦克风的当前声音 _Capture是一个CaptureSource,_编码器是一个SimpleAudioEncoder(自定义类) SimpleAudioEncoder的定义 public class SimpleAudioEncoder : AudioSink { public SimpleAudioEncoder() { } protected override void OnCaptureStarted() { }
CaptureSource
,_编码器是一个SimpleAudioEncoder
(自定义类)
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(字节[]数据)
用
双赫兹=GetFreq(sampleData)
建立声音的频率需要将信号从时域转换到频域。它将涉及对输出的分析和后续分析。如果没有对DSP技术的透彻理解,这真的不是任何人的工作。如果你不得不问,那么你自己要实现这一点还有很长的路要走。我推荐第三方图书馆
对于频率检测新手来说,这是一个相当好的视角。什么是第三方库?我也可以使用这个傅里叶变换类,点击FourierTansform.cs也可以看到,因为这主要需要在Silverlight中进行数字运算。
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)
{
}
}