數(shù)學實現(xiàn)信號分析[コード?エテスウェイ]: 蛇嘗試轉(zhuǎn)門把手

***歌名太長了,?標題放不下全部的名字***
「コード?エテスウェイ (Class::ETHES_WEI=>extends.COMMUNI_SAT .)」

今天來說一下后續(xù)需要的編程的東西
最基礎(chǔ)的蛇編程隨便說說就完事了, 網(wǎng)上真的有太多的教程了
新建記事本, 然后重命名為py后綴的文件就是一個非常簡單的蛇項目了, 然后就把默認打開方式改為上期說到的編輯器就好, 在編輯器里就可以寫程序了,?

在程序里代碼是從上往下運行的, print可以把括號內(nèi)的東西打印到屏幕上,?
當遇到? ?if? ? elif? ? else? ? ?for? ? while? ?這些就按照相應的順序運行

還有就是def和class, class我基本不會用, 此處忽略,? ? def是可以定義一個函數(shù), 定義了函數(shù)后, 可以在后續(xù)調(diào)用這個函數(shù), 調(diào)用時就會按照平常的情況運行函數(shù)內(nèi)的代碼

py最基本的格式就說到這里了, 如果還有不懂的可以參考下面的教程
https://www.runoob.com/python3/python3-tutorial.html

Numpy
蛇里面的列表list非常好用, 沒有固定的長度, 可以用append()增加元素, 但是在很多列表套進列表的話, 對元素的操作不夠自由, 于是仿照c和matlab的數(shù)組就開發(fā)出了numpy (以下簡稱np)

np太多細節(jié)了, 以后說到的時候再補充吧, 我現(xiàn)在都還沒完全了解np
https://www.runoob.com/numpy/numpy-tutorial.html

matplotlib
matplotlib擁有十分簡潔的畫圖方法, 用法是:? ? ??首先用plot等畫圖函數(shù)畫好圖像, 然后用loglog等挑戰(zhàn)畫幅, 然后用show展示圖像,??注: 展示圖像時程序是完全停止運行的, 直到關(guān)閉圖像

https://morvanzhou.github.io/tutorials/data-manipulation/plt/



接下來就說一些音頻相關(guān)的東西
在電腦中, 是不存在連續(xù)的事物的, 每個東西都是分立的
就以上面matplotlib的圖片為例子, 假如藍色的線條是現(xiàn)實的音波, 那么音波的變化是連續(xù)的,? ?但是電腦的麥克風記錄下來的卻是紅色的這條線, 每隔一點段時間記錄一次音波強度, 就得到了紅色這條線了
我們稱"不連續(xù)"為"離散",

以音頻為例, 記錄了一堆音波強度之后, 按照順序排列好, 然后記下數(shù)據(jù)之間的時間間隔是多少, 就可以進行播放了,??也就是說在電腦里時間是不重要的, 重要的是數(shù)據(jù)的排列順序, 既然如此, 在"離散"的情況下, 頻率對應的意義就不是"次/秒"了, 而是"在這個數(shù)據(jù)塊中出現(xiàn)的頻率"(類似于概率)

人耳最高可以聽到20kHz的聲音, 但是音頻的采樣頻率不能是20kHz
因為如果采樣頻率和震動頻率一致的話, 那么采樣出來的結(jié)果就是處處相同, 這就完全看不出震動的效果了,? 所以常用的音頻采樣頻率有44.1kHz和48kHz, 甚至還有81kHz

既然我們要分析音頻, 那么首先要得到音波的數(shù)據(jù)
掏出最常見的音頻文件mp3, 然后扔掉
mp3是一種經(jīng)過壓縮的文件格式, 先不說是有損的儲存方式, 要把里面的音頻數(shù)據(jù)拿出來也要經(jīng)過特別的解碼,? 所以我們需要wav無損音頻格式
大家可以上網(wǎng)找到各種在線mp3裝wav的網(wǎng)站, 但是這種方法不僅很復雜, 還很耗時間, 所以我們需要理由萬能的蛇
首先要安裝pydub:? ? ?pip install pydub? ? ? ? ? ??然后就是安裝FFmpeg

https://zh.wikihow.com/%E5%9C%A8Windows%E4%B8%8A%E5%AE%89%E8%A3%85FFmpeg%E7%A8%8B%E5%BA%8F
然后使用這個代碼就可以把mp3轉(zhuǎn)化為wav了

然后我們有了wav文件, 用以下函數(shù)就可以得到音波數(shù)據(jù)了

得到的wave數(shù)組包含多聲道, 在常見雙聲道的文件中, wave[0]是左聲道, wave[1]是右聲道
在得到了wave和rate之后就可以"看到"音波了

得到的圖像就是本篇的封面了

講到非常倉促, 因為并不打算在編程上花太多篇幅 (我甚至原本打算這篇和上一篇一起講的= =)
不過總算是把必要的東西都說了一遍, 下一篇可以正式進入DFT了

我覺得已經(jīng)有很多人放棄了, 嘛, 不過專欄還是會繼續(xù)更新的, 如果沒什么人看的話, 質(zhì)量可能會大幅度下降而已(就像這篇一樣)