python音频信号处理,首先
安装librosa模块
安装好librosa模块后,进行简单的音频读取操作,包括:
1.
load
读取音频文件,返回音频数据与采样率
path:音频文件路径 sr:目标采样频率 mono=True:将信号转为单通道模式
offset=0.0:在0.0秒后开始读取音频 duration:仅读取duration长度的音频
import librosa
import matplotlib.pyplot as plt
data,fs= librosa.load('bluesky3.wav')#读取音频文件,data为数据,fs为采样频率
plt.plot(data)
2.
to_mono
将音频转为单通道,返回单通道音频数据
3.
resample
对数据进行重采样,返回重采样数据
y:音频数据 orig_sr:原始的采样率 target_st:目标采样率
new_data=librosa.resample(data,fs,8000)#对数据进行重采样,将采样率从fs降为8000
4.
get_duration
获取音频时长,返回时长,以秒为单位
y:音频数据 sr:y的采样频率 S为y的短时傅里叶变换
n_fft:FFT变化的窗长 hop_length:S的列数
duration=librosa.get_duration(data)#获取数据点的时长,以秒为单位
5.autocorrelation计算信号的自相关函数
max_size:最大相关滞后,如果未指定的话,默认为y.shape
correlate=librosa.autocorrelate(data)
6.
zero_crossings
计算信号的过零点,返回布尔值列表,true表示过零,false为不过零
import librosa
import matplotlib.pyplot as plt
import numpy as np
data,fs= librosa.load('bluesky3.wav')#读取音频文件,data为数据,fs为采样频率
guolinglv=librosa.zero_crossings(data)
np.vstack([data,guolinglv]).T
print(np.nonzero(guolinglv))
显示过零点的位置为: