Fork me on GitHub

一 概念
 
1.一些概念
Librosa是一个用于音频、音乐分析、处理的python工具包,一些常见的时频处理、特征提取、绘制声音图形等功能应有尽有,功能十分强大。本文主要介绍libros的基本用法。
 
二 源码解析
 
1.librosa通过load加载文件
2.音频文件保存新版本已经去掉,改为了soundfile库
3.matlab画图的这里可以熟悉一下。
 
import librosa
import numpy as np
import matplotlib.pyplot as plt
import soundfile as sf

def add_noise2(x,snr):
    P_signal = np.sum(abs(x)**2)/len(x)
    P_noise = P_signal/10**(snr/10.0)
    return x + np.random.randn(len(x))*np.sqrt(P_noise)


plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示符号
fs = 16000

wav_data, _ = librosa.load("./test_16k.wav", sr=fs, mono=True)

Augmentation = add_noise2(x=wav_data,snr=50)

sf.write('out_file.wav', Augmentation, fs, subtype='PCM_16')

# ########### 画图
plt.subplot(2, 2, 1)
plt.title("sprucrem", fontsize=15)
plt.specgram(Augmentation, Fs=16000, scale_by_freq=True, sides='default', cmap="jet")
plt.xlabel('second/s', fontsize=15)
plt.ylabel('freq/Hz', fontsize=15)

plt.subplot(2, 2, 2)
plt.title("freqs", fontsize=15)
time = np.arange(0, len(Augmentation)) * (1.0 / fs)
plt.plot(time, Augmentation)
plt.xlabel('second/s', fontsize=15)
plt.ylabel('frame', fontsize=15)

plt.tight_layout()
plt.show()

 

三 总结备忘
 
1.基本的librosa应用要掌握。
posted on 2022-05-04 15:26  虚生  阅读(319)  评论(0编辑  收藏  举报