1

我有二進制數據在音頻流中,我想解碼它。這裏是無畏的示例屏幕截圖:從音頻信號中提取二進制數據流

screenshot of data

似乎有數據的每毫秒一個新的位。這也意味着數據編碼爲1000 Hz,波特率爲1000

我還可以告訴每個分組具有20個比特(意味着它需要20毫秒傳輸)加3毫秒只是一個高信號的。這意味着數據包每23毫秒發送一次


所以問題是,我將如何將其轉換爲二進制文件?經過手工完成是不可能的 - 除非你願意這樣做:)

回答

2

這是數字調製的一種典型情況,稱爲開關鍵控(OOK)。

解碼OOK相當容易:應用低於1 /符號週期的截止頻率的低通濾波器,抽取它的輸出,以便每個符號持續時間只獲得1個值,然後使用實驗發現的閾值來決定什麼是0和什麼是1.

如果你想要確切地確切,你可能需要找到確切的符號持續時間和符號開始。這是一個經典的同步問題 - 在你的情況下,似乎發送者確保在每次符號轉換時都有一個尖銳的邊緣,所以高通濾波你的信號,你會得到一個時鐘信號,你可以用它來調整一個重新採樣器,然後可以調整進入解碼器的信號採樣率(如上所述)。

有一個很好的框架來做到這一點; GNU Radio附帶您需要實現的所有構建模塊,它有一個活躍的社區,還有一個GUI可幫助您開發信號處理應用程序,如果在信號處理鏈中不使用圖形可視化,則生成的應用程序非常便於攜帶,高度優化,並附帶大量示例。