2012-05-31 72 views
4

我有一個無線電接收器。那臺收音機的聲音輸出到我的電腦。聲音輸出包含440赫茲或約440赫茲的莫爾斯電碼。這個莫爾斯電碼的速度範圍可以從2到20 WPM。我排序 - 知道如何確定其他站是否正在傳輸,但是我如何將傳輸/不傳輸狀態轉換爲文本?我認爲可能會有比蠻力更好的解決方案。如何解調(音頻)莫爾斯電碼

複雜的因素:

  • 我希望程序能夠找出其它站如何快速傳輸,而不是它是由用戶指定爲最莫爾斯代碼的程序。
  • 有噪音
  • 莫爾斯電碼發射器不能立即打開和關閉。上升和下降時間約爲4毫秒。
  • 這在很大程度上莫爾斯電碼是由人發出,因此並不完美:
    • 例如,字與字之間暫停由7個元素應該,但它可能是從5什麼8
    • 在單次對話中,發送速度的人可能會有大約20%的差異
  • 我想要或多或少地實時做到這一點。如果程序輸出了某些東西,這是沒問題的,意識到這是一個錯誤,並糾正它。

Source code

程序的實施例的輸出爲止。它可以將音頻解析爲鍵/不鍵,但將其解析爲點/破折號不起作用。

###########################################################__________________________ 
_________________________________#################################################### 
##################################################################################### 
#######################################______________________________________________ 
_____________________________________________________________________________________ 
_____________________________________________________________________________________ 
_____________________________________________________________________________________ 
_____________________________________________________________________________________ 
_________________________ 

任何代碼/上,其確定發送/不發送和/或解析,爲了莫爾斯電碼,將不勝感激部分中的東西的建議。

+1

也許Goertzel過濾器會在你的情況下使用? http://stackoverflow.com/questions/7273153/signal-processing-morse-code-decoding-with-android-application –

+0

速度現在不是一個真正的問題。 (它的速度比它需要的快10倍左右。)無論如何我都試過了,結果發現它在檢測音調時顯得不那麼煩瑣。謝謝! –

+0

聽起來很有趣。如果您可以發佈樣本錄音,我很樂意嘗試。 – Luke

回答

1

關於從破折號和空格彼此分離點一個想法是在會話開始時開始收集統計數據,並將所有「XX毫秒鍵控」事件放入一個數組(或某物)中,並將所有「YY ms未鍵控「放入另一個數組(或某物)。那麼你最終會得到一個直方圖概率(t),對於沒有鍵控的密鑰也是一樣的。這些直方圖應該有一些最大值和最小值,對人類和某些算法都可見。因此,對曲線進行一些舍入處理,將它們分割爲最小值,以便從破折號向右分隔左側的點,也可以使用空格分隔多於一個最小值。這種方法確實會很好地融入到對話中,但不需要調整。

+0

你的意思是直方圖嗎? –

+0

@Nick ODell是(固定在文本中)。你很可能會將它們累加爲count(t),而不是概率,但概念上相同。 –