声学特征提取-python

声学特征提取-python

代码在我的github上AcousticFeatureExtraction

使用Librosa音频处理库和openSMILE工具包,进行简单的声学特征提取,包括韵律学特征(持续时间、短时能量、过零率、基频等)、基于谱的相关特征(MFCC特征)和声音质量特征(共振峰、频率微扰、振幅微扰)。

如果您觉得有一点点用,请隔空比个心(或者,去我的github上点一下 “Star” 也可以~)

简介

  • 写在前面

​ 在这之前,本人对于声学一窍不通,奈何实验室项目需求,看了一些文献和博客,这才算是刚刚入了门,尽管坎坷,但发现细品声学,还是挺有意思的。

​ 本程序基于python3.6开发,Windows10上运行,其他版本暂时没有测试过,但我感觉python3.x,ubuntu平台应该都可以正常运行,不行的话,按照报错稍微修改适配下,程序里每行我尽量都做了注释。

注意:由于本人也是边学边搞的这个程序,很多专业的声学名词我也是一知半解,没有深入研究,根据所能理解的,再加上自己的一些理解,写成的这个程序(也许叫demo更好),难免会出现提取到的特征不准确的现象,尤其是在基频追踪、共振峰估计上,方法不同,准确度千差万别,可以尝试更改参数、使用最新的算法,或者直接使用本程序中利用openSMILE特征集提取的特征,避免重复造轮子,又有大厂保证~

  • 关于本程序

​ 本程序利用两种方法对声学特征进行了提取,一种是直接调用openSMILE中的特征配置文件,包括2016-eGeMAPS特征集,共88个特征;2016-ComParE特征集,共6373个特征;2009-InterSpeech Emotion Challenge特征集(IS09_emotion),共384个特征。这些特征集主要用于基于语音的情绪识别,也可用于语音识别。关于它们详细介绍的相关文献:

​ 首先通过Git将本程序克隆到您的计算机上。

git clone https://github.com/Zhangtingyuxuan/AcousticFeatureExtraction.git

​ 或者直接download压缩包,或者也可以通过**“Fork”** 按钮,Copy一份副本,然后通过您自己的SSH密钥克隆到本地。

​ 运行本程序之前,请安装必要的Python3版依赖库

​ cd到当前程序路径后直接运行本程序:

python3 acoustic_feature.py

​ 本程序./audios路径下有两个语音文件:“audio_raw.wav”(汉语:蓝天 白云)和“ae.wav”(英语单元音:[æ]),分别基于这两个语音文件运行程序,会得到以下文件和图形输出,待我一一介绍:

  1. 首先是语音的端点检测:输出的图形见下图1/2。这可以检测一段语音的所有有效语音部分,主要用于语音预处理,也可以通过它实现基于端点检测的语音分割,有关该方法的更细节程序在我的另一个仓库里:voice_activity_detection

    图1 汉语:“蓝天 白云”的语音端点检测

    图2 英语单元音:[æ]的语音端点检测

    ​ 同时在./audios路径下会生成对应语音文件的首尾端点检测后的*_vad.wav文件,接下来的特征提取均是通过该文件进行的。在./features文件夹下,会生成利用openSMILE工具包对应的特征集的ARFF格式的features.csv特征文件,文件部分内容见下图3所示。

    图3 利用openSMILE工具包中IS09_emotion特征集提取到的特征
  2. 韵律学特征提取,比较了本程序和利用Praat软件在基频F0、声压级和谱特征的差异,由于是一句话语音,难免会出现较大的误差,而对于单元音的比较,误差小了些(图4/5):

    图4 汉语:“蓝天 白云”的韵律学特征可视化(左)与利用Praat软件获取的特征可视化(右)比较
    图5 英语单元音:[æ]的韵律学特征可视化(左)与利用Praat软件获取的特征可视化(右)比较
  3. 基于谱的相关特征:39维MFCC特征,包括MFCC1-13,其中MFCC1替换为对数能量,再依次计算一阶和二阶差分(图6)。

    图6 汉语:“蓝天 白云”(左)和英语单元音[æ](右)的39维MFCC特征可视化
  4. 声音质量特征:比较了本程序和利用Praat软件在共振峰中心频率F1/F2/F3差异(图7/8):

    图7 汉语:“蓝天 白云”的F1-3可视化(左)与利用Praat软件获取的特征可视化(右)比较
    图8 英语单元音:[æ]的F1-3可视化(左)与利用Praat软件获取的特征可视化(右)比较
  5. 声谱图:包括幅值谱、功率谱、log功率谱和log-Mel谱,图9。

    图9 汉语:“蓝天 白云”(左)和英语单元音[æ](右)的各种声谱图可视化

Python Import

关于本程序的依赖库(其中Librosa最好和我使用的版本一致,其他版本都没测试过):

  • Librosa-0.7.2
  • Numpy-1.18.1
  • matplotlib-3.1.3
  • Scipy-1.4.1

特别鸣谢:openSMILE和Librosa的开发维护人员、声学等相关学科的科研人员,以及各大博客论坛的大佬们的无私奉献与辛勤劳作!感谢前辈们让我学到了很多相关知识!

License 开源许可协议

GPL v3.0 © ZZL

赞助

如果你喜欢本程序,并且它对你有些许帮助,欢迎给我打赏一杯奶茶哈~

微信      支付宝
  • 18
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 24
    评论
Python声学特提取是指使用Python编程语言来提取音频信号中的种声学特征。声学特征是对音频信号进行数分析和处理后得到的一些数值指标,可以用于音频信号的分类、识别、分析等任务。 在Python中,使用一些库和工具来进行声学特征提取,其中最常用的是Librosa和pyAudioAnalysis。 1. Librosa是一个用于音频和音乐信号处理的Python库,它提供了丰富的函数和工具来提取各种声学特征。例如,可以使用Librosa提取音频信号的时域特征(如时长、能量、过零率等)、频域特征(如梅尔频谱系数、色度谱等)以及其他高级特征(音调、节奏等)。Librosa还提供了可视化工具,可以将提取的特征可视化展示出来。 2. pyAudioAnalysis是另一个用于音信号处理和分析的Python库,它提供了一系列函数和工具来进行声学特征提取。pyAudioAnalysis支持多种特征提取方法,包括时域特征、频域特征、光谱特征、时频特征等。此外,pyAudioAnalysis还提供了一些器学习算法,可以用于音频信号的分类和识别。 使用这些库进行声学特征提取的步骤通常包括以下几个步骤: 1. 读取音频文件:使用Python库中的函数读取音频文件,将其转换为音频信号。 2. 预处理:对音频信号进行预处理,如去除噪声、平滑等。 3. 特征提取:使用相应的函数从音频信号中提取所需的声学特征。 4. 特征表示:将提取的特征表示为量或矩阵形式,以便后续处理和分析。 5. 可视化:可选步骤,将提取的特征可视化展示出来,以便更直观地理解和分析。
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值