Python 簡(jiǎn)單的擴(kuò)音未舟,音頻去噪祈噪,靜音剪切

簡(jiǎn)介

擴(kuò)音

音頻去噪

靜音剪切

基本概念

數(shù)字信號(hào)

數(shù)字信號(hào)是通過(guò)對(duì)連續(xù)的模擬信號(hào)采樣得到的離散的函數(shù)盗棵。它可以簡(jiǎn)單看作一個(gè)以時(shí)間為下標(biāo)的數(shù)組壮韭。比如,x[n]纹因,n為整數(shù)喷屋。比如下圖是一個(gè)正弦信號(hào)(n=0,1, ..., 9):

對(duì)于任何的音頻文件,實(shí)際上都是用這種存儲(chǔ)方式瞭恰,比如屯曹,下面是對(duì)應(yīng)英文單詞“skip”的一段信號(hào)(只不過(guò)由于點(diǎn)太多,筆者把點(diǎn)用直線連接了起來(lái)):

衡量數(shù)字信號(hào)的能量(強(qiáng)度)惊畏,只要簡(jiǎn)單的求振幅平方和即可:

E = sum(x[n]*x[n])

頻率

我們知道恶耽,聲音可以看作是不同頻率的正弦信號(hào)疊加。那么給定一個(gè)聲音信號(hào)(如上圖)颜启,怎么能夠知道這個(gè)信號(hào)在不同頻率區(qū)段上的強(qiáng)度呢偷俭?答案是使用離散傅里葉變換。對(duì)信號(hào)x[n], n=0, ..., N-1缰盏,通常記它的離散傅里葉變換為X[n]涌萤,它是一個(gè)復(fù)值函數(shù)淹遵。

比如,對(duì)上述英文單詞“skip”對(duì)應(yīng)的信號(hào)做離散傅里葉變換负溪,得到它在頻域中的圖像是:

可以看到能量主要集中在中低音部分(約16000Hz以下)透揣。

在頻域上,也可以計(jì)算信號(hào)的強(qiáng)度川抡,因?yàn)楦鶕?jù)Plancherel定理辐真,有:

E = sum(x[n]*x[n]) = 1/N*sum(|X[n]|*|X[n]|)

分幀

對(duì)于一般的語(yǔ)音信號(hào),長(zhǎng)度都至少在1秒以上猖腕,有時(shí)候我們需要把其中比如25毫秒的一小部分單獨(dú)拿出來(lái)研究拆祈。將一個(gè)信號(hào)依次取小段的操作,就稱作分幀倘感。技術(shù)上放坏,音頻分幀是通過(guò)給信號(hào)加一系列的函數(shù)實(shí)現(xiàn)的。

我們把一種特殊的函數(shù)w[n]老玛,稱作窗函數(shù)淤年,如果對(duì)所有的n,有0<=w[n]<=1蜡豹,且只有有限個(gè)n使得w[n]>0麸粮。比如去噪要用到的漢寧窗,三角窗镜廉。

漢寧窗

三角窗

我們將平移的窗函數(shù)與原始信號(hào)相乘弄诲,便得到信號(hào)的“一幀”:

w[n+d]*x[n]

比如用長(zhǎng)22.6毫秒的漢寧窗加到“skip”信號(hào)大約中間部位上,得到一幀的信號(hào):

可見(jiàn)除一有限區(qū)間之外娇唯,加窗后的信號(hào)其他部分都是0齐遵。

對(duì)一幀信號(hào)可以施加離散傅里葉變換(也叫短時(shí)離散傅里葉變換),來(lái)獲取信號(hào)在這一幀內(nèi)(通常是很短時(shí)間內(nèi))塔插,有關(guān)頻率-能量的分布信息梗摇。

如果我們把信號(hào)按照上述方法分成一幀一幀,又將每一幀用離散傅里葉變換轉(zhuǎn)換到頻域中去想许,最后將各幀在頻域的圖像拼接起來(lái)伶授,用橫坐標(biāo)代表時(shí)間,縱坐標(biāo)代表頻率流纹,顏色代表能量強(qiáng)度(比如紅色代表高能糜烹,藍(lán)色代表低能),那么我們就構(gòu)造出所謂頻譜圖漱凝。比如上述“skip”發(fā)音對(duì)應(yīng)的信號(hào)的頻譜圖是:

(使用5.8毫秒的漢寧窗)

從若干幀信號(hào)中疮蹦,我們又可以恢復(fù)出原始信號(hào)。只要我們適當(dāng)選取窗口大小碉哑,以及窗口之間的平移距離L挚币,得到 ..., w[n+2L], w[n+L], w[n], w[n-L], w[n-2L], ...,使得對(duì)k求和有:

sum(w[n+kL]) = 1

從而簡(jiǎn)單的疊加各幀信號(hào)便可以恢復(fù)出原始信號(hào):

sum(x[n]*w[n+kL]) = x[n]

最后扣典,注意窗函數(shù)也可以在頻域作用到信號(hào)上妆毕,從而可以起到取出信號(hào)的某一頻段的作用。

下面簡(jiǎn)單介紹一下3種音效贮尖。

1. 擴(kuò)音

要擴(kuò)大信號(hào)的強(qiáng)度笛粘,只要簡(jiǎn)單的增大信號(hào)的“振幅”。比如給定一個(gè)信號(hào)x[n]湿硝,用a>1去乘薪前,便得到聲音更大的增強(qiáng)信號(hào):

a*x[n]

同理,用系數(shù)0<a<1去乘关斜,便得到聲音變小的減弱信號(hào)示括。

2. 去噪(降噪)

