librosa官网

一. librosa的安装

pip3 install librosa

***注意:**librosa依赖很多其他东西,下载的时候需要开启代理,否则安装失败

二. 读取音频

说明:

  • 音频采样率是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高声音的还原就越真实越自然。在当今的主流采集卡上,采样频率一般共分为11025Hz、22050Hz、24000Hz、44100Hz、48000Hz五个等级
  • 1Hz代表每秒钟周期震动1次,60Hz代表每秒周期震动60次。
>>> import librosa
>>> # Load a wav file
>>> y, sr = librosa.load('./beat.wav')
>>> y
array([  0.00000000e+00,   0.00000000e+00,   0.00000000e+00, ...,8.12290182e-06,   1.34394732e-05,   0.00000000e+00], dtype=float32)
>>> sr
22050

Librosa默认的采样率是22050,如果需要读取原始采样率,需要设定参数sr=None:

>>> import librosa
>>> # Load a wav file
>>> y, sr = librosa.load('./beat.wav', sr=None)
>>> sr
44100

可见,'beat.wav’的原始采样率为44100。如果需要重采样,只需要将采样率参数sr设定为你需要的值:

>>> import librosa
>>> # Load a wav file
>>> y, sr = librosa.load('./beat.wav', sr=16000)
>>> sr
16000

三. 提取特征

提取Log-Mel Spectrogram 特征

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

>>> import librosa
>>> # Load a wav file
>>> y, sr = librosa.load('./beat.wav', sr=None)
>>> # extract mel spectrogram feature
>>> melspec = librosa.feature.melspectrogram(y, sr, n_fft=1024, hop_length=512, n_mels=128)
>>> # convert to log scale
>>> logmelspec = librosa.power_to_db(melspec)
>>> logmelspec.shape
(128, 194)

可见,Log-Mel Spectrogram特征是二维数组的形式,128表示Mel频率的维度(频域),194为时间帧长度(时域),所以Log-Mel Spectrogram特征是音频信号的时频表示特征。其中,n_fft指的是窗的大小,这里为1024;hop_length表示相邻窗之间的距离,这里为512,也就是相邻窗之间有50%的overlap;n_mels为mel bands的数量,这里设为128。

四. 有关代码:

"""此模块负责将特征转换成语谱图
"""
import os
import librosa
from scipy import signal
import numpyif __name__ == '__main__':m_bands = 40loadpath = '/Users/pengchengming/Desktop/audio_emotion/ProjectData/IEMOCAP/IEMOCAP-Voices-Choosed/improve/'savepath = '/Users/pengchengming/Desktop/audio_emotion/ProjectData/Features/IEMOCAP/Bands%d/improve/' % m_bandss_rate = 16000win_length = int(0.025 * s_rate)  # Window length 15ms, 25ms, 50ms, 100ms, 200mshop_length = int(0.010 * s_rate)  # Window shift  10msn_fft = win_lengthfor indexA in os.listdir(loadpath):if indexA == '.DS_Store':continuefor indexB in os.listdir(os.path.join(loadpath, indexA)):if indexB == '.DS_Store':continuefor indexC in ['ang', 'exc', 'hap', 'neu', 'sad']:if indexC == '.DS_Store':continueos.makedirs(os.path.join(savepath, indexA, indexB, indexC))for indexD in os.listdir(os.path.join(loadpath, indexA, indexB, indexC)):if indexD == '.DS_Store':continueprint(indexA, indexB, indexC, indexD)y, sr = librosa.load(os.path.join(loadpath, indexA, indexB, indexC, indexD), sr=16000)#进行傅里叶变换D = numpy.abs(librosa.stft(y, n_fft=n_fft, win_length=win_length, hop_length=hop_length,window=signal.hamming, center=False)) ** 2#提取特征S = librosa.feature.melspectrogram(S=D, n_mels=m_bands)gram = librosa.power_to_db(S, ref=numpy.max)gram = numpy.transpose(gram, (1, 0))print(numpy.shape(gram))file = open(os.path.join(savepath, indexA, indexB, indexC, indexD + '.csv'), 'w')for indexX in range(len(gram)):for indexY in range(len(gram[indexX])):if indexY != 0:file.write(',')file.write(str(gram[indexX][indexY]))file.write('\n')file.close()

