zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    高性能IO模型浅析
    使用vbs脚本进行批量编码转换
    Linux模块机制浅析
    源文件移动后gdb不显示代码的原因
    Linux的原子操作与同步机制
    ARM的常数表达式
    安装卡巴 OFFICE链接 出现这个过程被中断,由于本机的限制
    selenium “could not be scrolled into view”
    bs4 FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml. Do you need to install a parser library?
    vim实现实时自动保存
  • 原文地址:https://www.cnblogs.com/MoonlightMaleGod/p/9966240.html
Copyright © 2011-2022 走看看