一、讀取音頻文件
from scipy.io import wavfile import numpy as np like = wavfile.read('./嚶嚶嚶.wav') print (like)
結果:
圖片是三維的ndarray,視頻是四維的由[[img],[img],[img]]+音頻組成
這里讀取音頻文件使用的scipy,scipy四個高端科學計算端。
音頻結果將返回一個tuple。第一維參數是采樣頻率,單位為秒;第二維數據是一個ndarray表示歌曲,如果第二維的ndarray只有一個數據表示單聲道,兩個數據表示立體聲。很明顯這里是個立體聲。
所以,通過控制第二維數據就能對歌曲進行裁剪。
繼續音頻裁剪就是:
like[1][ start_s*44100 : end_s*44100 ]
對like這個元組第二維數據進行裁剪,所以是like[1];第二維數據中是對音樂數據切分。 start_s表示你想裁剪音頻的起始時間;同理end_s表示你裁剪音頻的結束時間。乘44100 是因為每秒需要進行44100次采樣。
對音頻進行裁剪,並保存到本地,使用wavfile中的write:
wavfile.write('like2.wav',44100,like[1][30*44100:45*44100])
第一個參數表示,保存的路徑。第二個參數表示采樣頻率。第三個參數表示裁剪的音樂片段。
完整代碼就是:
1 from scipy.io import wavfile 2 import numpy as np 3 like = wavfile.read('./嚶嚶嚶.wav')
4 wavfile.write('like2.wav',44100,like[1][30*44100:45*44100])
二、兩段音樂拼接:
音樂拼接使用ndarray的級聯:
np.concatenate(參數1:參數2)
完整代碼:
from scipy.io import wavfile import numpy as np like = wavfile.read('./嚶嚶嚶.wav') jueji = wavfile.read('./林俊傑-愛不會絕跡.wav') mix = np.concatenate([like[1][:30*44100],jueji[1][-30*44100:]])
wavfile.write('./mix.wav',44100,mix)