读取WAV录制中通过无线电传输的二进制代码

时间:2012-03-18 16:32:31

标签: c# audio decode wave

我有一些从无线电传输录制的WAV文件。它包含有关谁发送传输的信息,我希望能够读取这些信息。 通过发送x hz为0和y hz为1(更多关于维基百科上的AFSK)来传输信息

我的问题是:如何从波形文件中获取二进制数据?如果有C#的控件会很好,但是为了更好地理解,一些源代码会更好。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

WAV file specification是您从WAV文件中读取声音数据的蓝图。可以找到用于读取和操作WAV文件的示例代码in this CodeProject article.

要实现色调映射,您可以read this article,它描述了如何编写软件以在两个声卡之间传输数据。例如,要找出WAV文件的特定段中存在多少给定频率,您将使用傅里叶变换。

这样的事情:

double fourier1(double x_in[], double n, int length) {

    double x_complex[2] = { 0, 0 };

    int i;

    for(i = 0; i < length; i++) 
    {
        x_complex[0] += x_in[i] * cos(M_PI * 2 * i * n / (double) length);
        x_complex[1] += x_in[i] * sin(M_PI * 2 * i * n / (double) length);
    }

    return sqrt(x_complex[0]*x_complex[0] + x_complex[1]*x_complex[1]) / (double) length; 
} 

其中x_in是介于-1和1之间的一系列数字,n是修改后的频率:

(length * fre­quency / rate)