MP3编辑器
疫情,娃居家上网课,英语老师发听力练习册之音频文件一个,含所有听力内容。为方便播放,将此文件,以单元进行切割。由于份数不多,断点以手动识别,方法是将音频数据可视化为曲线,并人工判断,曲线长期在0点即为所寻断点,代码如下。
另,未经授权不得转载,尤其是百度文库,不得厚颜复制,百度不可无耻
import wave import numpy as np import matplotlib.pyplot as plt music = wave.open(r'D:\sanx.wav',mode='rb') music.getparams() #返回值分别对应 通道数 采样字节长度 采样频率 总帧数(总的采样数) #_wave_params(nchannels=2, sampwidth=2, framerate=48000, nframes=597007872, comptype='NONE', compname='not compressed') data=music.readframes(nframes=597007872) data=np.frombuffer(data, dtype=np.int16) print(data.shape) data = data.reshape(597007872,2) #双声道 #data.shape left=data[:596976000,0] #597007872/48000=12437.664, nframes/framerate=time。取整12437*48000=596976000 left=left.reshape(12437,48000) #只取左声道,便于观察曲线 maxleft=np.max(left,axis=1) #取最大值即可用来观察起止点 #ampSample=data[100*48000:110*48000,:] #取前100对数据,用于看放大音量效果 #amp=ampSample*3 #放大2倍 #print(amp.shape) %matplotlib qt5 #sx_unit1 = data[:650*48000] #first 650seconds,framerate=48000 #ax=plt.plot(maxleft[4175:4770]) #用来看起止点 fig, ax = plt.subplots() ax.plot(maxleft[4175:4770]) ax.xaxis.set_major_locator(plt.MultipleLocator(15)) plt.show() #plt.plot(ampSample) #plt.plot(amp) sx_unit1 = data[6095*48000:6545*48000]*3 #sx_unit9 fp1 = wave.Wave_write('D:\sx_unit1.wav') #创建空文件sx_unit9.wav fp1.setframerate(48000) fp1.setnframes(542*48000) #time length fp1.setnchannels(2) fp1.setsampwidth(2) fp1.writeframes(sx_unit9.tobytes()) #s写入数据sx_unit9 fp1.close()
后断单元依此类推。
wav转mp3的方式: ffmpeg -i sx_unit2.wav sx_unit2.mp3
百度不可无耻