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)

 

posted @ 2018-11-15 21:38  月光男神  阅读(3185)  评论(0编辑  收藏  举报