談談語音通訊中的各種tone

2021-08-20 23:28:15 字數 2283 閱讀 4324

今天談的這個主題(tone)存在於我們的日常打**過程中。先舉兩個場景:1,你拿起固話話筒準備打**,按**號碼前先從話筒裡聽到「嗡」的連續音,這叫dial tone(撥號音,表示你可以撥**號碼了),你撥完號碼對方振鈴後你又聽到有規律的「嘟-嘟-」的斷續音,這叫ring back tone(回鈴音,表示對方已振鈴了)。2,你給企業服務號(比如中國移動的10086)打**,對方叫你按鍵選擇,當你按下鍵後會聽到按鍵聲,這叫dtmf tone(雙音多頻音)。感覺到它存在於我們日常的打**過程中了吧。現在我們就從技術的角度談談這些tone。

在語音通訊中tone主要分兩大類:cpt(call progress tone,呼叫過程音)tone和dtmf(dual tone multi frequency,雙音多頻音)tone。cpt tone存在於通話過程中,主要用於告訴使用者目前在什麼狀態,主要有dial tone(撥號音)/ringback tone(回鈴音)/busy tone(忙音)等。cpt tone是單頻音,即由乙個頻率的正弦波形成。cpt tone沒有全球統一的標準,而是各個國家有自己的標準,比如中國的標準,歐洲的標準,美國的標準等。下表就是我們國家的標準:

還有其他型別的cpt tone,由於用的相對較少,這裡就不一一列出了。相對於cpt tone是單頻音,dtmf tone是雙頻音,即用兩個頻率(乙個高頻和乙個低頻)的正弦波疊加去表示某個按鍵值。與cpt tone各國有自己的標準不同的是dtmf tone全球有統一的標準,下表列出了常用的16個按鍵值是由哪些高頻音和低頻音組合而成的:

從軟體實現的角度對tone主要有兩類處理:tone generation,讓使用者聽到tone;tone detection,主要是指dtmf tone的detection,讓軟體知道哪個按鍵按下了,好進行後續的處理。我們先看tone generation,也就是生成單個頻率的正弦波(cpt tone)或者兩個頻率正弦波的疊加(dtmf tone),在訊號處理上有相應的演算法。對於單頻正弦波,各個取樣點上值的生成可通過如下的數學表示式求得:

其中a/y(0)/y(1)在各個頻點上的值已事先根據數學公式做成表,從而減少數**算。對於dtmf這樣的雙頻率音來說,取樣點上的值就是兩個頻率取樣點上的值相加。tone generation分兩個方向,local 和remote。local是tone讓自己聽到,把生成的正弦波放到rx stream上;remote是tone讓對端聽到,把生成的正弦波放到tx stream上。對於像ring back tone等斷續音還需要timer控制放多長時間停多長時間。

1,把dtmf音訊訊號直接編碼得到碼流放在rtp中發給對端。對端收到rtp包後解碼復原出音訊訊號,然後再通過dtmf detection演算法得到鍵值。這通常被叫做in-band方法。

2,在本端做dtmf detection得到鍵值,然後根據rfc2833(後來公升級成rfc4733)組成rfc2833包發給對端。對端收到rfc2833包後去解析就知道是哪個鍵值了。這通常被叫做out-of-band方法。rfc2833包也是用rtp做承載,不過它的payload type是動態的(96~127之間乙個值),payload共4個位元組(32個位元),具體如下:

其中bit0-7(共8位)表示鍵值,bit8表示dtmf按鍵結束,bit9目前保留不用,bit10-15(共6位)表示按鍵訊號的level(dbm表示),bit16-31(共16位)表示按鍵持續的時間(以取樣值為單位)。乙個dtmf鍵會生成多個rfc2833包,對同乙個鍵值而言,這些包的sequence number會每次加1,但是timestamp不變,duration會持續增加,以8k取樣率20ms為一包為例,第乙個rfc2833包duration為160,第二個rfc2833包duration為320,依次向上加,直到end包(bit8置1)結束。end包會發3次(發3 次主要是為了防丟包),每個end包sequence number會加1,但是duration保持不變。

3,在本端做dtmf detection得到鍵值,然後通過sip信令的info帶給對端,讓對端知道是哪個鍵值。

這三種方法中,具體用那種方法要看雙方裝置的支援程度,在sdp中有個協商的過程,最終選用雙方都支援的一種方法(如果雙方都支援多種方法,還有乙個優先順序來控制選擇哪種方法)來傳送dtmf值。

談談語音通訊中的各種tone

今天談的這個主題 tone 存在於我們的日常打 過程中。先舉兩個場景 1,你拿起固話話筒準備打 按 號碼前先從話筒裡聽到 嗡 的連續音,這叫dial tone 撥號音,表示你可以撥 號碼了 你撥完號碼對方振鈴後你又聽到有規律的 嘟 嘟 的斷續音,這叫ring back tone 回鈴音,表示對方已振...

網路通訊中各種裝置介紹

在計算機網路中,我們經常遇到集線器hub,交換機switch,網橋bridge,路由器router,今天來介紹一下這幾個裝置的功能。所以集線器的功能就是乙個口接收訊號,原封不動的傳送到其他所有口,相當於乙個大喇叭,有點類似於廣播。但比廣播更存粹。由於hub只是簡單的 所以hub工作物理層 l1 網橋...

VOIP通訊中影響語音質量的因素

在voip通訊中,影響語音質量的因素比較多,歸類起來就以下幾個大的因素 1 網路因素,網路一般體現在網路的延遲 抖動 丟包。延遲一般是有語音的編譯碼速度 jitterbuffer延遲 tcp ip協議棧處理速 度 中間路由器路由延遲等引起的,在這些因素中,最重要的是jitterbuffer延遲和中間...