python之音频信号处理一

python音频信号处理,首先安装librosa模块

安装好librosa模块后,进行简单的音频读取操作,包括:

python之音频信号处理一_第1张图片

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)

python之音频信号处理一_第2张图片

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)

python之音频信号处理一_第3张图片

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))

显示过零点的位置为:

你可能感兴趣的:(音频信号,Python)