Python實現音樂的剪輯


一、讀取音頻文件

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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM