python與numpy使用的一些小tips[6]
1,推薦一個很不錯的語音庫librosa
librosa官網(雖然登不上,但翻牆可以)
2,載入語音
librosa.core.load - librosa 0.5.1 documentation
需要注意的是,它是會改變聲音的採樣頻率的
- sr:設置採樣pl
- mono:是否轉化為單聲道
y, sr = librosa.load(./arctic_a0003.wav,sr = 16000)nprint(sr)nprint(len(y))ny, sr = librosa.load(./arctic_a0003.wav)nprint(sr)nprint(len(y))n輸出:n16000n53841n22050n74200n
3,短時傅里葉變換
【librosa.core.stft - librosa 0.5.1 documentation】
- n_fft:一次變換的點數(如果比窗口小會用0補齊)
- hop_length:每一次移動多長,默認是窗口的1/4
- win_len:窗口長度
- center:當n_fft需要補齊的時候補齊的方式
4,短時傅里葉反變換
【librosa.core.istft - librosa 0.5.1 documentation】
只需要將stft的那個矩陣原封不動的傳入進去就可以恢複信號
需要說明的是:重建信號的質量和n_fft的長度無關【因為我試過不同長度的n_fft,聽上去沒任何差別】
5,如何取數據的實部與虛部
【採用Python語言如何建立複數並訪問虛部實部和模】
6,如何把實部與虛部再次拼接在一起
y, sr = librosa.load(./arctic_a0003.wav,sr = 16000)nD = librosa.stft(y,n_fft=2048)nE = D.real + (D.imag)*1jny_hat = librosa.istft(E)nlibrosa.output.write_wav(3.wav,y_hat,16000)n
這樣是可以無失真的復原信號的
歡迎關注公眾號:huangxiaobai880
https://www.zhihu.com/video/928210458257805312推薦閱讀:
※從一次CycleGAN實現聊聊TF
※轉載好文章「量產型炮灰工程師」
※Python學習基礎知識小結
※公司里是怎麼做數據抓取的? --- 搜狗詞庫抓取&解析
※Python系列之——利用Python實現微博監控