2

マイクを介して拍手した後にリッスンするソフトウェアを作成したいと思います。

私の最初の実装は、大音量の音が聞こえたときにソフトウェアに警告を表示させることです。

しかし、誰かが正しい方向に私を助けることができるかどうか疑問に思っていましたか?

public partial class ClapperForm : Form
{
    WaveIn waveInStream;

    public ClapperForm()
    {
        InitializeComponent();
    }

    private void btnStart_Click(object sender, EventArgs e)
    {
        //start the streaming
        waveInStream = new WaveIn();
        waveInStream.DataAvailable += new EventHandler<WaveInEventArgs>(waveInStream_DataAvailable);
        waveInStream.StartRecording();
    }

    void waveInStream_DataAvailable(object sender, WaveInEventArgs e)
    {
        //check out what volume it is
    }
    private void btnStop_Click(object sender, EventArgs e)
    {
        if (waveInStream != null)
        {
            //Stop streaming
            waveInStream.StopRecording();
            waveInStream.Dispose();

            waveInStream = null;
        }
    }
}
4

1 に答える 1

0

16 ビット オーディオ (デフォルト) を録音すると仮定すると、e.Buffer の内容は次のように解釈できます。

for (int n = 0; n < e.BytesRecorded; n += 2)
{
    short sampleValue = BitConverter.ToInt16(e.Buffer, n);        
}

次に、Math.Abs​​(sampleValue) の高い値を探すことができます。

于 2011-07-01T05:52:02.437 に答える