关于企业官方网站建设的ppt,上海市网站开发公司排名,网站架构图一般包括什么,wordpress文章自定义栏目wave
常见的语音信号处理python库有librosa, scipy, soundfile等等。wave库是python的标准库#xff0c;对于python来说相对底层#xff0c;wave不支持压缩/解压#xff0c;但支持单声道/立体声语音的读取。
读取音频
import wave #导入库file_path D:/ba.wav #文件路径…wave
常见的语音信号处理python库有librosa, scipy, soundfile等等。wave库是python的标准库对于python来说相对底层wave不支持压缩/解压但支持单声道/立体声语音的读取。
读取音频
import wave #导入库file_path D:/ba.wav #文件路径
f wave.open(file_path, rb) #读取参数
params f.getparams()nchannels, sampwidth, framerate, nframes params[:4]
str_data f.readframes(nframes)
f.close()audio_data np.frombuffer(str_data, dtypenp.short)
audio_data1 audio_data*1.0/(max(abs(audio_data)))#归一化到[-1,1]
time np.arange(0, nframes) * (1.0 / framerate)“WAV”格式文件由“fmt”和“data”两个部分组成其中“fmt”的存储块用来存音频文件的格式“data”的存储块用来存实际的声音信息物理上描述的振幅和时间长度(时间)和振幅。
我们看看读取到的参数params
里面包含6个子参数
getparams()得到的params返回6个参数分别是(nchannels,sampwidth,framerate,nframe,comptype,compname)
nchannels返回音频通道的数量单声道为1立体声为2。sampwidth返回以字节为单位的样本宽度。字节byteframerate返回采样频率。nframe返回音频帧数。这里应该是点数看后面解释comptype返回压缩类型“ NONE”是唯一受支持的类型。compname压缩名称。
通过上面信息我们知道该段音频的采样点数为84896每点用2byte16bit保存那么需要84896*2169792字节B。
换算单位 1B(Byte 字节)8bit 1KB (Kilobyte 千字节)1024B 1MB (Megabyte 兆字节 简称“兆”)1024KB
即该音频大小为169792/1024165.81KB0.16MB
注 疑问它的帧数是如何计算的 这条语音长度是多少采样点我们用librosa库读取音频发现size和上面是一样的所以nframe应该是语音采样点数。
data, sr librosa.load(file_path, sr None) #必须加sr None不然默认采样成22050首先可以看到audio_data的值是显示不出来的进行如下操作
ynp.asarray(audio_data,int64)# 类型转换成int64此时value处就有显示值了画出来 可以看到wavefile读出的数据是一个整型没有做32767的归一化。
进行归一化
audio_data1 audio_data*1.0/(max(abs(audio_data)))#归一化到[-1,1]归一化后和librosad读取出的数据的范围还是不一样。liborsa读取出来的数据是做了32767的归一化。wavefile的归一化是除以最大值。
音频重采样
重采样到16000Hz
data librosa.resample(data.astype(np.float32), fs, 16000) #注意一定要对数据做astype(np.float32)否则会出现下采样无效。做完重采样后会出现最大值远大于32767的情况因此需要注意需要对其进行动态标准化避免早保存时候出现溢出np.int16的最大值是32767多了会削波。可以添加判断np.max(abs(x_filted)) / np.max(abs(up_sample_data))
音频保存