librosa音频处理教程

Python015

librosa音频处理教程,第1张

Librosa是一个 Python 模块,用于分析一般的音频信号,是一个非常强大的python语音信号处理的第三方库,根据网络资料以及官方教程,本文主要总结了一些重要且常用的功能。

IPython.display.Audio 可以让我们直接在 jupyter notebook 中播放音频,比如下面包房一段音频

在这里,我们绘制了一个简单的音频波形图。 波图让我们知道给定时间的音频响度。

频谱图(Spectogram)是声音频率随时间变化的频谱的可视化表示,是给定音频信号的频率随时间变化的表示。'.stft' 将数据转换为短期傅里叶变换。 STFT转换信号,以便我们可以知道给定时间给定频率的幅度。 使用 STFT,我们可以确定音频信号在给定时间播放的各种频率的幅度。

Spectrogram特征是目前在语音识别和环境声音识别中很常用的一个特征,由于CNN在处理图像上展现了强大的能力,使得音频信号的频谱图特征的使用愈加广泛,甚至比MFCC使用的更多。

信号的梅尔频率倒谱系数 (MFCC) 是一小组特征(通常约为 10-20),它们简明地描述了频谱包络的整体形状。在 MIR 中,它经常被用来描述音色。

在这个例子中,mfcc 在 89 帧中计算了 20 个 MFCC。

第一个 MFCC,第 0 个系数,不传达与频谱整体形状相关的信息。 它只传达一个恒定的偏移量,即向整个频谱添加一个恒定值。 因此,很多情况我们可以在进行分类时会丢弃第一个MFCC。

过零率(zero-crossing rate,ZCR)是指一个信号的符号变化的比率,例如信号从正数变成负数,或反过来。这个特征已在语音识别和音乐信息检索领域得到广泛使用,是分类敲击声的关键特征。为真时为1,否则为0。在一些应用场景下,只统计“正向”或“负向”的变化,而不是所有的方向。

可以使用整个音频来遍历这个并推断出整个数据的过零。

频谱质心(维基百科)表示频谱能量集中在哪个频率上。这就像一个加权平均值:

其中 S(k) 是频段 k 处的频谱幅度,f(k) 是频段 k 处的频率。

librosa.feature.spectral_bandwidth 可以用来计算p-order频谱带宽:

其中 S(k) 是频段 k 处的频谱幅度,f(k) 是频段 k 处的频率,fc 是频谱质心。当 p=2 时,这就像一个加权标准差。

频谱衰减是总频谱能量的特定百分比所在的频率。

色度向量 (Wikipedia) 是一个典型的 12 元素特征向量,指示每个音高类别 {C, C#, D, D#, E, ..., B} 的能量是多少存在于信号中。

音高是声音的感知属性,在与频率相关的尺度上排序,或者更常见的是,音高是可以判断声音在与音乐旋律相关的意义上“更高”和“更低”的质量。

python语音识别源于 20 世纪 50 年代早期在贝尔实验室所做的研究。早期语音识别系统仅能识别单个讲话者以及只有约十几个单词的词汇量。现代语音识别系统已经取得了很大进步,可以识别多个讲话者,并且拥有识别多种语言的庞大词汇表。

语音识别的首要部分当然是语音。通过麦克风,语音便从物理声音被转换为电信号,然后通过模数转换器转换为数据。一旦被数字化,就可适用若干种模型,将音频转录为文本。

大多数现代语音识别系统都依赖于隐马尔可夫模型(HMM)。其工作原理为:语音信号在非常短的时间尺度上(比如 10 毫秒)可被近似为静止过程,即一个其统计特性不随时间变化的过程。