我有一些從無線傳輸錄製的WAV文件。它包含關於誰發送了傳輸的信息,我希望能夠閱讀這些信息。 通過發送x hz爲0和y hz爲1(更多大約AFSK在維基百科上)在WAV錄製中讀取通過無線電傳輸的二進制代碼
我的問題是:如何從波形文件中獲取二進制數據?如果有C#的控件會很好,但爲了更好的理解,一些源代碼會更好。
任何想法?
我有一些從無線傳輸錄製的WAV文件。它包含關於誰發送了傳輸的信息,我希望能夠閱讀這些信息。 通過發送x hz爲0和y hz爲1(更多大約AFSK在維基百科上)在WAV錄製中讀取通過無線電傳輸的二進制代碼
我的問題是:如何從波形文件中獲取二進制數據?如果有C#的控件會很好,但爲了更好的理解,一些源代碼會更好。
任何想法?
的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 * frequency/rate)
感謝CodeProject鏈接,至少我現在可以輕鬆訪問音頻幀。 雖然我需要一些傅里葉變換的幫助。我仍然沒有得到x_in部分。我應該在哪裏放置音頻幀的二進制表示?我如何將我的變速箱正在使用的1200 bauds? – meilon 2012-03-18 20:34:16
FFT不能工作,它不是一個週期性信號。兩個帶通濾波器是必需的。還需要有某種成幀方案來恢復數據時鐘,這可能與串行端口類似。 – 2012-03-18 20:40:41
使用兩個帶通濾波器,您可以測量每個輸出的「電壓電平」。但根據這篇文章,FFT計算完成了同樣的事情。文章中有更多的代碼。 – 2012-03-18 21:13:12
HTTP://awesomegeekblog.blogspot .com/2009/04/file-transfer-over-sound-card.html – 2012-03-18 16:41:45