對(duì)于白噪音,我們可以簡(jiǎn)單的用“移動(dòng)平均濾波器”來(lái)去除痢畜,雖然這也會(huì)一定程度降低聲音的強(qiáng)度垛膝,但效果的確不錯(cuò)。但是丁稀,對(duì)于成分較為復(fù)雜吼拥,特別是頻段能量分布不均勻的噪聲,則需要使用下面的噪聲門技術(shù)线衫,它可以看作是一種“多帶通濾波器”凿可。

這個(gè)特效的基本思路是:對(duì)一段噪聲樣本建模,然后降低待降噪信號(hào)中噪聲的分貝授账。

更加細(xì)節(jié)的說(shuō)枯跑,是在信號(hào)的若干頻段f[1], ..., f[M]上,分別設(shè)置噪聲門g[1], ..., g[M]矗积,每個(gè)門都有一個(gè)對(duì)應(yīng)的閾值全肮,分別是t[1], ..., t[M]。這些閾值時(shí)根據(jù)噪聲樣本確定的棘捣。比如當(dāng)通過(guò)門g[m]的信號(hào)強(qiáng)度超過(guò)閾值t[m]時(shí)辜腺,門就會(huì)關(guān)閉,反之乍恐,則會(huì)重新打開(kāi)评疗。最后通過(guò)的信號(hào)便會(huì)只保留下來(lái)比噪聲強(qiáng)度更大的聲音,通常也就是我們想要的聲音茵烈。

為了避免噪聲門的開(kāi)合造成信號(hào)的劇烈變動(dòng)百匆,筆者使用了sigmoid函數(shù)做平滑處理,即噪聲門在開(kāi)-關(guān)2個(gè)狀態(tài)之間是連續(xù)變化的呜投,信號(hào)通過(guò)的比率也是在1.0-0.0之間均勻變化的加匈。

實(shí)現(xiàn)中存璃,我們用漢寧窗對(duì)信號(hào)進(jìn)行分幀。然后對(duì)每一幀雕拼,又用三角窗將信號(hào)分成若干頻段纵东。對(duì)噪聲樣本做這樣的處理后,可以求出信號(hào)每一頻段對(duì)應(yīng)的閾值啥寇。然后偎球,又對(duì)原始信號(hào)做這樣的處理(分幀+分頻),根據(jù)每一幀每一頻段的信號(hào)強(qiáng)度和對(duì)應(yīng)閾值的差(diff = energy-threshold)辑甜,來(lái)計(jì)算對(duì)應(yīng)噪聲門的開(kāi)合程度衰絮,即通過(guò)信號(hào)的強(qiáng)度。最后磷醋,簡(jiǎn)單的將各頻段猫牡,各幀的通過(guò)信號(hào)疊加起來(lái),便得到了降噪信號(hào)邓线。

比如原先的“skip”語(yǔ)音信號(hào)頻譜圖如下:

可以看到有較多雜音(在高頻镊掖,低頻段,藍(lán)色部分)褂痰。采集0.25秒之前的聲音作為噪聲樣本亩进,對(duì)信號(hào)作降噪處理,得到降噪后信號(hào)的頻譜圖如下:

可以明顯的看到大部分噪音都被清除了缩歪,而語(yǔ)音部分仍完好無(wú)損归薛,強(qiáng)度也沒(méi)有減弱,這是“移動(dòng)平均濾波器”所做不到的匪蝙。

3. 靜音剪切

在對(duì)音頻進(jìn)行上述降噪處理后主籍,我們還可以進(jìn)一步把多余的靜音去除掉。

剪切的原理十分簡(jiǎn)單逛球。首先用漢寧窗對(duì)信號(hào)做分幀千元。如果該幀信號(hào)強(qiáng)度過(guò)小,則舍去該幀颤绕。最后將保留的幀疊加起來(lái)幸海,便得到了剪切掉靜音部分的信號(hào)。

比如奥务,對(duì)降噪處理后的“skip”語(yǔ)音信號(hào)做靜音剪切物独,得到的新信號(hào)的頻譜圖為:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市氯葬,隨后出現(xiàn)的幾起案子挡篓,更是在濱河造成了極大的恐慌,老刑警劉巖帚称,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件官研,死亡現(xiàn)場(chǎng)離奇詭異秽澳,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)戏羽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門肝集,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蛛壳,你說(shuō)我怎么就攤上這事∷叮” “怎么了衙荐?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)浮创。 經(jīng)常有香客問(wèn)我忧吟,道長(zhǎng),這世上最難降的妖魔是什么斩披? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任溜族,我火速辦了婚禮,結(jié)果婚禮上垦沉,老公的妹妹穿的比我還像新娘煌抒。我一直安慰自己,他們只是感情好厕倍,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布寡壮。 她就那樣靜靜地躺著,像睡著了一般讹弯。 火紅的嫁衣襯著肌膚如雪况既。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 50,084評(píng)論 1 291
  • 那天组民,我揣著相機(jī)與錄音棒仍,去河邊找鬼。 笑死臭胜,一個(gè)胖子當(dāng)著我的面吹牛莫其,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播耸三,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼榜配,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了吕晌?” 一聲冷哼從身側(cè)響起蛋褥,我...
    開(kāi)封第一講書(shū)人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎睛驳,沒(méi)想到半個(gè)月后烙心,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體膜廊,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年淫茵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了爪瓜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡匙瘪,死狀恐怖铆铆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情丹喻,我是刑警寧澤薄货,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布,位于F島的核電站碍论,受9級(jí)特大地震影響谅猾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鳍悠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一税娜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧藏研,春花似錦敬矩、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至袒哥,卻和暖如春缩筛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背堡称。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工瞎抛, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人却紧。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓桐臊,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親晓殊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子断凶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容