本篇文章介绍如何使用python进行声音数据分析(语音分析)。
总述
每天都会产生大量的语音数据。如果他们能够很容易的被数据科学家所获得来开发AI引擎和进行AI分析,也许会产生不一样的洞见。那些早已意识到语音数据信息重要性的机构正在利用AI转录对话,去加强员工培训,客户服务以及提供用户体验。
然而,也有一些机构不能够很好的利用这些数据,因为一下原因— 1.他们并没有进行采集。2.数据质量差。这些障碍阻止他们进一步去推行机器学习解决方案。所以收集质量良好的数据是很重要的。
这篇文章手把手的教你如何进行语音数据处理。
文章主要从以下几个方面展开:读取声音文件
傅里叶变换(FT)
快速傅里叶变换(FFT)
声谱图
使用声谱图进行语音识别
总结
1. 读取声音文件
LIBROSA
LibROSA是一个python库,里面包含了几乎所有你想要处理声音的工具。让我们快速的看一下它的特点:加载展示一个声音文件的特性
声谱表示
特征提取和操作
时间——频率转换
语音切割
序列模型...等你可以通过下面的命令快速安装这个库——
pypi : pip install librosa
conda : conda install -c conda-forge librosa
使用python加载语音
Librosa支持大量的语音编码形式。虽然在进行数据分析的时候,大部分都会使用.wav(无损)格式。一旦你成功的安装并且在jupyter notebook中导入libROSA之后,你可以通过在 librosa.load()函数中设置file_path 参数去指定想要读取的语音文件。
librosa.load()—> 返回两个内容— 1. 振幅矩阵。2. 采样率。采样率指的是记录声音文件时的采样频率。如果保持参数sr = None, 将会以原始的采样频率去加载你的文件。(注意:你可以根据需要去指定采样频率,libROSA会为你进行上采样或下采样)。看下图:
sampling_rate = 16k说明这个语言以16K的采样频率被记录。也就是说,在记录这段语音的时候,我们一秒钟记录了16000个时间点的振幅。因此,如果我们想知道语音时长,可以通过采样的个数除以采样率得出:IPython 提供了一些小工具帮助我们在notebook从播放音频
可视化语音
我们通过librosa拿到了振幅和采样率,然后可以很轻松的画出振幅随时