通过librosa库进行语音特征的提取相关推荐

  1. 音频文件格式转化,librosa库支持的语音文件类型

    语音文本格式转化及在librosa库的语音文本输入要求 闲话少说,直接上料! python的librosa库是语音模型进行语音特征提取的常见的库:但使用时请注意,librosa库仅支持wav格式的语音 ...

  2. 语音特征信号分类---BP神经网络---MATLAB实现

    语音特征信号识别是语音识别研究领域中的一个重要方面,一般采用模式匹配的原理解决.语音识别的运算过程为: 首先,待识别语音转化为电信号后输入识别系统,经过预处理后用数学方法提取语音特征信号,提取出的语音 ...

  3. Librosa库——语音识别,语音音色识别训练及应用

    很多同学以为语音识别是非常难的,其实并不然,起初我也是这么认为,但后来发现语音识别是最简单的,因为同学们可能不知道Python有一个音频处理库Librosa,这个库非常的强大,可以进行音频处理.频谱表 ...

  4. librosa能量_语音MFCC提取:librosa amp;amp; python_speech_feature(2019.12)

    最近在阅读语音方向的论文,其中有个被提及很多的语音信号特征MFCC(Mel-Frequency Cepstral Coefficients),找到了基于python的语音库librosa(versio ...

  5. python提取个十百千位数字_实现人脸识别、人脸68个特征点提取,或许这个 Python 库能帮到你!...

    之前写过一篇关于实现人脸识别的文章, Z先生点记:Pyqt5 + 百度 API 打造一个图像人脸识别.分割的小程序​zhuanlan.zhihu.com 里面用到的技术是通过调用百度 API 实现的, ...

  6. python 人脸轮廓提取_实现人脸识别、人脸68个特征点提取,或许这个 Python 库能帮到你!...

    以前写过一篇关于实现人脸识别的文章,里面用到的技术是经过调用百度 API 实现的,本次将借助于 dlib  程序包实现人脸区域检测.特征点提取等功能,html dlib 封装了许多优秀的机器学习算法, ...

  7. python人脸特征提取_实现人脸识别、人脸68个特征点提取,或许这个 Python 库能帮到你!...

    之前写过一篇关于实现人脸识别的文章,Z先生点记:Pyqt5 + 百度 API 打造一个图像人脸识别.分割的小程序​zhuanlan.zhihu.com 里面用到的技术是通过调用百度 API 实现的,本 ...

  8. 狗脸识别python_实现人脸识别、人脸68个特征点提取,或许这个 Python 库能帮到你!...

    之前写过一篇关于实现人脸识别的文章,里面用到的技术是通过调用百度 API 实现的,本次将借助于 dlib  程序包实现人脸区域检测.特征点提取等功能, dlib 封装了许多优秀的机器学习算法, 可实现 ...

  9. 深度学习(PyTorch)——librosa库的使用

    librosa是一个非常强大的python语音信号处理的第三方库, 先总结一下本文中常用的专业名词:sr:采样率.hop_length:帧移.overlapping:连续帧之间的重叠部分.n_fft: ...

最新文章

  1. linux 杀毒软件 clamav安装使用
  2. 半年总结(2018-10)
  3. laravel5.6 Session
  4. python 相对路径
  5. 二十四、Python数据建模(下),禁止转载
  6. Laravel大型项目系列教程(七)之7 扩展包和Artisan开发
  7. 【luogu】 P1880 石子合并
  8. layuiadmin上手好难_新手如何快速上手自媒体赚钱?送你4个好建议!记得收藏
  9. 指令系统——数据寻址(2)(详解)
  10. 程序员真的只能干到35岁?——我的35岁危机度过之道!
  11. type traits
  12. matlab磁铁模拟,用matlab-模拟环形磁铁的磁场分布
  13. Java关键字:final、default、transient
  14. transformer模型_【预训练模型】万字长文梳理NLP预训练模型!从transformer到albert...
  15. 恭喜你们微软论坛版主成为百度知道专家
  16. 【干货】--基于Python的文本情感分类
  17. iframe透明 自适应高度
  18. 阿里视频云点播端体验Demo
  19. PPT文档打不开提示访问出错怎么办
  20. Linux中延时/暂停函数(sleep/usleep/nanosleep/select)的比较、底层实现说明

热门文章

  1. 安卓应用全屏适配(游戏)
  2. 基于jsp java校园一卡通系统
  3. 关于Metasploit 5中测试模块的移植与验证
  4. Docker和K8S
  5. Qt Extra characters after test expression toolchain.prf
  6. 拍摄制作VR全景图你必须掌握的软件PTGUI
  7. kera中使用keras.banked.ctc_decoder()导致内存不断增加的问题解决
  8. JavaScript TypeScript学习总结
  9. Webpack学习:使用开发模式-处理 Styl 资源
  10. 【运维面试】笔试题中最常见的高频问题-搞会你就不怕笔试了