我有一些从无线电传输中录制的 WAV 文件。它包含有关谁发送了传输的信息,我希望能够阅读这些信息。通过发送 x hz 表示 0 和 y hz 表示 1 来传输信息(有关AFSK的更多信息,请访问 Wikipedia)
我的问题是:如何从波形文件中获取二进制数据?如果有 C# 的控件会很好,但是为了更好地理解一些源代码会更好。
有任何想法吗?
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 * frequency / rate)