為什麼星號(和其他系統)覺得需要重新生成通話中的 DTMF?
我正在使用 Asterisk 與可以通過 DTMF 互動進行程式和測試的模擬電話設備進行互動。
其中一些人說得很快。太快了,你可以令人信服地爭論;我會和你在一起。然而,Asterisk 完全能夠聽到音調,如果我有幸獲得帶內 DTMF 音頻的純流,我甚至可以非常成功地辨識非常快的音調。
當 Asterisk(或其他電話系統)決定需要辨識和重新生成 DTMF 時,就會出現問題。我意識到在向/從帶外 DTMF 進行轉換時這樣做很重要,但我不確定為什麼它似乎是執行此操作的預設操作,特別是為什麼它經常在很長的持續時間內重新生成(例如 100 毫秒;幸運的是,在 Asterisk 中,這可以更改,儘管它可能涉及重新編譯)這幾乎可以保證意味著失去數字。其他人報告了帶內轉換到帶外導致重複數字的問題,即使轉換不是必需的。
所以我的問題是:為什麼這是電話系統的 MO?除非明確需要翻譯,否則為什麼不單獨保留通話中的 DTMF?
以高保真 CD 錄製您最喜愛的歌曲。
使用您能找到的最便宜的麥克風進行錄製。
使用針對口語進行優化的糟糕 8 位音頻編解碼器對錄音進行編碼。
通過便宜的揚聲器播放錄音(並擺動電線)。
如果您並排聆聽 CD 和上面的鏈條,您會聽到電話中的東西被破壞得多麼嚴重。現在想像一下,您錄製的不是歌曲,而是 DTMF 音調,並試圖播放它們並讓電腦辨識它們。
這就是為什麼大多數 VoIP 系統使用帶外通道(如 RFC 2833)重新編碼 DTMF 音調的原因——壓縮、網路抖動、延遲和潛在的封包遺失使音頻編碼的 DTMF 容易失敗。
通過將 DTMF 音調作為帶外數據發送,它們可以重新插入到最接近 PSTN 的端點的音頻流中,從而將音調損壞的風險降至最低。
為什麼是 100 毫秒?因為某些電話線或遠端終端在較短的音調持續時間方面存在問題(如果您曾經通過嘈雜的陸線呼叫按鍵音系統,您可能會沮喪地按住一個按鈕幾秒鐘,以便讓系統辨識語氣)。
(100 毫秒可能太長 - 20-50 毫秒綽綽有餘)
您不必使用帶外信令——潮濕的 VoIP 系統將處理帶內信令(您通常必須在電話和伺服器上設置一個參數才能這樣做,並且您必須使用高質量的編解碼器(或者如果您想真正了解可靠性,則完全禁用壓縮)。
大多數部署它們的人選擇使用 RFC 2833(並重新編碼帶內接收的 DTMF),因為它更可靠。