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

Python 判断播放有无声音 python获取音频频率_采样率

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

Python 判断播放有无声音 python获取音频频率_采样率_02

1. load 读取音频文件,返回音频数据与采样率

Python 判断播放有无声音 python获取音频频率_采样频率_03

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 判断播放有无声音 python获取音频频率_数据_04

2. to_mono 将音频转为单通道,返回单通道音频数据

Python 判断播放有无声音 python获取音频频率_数据_05

3. resample 对数据进行重采样,返回重采样数据

Python 判断播放有无声音 python获取音频频率_数据_06

y:音频数据            orig_sr:原始的采样率                 target_st:目标采样率

new_data=librosa.resample(data,fs,8000)#对数据进行重采样,将采样率从fs降为8000

4. get_duration 获取音频时长,返回时长,以秒为单位

Python 判断播放有无声音 python获取音频频率_数据_07

y:音频数据           sr:y的采样频率                  S为y的短时傅里叶变换

n_fft:FFT变化的窗长                hop_length:S的列数

duration=librosa.get_duration(data)#获取数据点的时长,以秒为单位

5.autocorrelation计算信号的自相关函数

Python 判断播放有无声音 python获取音频频率_采样率_08

max_size:最大相关滞后,如果未指定的话,默认为y.shape

correlate=librosa.autocorrelate(data)

Python 判断播放有无声音 python获取音频频率_采样频率_09

6. zero_crossings 计算信号的过零点,返回布尔值列表,true表示过零,false为不过零

Python 判断播放有无声音 python获取音频频率_采样频率_10

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 判断播放有无声音 python获取音频频率_采样率_11