适用于python3.x的pyAudioAnalysis使用及音频信号相关基础

使用pyAudioAnalys工具包来处理音频信号
你是否拥有一款属于自己的可穿戴设备?现在可穿戴设备异常发达,音频作为更加可获得的信号,是否可以为这些设备注入新的活力。记录一下音频相关知识以及适用于python3.x的特征提取方法。
1.音频相关知识
(1)基于片段(segment)的短期特征
音频信号(audio signal)在某个特定的“样本分辨率(sample resolution)”下由一串样本序列来表示的,并且会有一些特定的采样频率(例如,16KHz =每秒16000个样本)。
之后就可以使用这些样本(samples)来分析音频。例如我们能对两种不同的声音进行区别,将音频分割为均匀的片段(例如将语音信号中的浊音段和清音段分开),或者对于音频聚类。
特征提取(feature extraction简称FE)的目的,希望能够使用大量音频信号的底层特征来得到音频特征的高层表示(深度学习所做的似乎也就是这样),特征提取能够获得一组关于原始数据基本信息的特征,根据每一个人的领域不同,我们所感兴趣的特征值也不同。
短期窗口是FE的重要概念,即音频信号的采样窗口很短,以至于音频信号被分为很短的片段,采样时可以选择重叠部分,这里要说明,如果步长<窗口长度,采样得到的音频片段是由重叠部分的,(例如,步长10ms,窗口40ms,那么采样的重叠部分为75%),至于为什么需要重叠部分,可以找一些关于音频信号的相关论文里面讲到:避免丢失一些连续性的信息(有RNN那味了)。下图展示采样以及步长,阴影代表重叠部分
适用于python3.x的pyAudioAnalysis使用及音频信号相关基础
采样的长度通常为10-100ms,这可以根据你的具体数据来决定。当然也可以选择不重叠的方法来进行采样,那么最后得到的样本数量就等于你的 音频总长/(步长或采样窗口长度)。汉明窗(hamming)目前我还没掌握。
对于每一帧或者说每一个样本,我们都能够获取一组特征,直接从音频样本中提取的信号,称为时域特征。如果特征值是基于FFT(快速傅里叶变换)计算得到的,那么这些就成为频域信号。最后,倒谱特征(MFCCS)是基于倒谱的特征(这个十分关键)。
例如,让我们假设我们只提取信号的能量(音频样本的平方和)和频谱质心(快速傅立叶变换幅度的质心)。这意味着,在采样过程中,信号由一系列二维短期特征向量表示(或者两个等长的特征序列)。
那么如何来表示任意长度的音频?一种是短的填充到最大值,这样会使维度很高,并且时间戳也是一个问题。在传统的音频分析中,更常见的方法是为每个固定大小的片段提取一组特征统计。在短期特征序列上提取的段级统计是每个固定大小段的表示。最终的信号表示可以是分段统计的长期平均值。
例如,考虑一个2.5秒的音频信号。我们选择50毫秒的短期窗口和1秒的时间段。根据上述内容,将为每个1秒的片段提取能量和光谱质心序列。序列的长度将等于1 / 0.050 = 20。然后,为每个1秒的片段提取每个序列的μ和σ,作为片段特征统计。这些最终被平均,产生最终的信号表示。(请注意,最后一个片段长度为0.5,因此统计数据是在较短的片段上提取的)
适用于python3.x的pyAudioAnalysis使用及音频信号相关基础
未完待续
文章来源于https://hackernoon.com/intro-to-audio-analysis-recognizing-sounds-using-machine-learning-qy2r3ufl,由于翻译和信号处理知识薄弱,感兴趣可自行查阅。欢迎指正~