用python查看音频数据量#用python对音频图片截取保留拼接#根据乐谱生成音乐

 声音是如何转化为数据的?

设备录制声音声音后,根据声音的振幅呈现出振幅图。横轴为时间线,纵轴为振幅。

对声音时间线采样

声音转化为数据的过程,就是将连续的时间每一个固定的时间间隔取一个幅度值,把时间离散化为时刻。

采样周期=1/采样频率

对振幅值量化

对纵轴的声音的振幅也要量化,计算机用0,1表示,不能表示一些小数,所以要对一些小数取整,量化就是对振幅值进行限定和近似的过程。

采样和量化后,将其进行编码。

量化位数越高,采样的精度就越高,声音的质量也就越好。通常:

采样单位的二进制数 单位:位/字节

固定电话:8位

网络歌曲:16位或以上

声道数:包含声道的个数,电话通常为单声道,音乐为双声道,还有4,5.1,7.1声道,声道越多,声音就会更加立体逼真。

比特率=采样频率*量化位数*声道数

 数据量=比特率*持续时间

这些数据量往往很大,传输不易,人们就想到要将其进行压缩,减小数据量。


数据压缩原理:

重新编码,去掉原始数据中的冗余数据(即那些重复数据)。如:

AAAAAAAAAABBBBBBBBBB

将其进行数据压缩,就可以表示为 10A10B

将重复的数据用该值和重复的次数来代替,表达的信息一样,但是信息量减少了。

压缩分为有损压缩(用于压缩音频,视频)和无损压缩(用于压缩文件)。


在日常生活中,有的音频需要截取,拼接,这用python怎么做到呢?

截取与保存:

from pydub import AudioSegment as AS
song = AS.from_file('record.mp3', format='mp3')
song = song[4000:8500] + song[10000:14500]
file = song.export('song.mp3', format='mp3')
file.close()

注:

  • 本py文件要与record.mp3位于同一文件夹
  • 生成的song.mp3也位于该文件夹 
  • 拼接片段用“+”表示
  • 如果保存片段要连续凭借N次,就乘以N
  • 保存时需要指明文件格式

常见的音频格式:

wav:保存无压缩音频,声音质量好,但数据量大

mp3:压缩比高,可达10:1,且声音质量挺好

flac:无损压缩,比mp3好

rm:文件小,适合在线播放

wma: 优于mp3


根据乐谱生成音乐

步骤:

  1. 保留7个音符,用0表示停顿,简化后用字符串表示。
  2. 准备对应音符的mp3文件。
  3. 根据简谱将对应mp3文件拼接起来。

怎么准备对应音符的mp3文件?

先录制音符的发音,通过剪辑软件对其进行剪辑。

准备软件:

  • 录音机
  • 钢琴模拟器
  • 音频剪辑工具

这些工具都有在线平台,如果电脑没有,可以去网上搜。


版权声明:本文为m0_69217114原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。