欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

python實(shí)現(xiàn)窗函數(shù)的簡單介紹

python中怎么生成基于窗函數(shù)的fir濾波器

SciPy提供了firwin用窗函數(shù)設(shè)計(jì)低通濾波器,firwin的調(diào)用形式如下:

創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供宜豐網(wǎng)站建設(shè)、宜豐做網(wǎng)站、宜豐網(wǎng)站設(shè)計(jì)、宜豐網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、宜豐企業(yè)網(wǎng)站模板建站服務(wù),十載宜豐做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

firwin(N, cutoff, width=None, window='hamming')

其中N為濾波器的長度;cutoff為以正規(guī)化的頻率;window為所使用的窗函數(shù)。

2020-01-18 python實(shí)現(xiàn)stft并繪制時(shí)頻譜

官方文檔中給出了非常詳細(xì)的安裝方法

函數(shù)聲明:

librosa.core.stft(y, n_fft=2048, hop_length=None, win_length=None, window='hann', center=True, dtype=class 'numpy.complex64', pad_mode='reflect')

常用參數(shù)說明:

y:輸入的numpy數(shù)組,要求都是實(shí)數(shù)

n_fft:fft的長度,默認(rèn)2048

hop_length:stft中窗函數(shù)每次步進(jìn)的單位

win_length:窗函數(shù)的長度

window:窗函數(shù)的類型

return:一個(gè)1+n_fft/2*1+len(y)/hop_length的二維復(fù)數(shù)矩陣,其實(shí)就是時(shí)頻譜

參考:

主要用這兩個(gè)

matplotlib.pyplot.pcolormesh()

matplotlib.pyplot.colorbar()

Python 簡單的擴(kuò)音,音頻去噪,靜音剪切

數(shù)字信號(hào)是通過對(duì)連續(xù)的模擬信號(hào)采樣得到的離散的函數(shù)。它可以簡單看作一個(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)(只不過由于點(diǎn)太多,筆者把點(diǎn)用直線連接了起來):

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

我們知道,聲音可以看作是不同頻率的正弦信號(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定理,有:

對(duì)于一般的語音信號(hào),長度都至少在1秒以上,有時(shí)候我們需要把其中比如25毫秒的一小部分單獨(dú)拿出來研究。將一個(gè)信號(hào)依次取小段的操作,就稱作分幀。技術(shù)上,音頻分幀是通過給信號(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]

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

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

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

如果我們把信號(hào)按照上述方法分成一幀一幀,又將每一幀用離散傅里葉變換轉(zhuǎn)換到頻域中去,最后將各幀在頻域的圖像拼接起來,用橫坐標(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求和有:

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

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

下面簡單介紹一下3種音效。

1. 擴(kuò)音

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

同理,用系數(shù)0a1去乘,便得到聲音變小的減弱信號(hào)。

2. 去噪(降噪)

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

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

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

為了避免噪聲門的開合造成信號(hào)的劇烈變動(dòng),筆者使用了sigmoid函數(shù)做平滑處理,即噪聲門在開-關(guān)2個(gè)狀態(tài)之間是連續(xù)變化的,信號(hào)通過的比率也是在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),來計(jì)算對(duì)應(yīng)噪聲門的開合程度,即通過信號(hào)的強(qiáng)度。最后,簡單的將各頻段,各幀的通過信號(hào)疊加起來,便得到了降噪信號(hào)。

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

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

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

3. 靜音剪切

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

剪切的原理十分簡單。首先用漢寧窗對(duì)信號(hào)做分幀。如果該幀信號(hào)強(qiáng)度過小,則舍去該幀。最后將保留的幀疊加起來,便得到了剪切掉靜音部分的信號(hào)。

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

網(wǎng)頁標(biāo)題:python實(shí)現(xiàn)窗函數(shù)的簡單介紹
網(wǎng)頁URL:http://chinadenli.net/article42/doohdhc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈靜態(tài)網(wǎng)站ChatGPT做網(wǎng)站品牌網(wǎng)站建設(shè)自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)