2010-07-06 46 views
0

我將一個無線電信號記錄到.wav中,我可以用大膽的方式打開它,看到使用某種算法編碼了二進制數據。有沒有人知道處理.wav中包含的信號的方法?這樣我可以從中提取二進制數據?處理來自.wav的信號,並將其轉化爲二進制數據

我知道我需要知道編碼算法才能正常工作,任何人都知道任何類似的程序?

感謝

+0

您已經有了一個包含音頻樣本的二進制文件。你到底想做什麼?正如你所指出的,一個好的開始將是找出確切的容器和編解碼器。 [Waveform Audio File Format](http://en.wikipedia.org/wiki/WAV)中的[LPCM](http://en.wikipedia.org/wiki/Linear_pulse_code_modulation)(一種[ RIFF](http://en.wikipedia.org/wiki/Resource_Interchange_File_Format))文件。 – 2010-07-06 04:30:53

+0

您應該在FFT中看到不同的組件 - 載波頻率,波特率以及彼此的產品。如果你知道這種格式,你的生活會變得更容易。要解碼4級FSK,請使用FIR(有限脈衝響應)數字濾波器。 FFT窗口將太粗糙而無法以波特率解碼,但FIR可能能夠。 如果您從掃描儀獲得信號,請查看「trunktracking」以獲取解調信號的一些線索,無論它是什麼。 – 2010-07-06 04:31:49

+0

這很大程度上取決於數據的調製類型。有許多可能性。例如,氣象衛星使用一種方法。尋呼機的另一個。 PSK31與RT​​TY不同。等等。 – Paul 2014-10-05 21:28:00

回答

1

sox將大部分的音頻格式轉換成其他大多數音頻格式 - 包括原始的二進制。

+0

sox是我用來執行反向操作的東西;它工作完美。 – Clifford 2010-07-20 20:12:38

1

.wav格式通常很簡單,wav文件通常沒有壓縮數據。自己解析它是非常可行的,但是更容易使用已經創建的東西。所以簡短的答案是找到可以用你選擇的語言閱讀wav文件的東西。

下面是Python的一個例子,使用wave模塊:

import wave 

w = wave.open("myfile.wav", "rb") 
binary_data = w.readframes(w.getnframes()) 
w.close() 

現在你走到哪裏取決於你想要做什麼。 binary_data現在是一個原始字節的Python字符串。如果你只是想砍掉它並重新包裝它,那麼最簡單的辦法就是把它放在這個表格中。如果你想操作數據,比如縮放,插入,過濾等,你可能會想將其轉換爲一系列數字,爲此,在Python中,你需要將它轉換爲numpy數組。您可以使用struct模塊自行完成此操作,該模塊用於將字符串解釋爲打包的二進制數據,或者您可以使用scipy.io.wave模塊讀取數據,該模塊將爲您執行此操作。正如你所看到的,大部分這些變得很快依賴語言。

相關問題