1

我有一些从无线电传输中录制的 WAV 文件。它包含有关谁发送了传输的信息,我希望能够阅读这些信息。通过发送 x hz 表示 0 和 y hz 表示 1 来传输信息(有关AFSK的更多信息,请访问 Wikipedia)

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

有任何想法吗?

4

1 回答 1

1

WAV 文件规范是您从WAV 文件中读取声音数据的蓝图。可以在此 CodeProject 文章中找到用于读取和操作 WAV 文件的示例代码。

要实现音调映射,您可以阅读这篇文章,其中描述了如何编写软件在两个声卡之间传输数据。例如,要找出 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)

于 2012-03-18T16:34:34.590 回答