pygame.sndarray
pygame 中訪問音訊取樣資料的模組。
函式pygame.sndarray.array —— 將乙個音訊取樣複製到乙個陣列內
pygame.sndarray.samples —— 將乙個音訊取樣引用到乙個陣列內
pygame.sndarray.make_sound —— 將乙個陣列轉變成乙個音訊物件
pygame.sndarray.use_arraytype —— 設定用於音訊陣列的陣列系統
pygame.sndarray.get_arraytype —— 獲取當前正在使用的陣列型別
pygame.sndarray.get_arraytypes —— 獲取當前正在工作的陣列系統型別
以上函式用於在數字陣列和音訊物件之間進行相互轉換。
本模組僅當 pygame 可以使用 numpy 或 numeric 模組時是有效的(numeric 相對過時了,請使用最新的 numpy)。
音訊資料是由每秒數千個取樣組成,而且每個取樣都是特定時刻的音波的振幅。例如,在 22-khz 格式裡,音訊陣列的第 5 個元素是音波在 5/22000 秒後的振幅。
每個取樣是乙個 8 位或者 16 位的整數,這取決於資料格式。乙個立體聲檔案裡每個取樣有兩個值,而單聲道檔案裡每個取樣只有乙個值。
支援的陣列系統有:
numpy
numeric(過時,將在 pygame 1.9.3 中棄用)
複製**
如果安裝了 numpy 模組,那麼預設使用的是 numpy 陣列。否則將會被設定成 numeric(如果有安裝),但會產生乙個反對的警告(說這玩意兒快過時了,建議使用 numpy 代替)。
如果 numpy 和 numeric 都沒有安裝,本模組會產生乙個 importerror 錯誤。
通過使用 use_arraytype() 函式,可以改變使用的陣列型別(將字串 "numpy" 或 "numeric" 作為引數)。
注意:numpy 和 numeric 並不是完全相容。對於某一種陣列型別來說的乙個正確操作,可能在另外一種陣列型別中會產生不同的效果,甚至導致徹底的崩潰。
此外,相比於 numeric,numpy 可以使用無符號 16 位整數。如果音訊取樣型別需要,16 位的音訊資料可以被當做無符號整數使用。而 numeric 則總是使用有符號整數表示取樣資料。這十分重要,請務必牢記。
在 pygame 1.8 中加入對 numpy 的支援,並於 pygame 1.9.2 開始反對使用 numeric 。
函式詳解
pygame.sndarray.array()
將乙個音訊取樣複製到乙個陣列內。
array(sound) -> array
建立乙個新的陣列用於儲存音訊資料,並將取樣值複製到陣列內。
這個陣列將一直保持由 pygame.mixer.get_init() 所返回的格式。
pygame.sndarray.samples()
將乙個音訊取樣引用到乙個陣列內。
samples(sound) -> array
建立乙個直接引用音訊物件內的取樣的新陣列。修改這個陣列將會改變音訊。
這個陣列將一直保持由 pygame.mixer.get_init() 所返回的格式。
pygame.sndarray.make_sound()
將乙個陣列轉變成乙個音訊物件。
make_sound(array) -> sound
mixer 模組必須先初始化,且陣列格式必須與 mixer 音訊格式相似。
pygame.sndarray.use_arraytype()
設定用於音訊陣列的陣列系統。
use_arraytype (arraytype) -> none
使用模組函式所要求的陣列型別。目前支援的陣列型別為:
numpy
numeric(過時,將在 pygame 1.9.3 中棄用)
複製**
如果要求的型別不被支援,會產生乙個 valueerror 的錯誤。
pygame.sndarray.get_arraytype()
獲取當前正在使用的陣列型別。
get_arraytype () -> str
返回當前正在使用的陣列的型別。
此函式返回的是 get_arraytypes() 的返回元組內的乙個值,而且會表明哪種陣列模組型別被用於建立該陣列。
pygame.sndarray.get_arraytypes()
獲取當前正在工作的陣列系統型別
get_arraytypes () -> tuple
檢查哪個陣列系統是可使用的然後返回相應的字串元組。
元組的值可以被直接用於 pygame.sndarray.use_arraytype() 函式。如果沒有發現受支援的陣列系統型別,返回 none。
音訊中的取樣率和位元率的關係
取樣頻率,也稱為取樣速度或者取樣率,定義了每秒從連續訊號中提取並組成離散訊號的取樣個數,它用赫茲 hz 來表示。取樣頻率的倒數是取樣週期,它是取樣之間的時間間隔。通俗的講取樣頻率是指計算機每秒鐘採集多少個訊號樣本。如音訊取樣頻率是指錄音裝置在一秒鐘內對聲音頻號的取樣次數,取樣頻率越高聲音的還原就越真...
C語言 PCM音訊資料處理 降低取樣率
用一麥克風錄製的pcm資料,為16bit 48khz 單聲道,而我希望得到的是16khz取樣率的pcm資料,那就通過降低取樣率的方法,去實現48000hz到16000hz取樣率的轉換。轉換原理比較簡單,48000hz降到16000hz,實際上降了3倍,同一時間的單位區間內,48000hz取樣了3個點...
Matlab訪問struct中資料
這幾天在用matlab,做深度學習,一直想訪問struct中的資料,但是每次都是只能訪問到乙個,有些苦悶。在網上搜了一圈,也沒有發現,後來在官網上發現了乙個方法,看來,matlab的文件還是很可靠的。特此在這裡mark一下。建立乙個 1 3 的結構體 s,其中包含字段 f s 1 f 1 s 2 f...