91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用python怎么對音頻進行處理

發布時間:2020-12-23 14:05:16 來源:億速云 閱讀:596 作者:Leah 欄目:開發技術

這篇文章將為大家詳細講解有關利用python怎么對音頻進行處理,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

一:讀取本地音頻數據

處理音頻第一步是需要從讓計算機“聽到”聲音,這里我們使用 python 標準庫中自帶的 wave模塊進行音頻參數的獲取。

(1) 導入 wave 模塊
(2) 使用 wave 中的函數 open 打開音頻文件,wave.open(file,mode)函數帶有兩個參數, 第一個 file 是所需要打開的文件名及路徑,使用字符串表示;第二個 mode 是打開的模式,也是用字符串表示 ('rb'或'wb')
(3) 打開音頻后使用 getparams() 獲取音頻基本的相關參數(nchannels:聲道數,
sampwidth:量化位數或量化深度,framerate:采樣頻率,nframes:采樣點數)

# 導入 wave 模塊
import wave
# 用于繪制波形圖
import matplotlib.pyplot as plt
# 用于計算波形數據
import numpy as np
# 用于系統處理,如讀取本地音頻文件
import os
 
# 打開WAV文檔
f = wave.open(r"2.wav",'rb' )
# 讀取格式信息
params = f.getparams ()
nchannels,sampwidth, framerate, nframes = params [:4]
print(framerate)

二:讀取單通道音頻,并繪制波形圖(常見音頻為左右2個聲道)

(1) 通過第一步,可以繼續讀取音頻數據本身,保存為字符串格式

readframes:

讀取聲音數據,傳遞一個參數指定需要讀取的長度(以取樣點為單位),readframes返回的是二進制數據(一大堆bytes),在Python中用字符串表示二進制數據。

strData = f.readframes(nframes)

(2) 如果需要繪制波形圖,則需要將字符串格式的音頻數據轉化為 int 類型

frombuffer:

根據聲道數和量化單位,將讀取的二進制數據轉換為一個可以計算的數組。

通過frombuffer函數將二進制轉換為整型數組,通過其參數dtype指定轉換后的數據格式。

waveData=np.frombuffer(strData,dtype=np.int16)

此處需要使用到 numpy 進行數據格式的轉化

(3) 將幅值歸一化
把數據變成(0,1)之間的小數。主要是為了數據處理方便提出來的,把數據映射到0~1范圍之內處理,更加便捷快速。

waveData=waveData*1.0/(max(abs(waveData)))

這一步去掉也可畫出波形圖,可以嘗試不用此步,找出波形圖的不同

(4) 繪制圖像

通過取樣點數和取樣頻率計算出取樣的時間:

time = np.arange(0,nframes)*(1.0/framerate)

import wave
# 導入 wave 模塊
import matplotlib.pyplot as plt
# 用于繪制波形圖
import numpy as np
# 用于計算波形數據
import os
#  用于系統處理,如讀取本地音頻文件
 
f = wave.open(r"di.wav",'rb' )
params = f.getparams ()
nchannels,sampwidth, framerate, nframes = params [:4]
print(framerate)
 
# 讀取波形數據
strData = f.readframes(nframes)
# 將字符串轉換為16位整數
waveData = np.frombuffer(strData,dtype=np.int16)
# 幅值歸一化
waveData = waveData*1.0/(max(abs(waveData)))
#計算音頻的時間
time = np.arange(0,nframes)*(1.0 / framerate)
 
plt.plot(time,waveData)
plt.xlabel("Time(s)")
plt.ylabel("Amplitude") 
plt.title("Single channel wavedata")
plt.show()

關于利用python怎么對音頻進行處理就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

磐石市| 托克逊县| 通州区| 洛宁县| 密山市| 和硕县| 长武县| 榆树市| 凤凰县| 大埔区| 六安市| 枣阳市| 财经| 遂川县| 怀集县| 伊春市| 揭阳市| 砚山县| 德清县| 淳安县| 宁河县| 南通市| 富顺县| 福建省| 许昌市| 乌拉特后旗| 和田市| 鹰潭市| 晋中市| 获嘉县| 静宁县| 通江县| 承德县| 商南县| 安乡县| 博乐市| 英山县| 临城县| 阿荣旗| 华坪县| 临潭县|