1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      python的窗函數(shù) python窗體編程

      Python科學(xué)計算——復(fù)雜信號FFT

      FFT (Fast Fourier Transform, 快速傅里葉變換) 是離散傅里葉變換的快速算法,也是數(shù)字信號處理技術(shù)中經(jīng)常會提到的一個概念。用快速傅里葉變換能將時域的數(shù)字信號轉(zhuǎn)換為頻域信號,轉(zhuǎn)換為頻域信號后我們可以很方便地分析出信號的頻率成分。

      創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比三門峽網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式三門峽網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋三門峽地區(qū)。費用合理售后完善,10多年實體公司更值得信賴。

      當(dāng)我們把雙頻信號FFT示例中的 fft_size 的值改為 2**12 時,這時,基頻為 16Hz,不能被 1kHz整除,所以 1kHz 處發(fā)生了頻譜泄露,而它能被 4kHz 整除,所以 4kHz 可以很好地被采樣。

      由于波形的前后不是連續(xù)的,出現(xiàn)波形跳變,而跳變處有著非常廣泛的頻譜,因此FFT的結(jié)果中出現(xiàn)了頻譜泄漏。

      為了減小FFT所截取的數(shù)據(jù)段前后的跳變,可以對數(shù)據(jù)先乘以一個窗函數(shù),使得其前后數(shù)據(jù)能平滑過渡。常用的hanning窗函數(shù)的定義如下:

      50Hz 正弦波與hann窗函數(shù)乘積之后的重復(fù)波形如下:

      我們對頻譜泄漏示例中的1kHz 和 4kHz 信號進行了 hann 窗函數(shù)處理,可以看出能量更加集中在 1kHz 和 4kHz,在一定程度上抑制了頻譜泄漏。

      以 1kHz 三角波為例,我們知道三角波信號中含有豐富的頻率信息,它的傅里葉級數(shù)展開為:

      當(dāng)數(shù)字信號的頻率隨時間變化時,我們稱之為掃頻信號。以頻率隨時間線性變化的掃頻信號為例,其數(shù)學(xué)形式如下:

      其頻率隨時間線性變化,當(dāng)我們在 [0,1] 的時間窗口對其進行采樣時,其頻率范圍為 0~5kHz。當(dāng)時間是連續(xù)時,掃頻信號的頻率也是連續(xù)的。但是在實際的處理中,是離散的點采樣,因此時間是不連續(xù)的,這就使掃頻信號的快速傅里葉變換問題退化為多點頻信號快速傅里葉變換問題。其快速傅里葉變換得到的頻譜圖如下所示:

      以 50Hz 正弦信號相位調(diào)制到 1kHz 的信號為例,其信號形式如下:

      它的時域波形,頻率響應(yīng)和相位響應(yīng)如下圖所示:

      以掃頻信號為例,當(dāng)我們要探究FFT中的能量守恒時,我們要回歸到信號最初的形式:

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

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

      函數(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ù)

      n_fft:fft的長度,默認2048

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

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

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

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

      參考:

      主要用這兩個

      matplotlib.pyplot.pcolormesh()

      matplotlib.pyplot.colorbar()

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

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

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

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

      Python 簡單的擴音,音頻去噪,靜音剪切

      數(shù)字信號是通過對連續(xù)的模擬信號采樣得到的離散的函數(shù)。它可以簡單看作一個以時間為下標(biāo)的數(shù)組。比如,x[n],n為整數(shù)。比如下圖是一個正弦信號(n=0,1, ..., 9):

      對于任何的音頻文件,實際上都是用這種存儲方式,比如,下面是對應(yīng)英文單詞“skip”的一段信號(只不過由于點太多,筆者把點用直線連接了起來):

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

      我們知道,聲音可以看作是不同頻率的正弦信號疊加。那么給定一個聲音信號(如上圖),怎么能夠知道這個信號在不同頻率區(qū)段上的強度呢?答案是使用離散傅里葉變換。對信號x[n], n=0, ..., N-1,通常記它的離散傅里葉變換為X[n],它是一個復(fù)值函數(shù)。

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

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

      在頻域上,也可以計算信號的強度,因為根據(jù)Plancherel定理,有:

      對于一般的語音信號,長度都至少在1秒以上,有時候我們需要把其中比如25毫秒的一小部分單獨拿出來研究。將一個信號依次取小段的操作,就稱作分幀。技術(shù)上,音頻分幀是通過給信號加一系列的 窗 函數(shù) 實現(xiàn)的。

      我們把一種特殊的函數(shù)w[n],稱作窗函數(shù),如果對所有的n,有0=w[n]=1,且只有有限個n使得w[n]0。比如去噪要用到的漢寧窗,三角窗。

      漢寧窗

      三角窗

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

      w[n+d]*x[n]

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

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

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

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

      (使用5.8毫秒的漢寧窗)

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

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

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

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

      1. 擴音

      要擴大信號的強度,只要簡單的增大信號的“振幅”。比如給定一個信號x[n],用a1去乘,便得到聲音更大的增強信號:

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

      2. 去噪(降噪)

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

      這個特效的基本思路是:對一段噪聲樣本建模,然后降低待降噪信號中噪聲的分貝。

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

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

      實現(xiàn)中,我們用漢寧窗對信號進行分幀。然后對每一幀,又用三角窗將信號分成若干頻段。對噪聲樣本做這樣的處理后,可以求出信號每一頻段對應(yīng)的閾值。然后,又對原始信號做這樣的處理(分幀+分頻),根據(jù)每一幀每一頻段的信號強度和對應(yīng)閾值的差(diff = energy-threshold),來計算對應(yīng)噪聲門的開合程度,即通過信號的強度。最后,簡單的將各頻段,各幀的通過信號疊加起來,便得到了降噪信號。

      比如原先的“skip”語音信號頻譜圖如下:

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

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

      3. 靜音剪切

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

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

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


      網(wǎng)站標(biāo)題:python的窗函數(shù) python窗體編程
      網(wǎng)站路徑:http://www.ef60e0e.cn/article/dogjhgp.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        新巴尔虎右旗| 沭阳县| 民勤县| 龙海市| 八宿县| 台南县| 庆云县| 宁强县| 镇赉县| 古交市| 息烽县| 盐城市| 苏州市| 汝州市| 宜兰市| 克拉玛依市| 达孜县| 凤冈县| 定西市| 岗巴县| 田林县| 醴陵市| 郯城县| 阿拉善右旗| 临漳县| 东安县| 兴海县| 连云港市| 利川市| 犍为县| 东乌珠穆沁旗| 正镶白旗| 巫溪县| 博湖县| 榕江县| 奉贤区| 于田县| 刚察县| 宽甸| 大理市| 墨玉县|