librosa

本文介绍在Ubuntu系统中使用Python 2.7安装Librosa库的具体步骤,强调joblib版本的重要性,并提供一个音频文件的Mel频谱图和幅度谱的提取示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • ubuntu系统、python2.7,安装librosa,需要joblib==0.11.0版本,版本不匹配可能会报librosa:TypeError: expected string or buffer
librosa
#-*-coding:utf-8-*-
import librosa
import numpy as np

def get_spectrograms(fpath):
   '''Returns normalized log(melspectrogram) and log(magnitude) from `sound_file`.
   Args:
     sound_file: A string. The full path of a sound file.

   Returns:
     mel: A 2d array of shape (T, n_mels) <- Transposed
     mag: A 2d array of shape (T, 1+n_fft/2) <- Transposed
   '''
   # num = np.random.randn()
   # if num < .2:
   #     y, sr = librosa.load(fpath, sr=hp.sr)
   # else:
   #     if num < .4:
   #         tempo = 1.1
   #     elif num < .6:
   #         tempo = 1.2
   #     elif num < .8:
   #         tempo = 0.9
   #     else:
   #         tempo = 0.8
   #     cmd = "ffmpeg -i {} -y ar {} -hide_banner -loglevel panic -ac 1 -filter:a atempo={} -vn temp.wav".format(fpath, hp.sr, tempo)
   #     os.system(cmd)
   #     y, sr = librosa.load('temp.wav', sr=hp.sr)

   # Loading sound file
   y, sr = librosa.load(fpath, sr=22050)


   # Trimming
   y, _ = librosa.effects.trim(y)

   # Preemphasis
   y = np.append(y[0], y[1:] - 0.95 * y[:-1])

   # stft
   linear = librosa.stft(y=y,n_fft=2048,hop_length=int(0.0125*22050),win_length=int(0.05*22050))#(1025,54)

   # magnitude spectrogram
   mag = np.abs(linear)  # (1+n_fft//2, T) #(1025,54)

   # mel spectrogram
   mel_basis = librosa.filters.mel(22050, 2048, 80)  # (n_mels, 1+n_fft//2) #(80,1025)
   mel = np.dot(mel_basis, mag)  # (n_mels, t) #(80, 54)
   # to decibel
   mel = 20 * np.log10(np.maximum(1e-5, mel))
   mag = 20 * np.log10(np.maximum(1e-5, mag))

   # normalize
   mel = np.clip((mel - 20 + 100) / 100, 1e-8, 1)#(80, 54)
   mag = np.clip((mag - 20 + 100) / 100, 1e-8, 1)#(1025, 54)

   # Transpose
   mel = mel.T.astype(np.float32)  # (T, n_mels)     #(54, 80)
   mag = mag.T.astype(np.float32)  # (T, 1+n_fft//2) #(54, 1025)

   return mel, mag
if __name__ == "__main__":
   get_spectrograms("1-1.wav")

T表示时间方向,帧率为22050

03-19
### Python Librosa音频处理库的使用方法、安装与示例 #### 安装Librosa库 为了使用Librosa库进行音频处理,首先需要通过`pip`命令完成安装。以下是具体的安装命令: ```bash pip install librosa ``` 此命令能够帮助开发者快速集成Librosa到其Python环境中[^4]。 #### 加载音频文件 加载音频文件是音频处理的第一步。Librosa提供了一个简单的方法来实现这一目标。下面是一段代码示例,展示了如何利用Librosa加载音频文件并获取采样率: ```python import librosa # 加载音频文件 audio_data, sample_rate = librosa.load('example_audio.wav', sr=None) print(f'音频数据形状: {audio_data.shape}') print(f'采样率: {sample_rate} Hz') ``` 上述代码片段中,`librosa.load()`函数被用来读取名为`example_audio.wav`的音频文件。参数`sampling_rate (sr)`设置为`None`表示保持原始采样率不变[^1]。 #### 改变音频采样率 有时需要调整音频的采样率以满足特定需求或兼容不同设备。Librosa支持这种操作,具体如下所示: ```python resampled_audio = librosa.resample(audio_data, orig_sr=sample_rate, target_sr=8000) print(f'重新采样的音频数据形状: {resampled_audio.shape}') ``` 这里调用了`librosa.resample()`函数,将原音频从初始采样率转换为目标采样率(例如8kHz)。这一步骤对于跨平台应用尤为重要[^5]。 #### 特征提取 Librosa还具备强大的特征提取能力,比如计算梅尔频率倒谱系数(MFCCs),这是语音识别等领域常用的特征之一: ```python mfccs = librosa.feature.mfcc(y=audio_data, sr=sample_rate, n_mfcc=13) print(f'MFCC维度: {mfccs.shape}') # 输出MFCC矩阵大小 ``` 该代码实现了基于输入音频信号提取MFCC的功能,其中`n_mfcc=13`指定了生成13维的MFCC向量[^3]。 --- ### 总结 以上介绍了Librosa库的核心功能及其基本用法,包括但不限于安装过程、音频文件加载、采样率变换以及特征提取等内容。这些技术手段共同构成了现代音频数据分析的基础框架。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值