Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#Silverlight获取声音频率_C#_Silverlight_Audio_Byte_Bytearray - Fatal编程技术网

C#Silverlight获取声音频率

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() { }

我一直在尝试使用如下代码读取麦克风的当前声音

_Capture是一个
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)
    {

    }
}