【NLP】Praat库(1) 安装及初步使用
导航
- 官方网站
- 安装测试
- 绘制声波波幅图像
- 片段声音采集
- 声音信号频谱和强度
- MP3文件转为WAV文件
- 数据和代码下载
- 参考资料
官方网站
Praat: doint phonetics by computer
Python Praat库
安装测试
激活虚拟环境python 3.6.12
,直接使用pip
指令进行安装
pip install praat-parselmouth
测试
import parselmouth
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
绘制声波波幅图像
wav测试文件下载
sns.set() # 使用seaborn的默认设置
plt.rcParams['figure.dpi'] def plot_sound():snd=pm.Sound('audio/w_1.wav')plt.figure()plt.plot(snd.xs(), snd.values.T)plt.xlim([snd.xmin, snd.xmax])plt.xlabel('time [s]')plt.ylabel('amplitude')plt.show()plot_sound()
采集得到的图像如下
片段声音采集
It is also possible to extract part of speech fragment and plot it separately.
# 提取声音片段
def sound_fragement():snd_part=snd.extract_part(from_time=0.9, preserve_times=True)plt.figure()plt.plot(snd_part.xs(), snd_part.values.T)plt.xlim([snd_part.xmin, snd_part.xmax])plt.xlabel('time [s]')plt.ylabel('amplitude')plt.show()sound_fragement()
声音信号频谱和强度
# spectrogram
def draw_spectrogram(spectrogram, dynamic_range=70):X, Y=spectrogram.x_grid(), spectrogram.y_grid()sg_db=10*np.log10(spectrogram.values) # 取对数处理plt.pcolormesh(X, Y, sg_db, vmin=sg_db.max() - dynamic_range, cmap='spring_r')plt.ylim([spectrogram.ymin, spectrogram.ymax])plt.xlabel('time [s]')plt.ylabel('freq [Hz]')# intensity
def draw_intensity(intensity):plt.plot(intensity.xs(), intensity.values.T, linewidth=1.5, linestyle='-.',color='blue')plt.grid(False)plt.ylim(0)plt.ylabel('intensity [dB]')def curve_plot():intensity=snd.to_intensity() # 强度spectrogram=snd.to_spectrogram() # 频率plt.figure()draw_spectrogram(spectrogram)plt.twinx()draw_intensity(intensity)plt.xlim([snd.xmin, snd.xmax])plt.show()curve_plot()
滑动窗口采样
The Parselmouth functions and methods have the same arguments as the Praat commands, so we can for example also change the window size of the spectrogram analysis to get a
narrow-band spectrogram
.
def draw_pitch(pitch):pitch_values=pitch.selected_array['frequency']pitch_values[pitch_values==0]=np.nanplt.plot(pitch.xs(), pitch_values, 'o', markersize=3, color='blue')plt.ylim(0, pitch.ceiling)plt.ylabel('fundamental freq. [Hz]')def pitch_plot():pitch=snd.to_pitch()pre_emphasized_snd=snd.copy()pre_emphasized_snd.pre_emphasize()spectrogram=pre_emphasized_snd.to_spectrogram(window_length=0.03, maximum_frequency=8000)plt.figure()draw_spectrogram(spectrogram)plt.twinx()draw_pitch(pitch)plt.xlim([snd.xmin, snd.xmax])plt.show()pitch_plot()
使用seaborn
中的FaceGrid函数可以同时展示多个音频文件的谱信息
'''
多文件显示
'''
import pandas as pddef facet_util(data, **kwargs):digit, speaker_id=data[['digit', 'speaker_id']].iloc[0]sound=pm.Sound('digit/{}_{}.wav'.format(digit, speaker_id))draw_spectrogram(sound.to_spectrogram())plt.twinx()draw_pitch(sound.to_pitch())if digit != 5:plt.ylabel('')plt.yticks([])def sns_face_grid():ans=pd.read_csv('digit/digit_list.csv')grid=sns.FacetGrid(ans, row='speaker_id', col='digit')grid.map_dataframe(facet_util)grid.set_titles(col_template="{col_name}", row_template="{row_name}")grid.set_axis_labels('time [s]', 'frequency [Hz]')grid.set(facecolor='white', xlim=(0, None))plt.show()sns_face_grid()
MP3文件转为WAV文件
发现Praat库无法直接处理MP3文件,需要进行转换,安装pydub
库
pip install pydub
需要下载ffmpeg软件,解压后添加到系统环境变量中
发现直接调用pydub
进行转换会遇到权限问题,目前尚未解决
'''
mp3文件转为wav文件
'''
from pydub import AudioSegment
import pydub
pydub.AudioSegment.converter="E:\\ffmpeg_2020\\bin"def mp3_trans_wav():snd=AudioSegment.from_mp3('audio/adu_2.mp3')snd.export('test_.wav', format='wav')
直接在CMD
中调用ffmpeg
软件对mp3
文件进行解析
考虑通过python
调用cmd
命令转换mp3
文件
'''
在cmd中调用ffmpeg指令转换文件格式
ffmpeg -i {mp3 filepath} {wav filepath}
'''
import osdef cmd_func():# ans=os.popen('ipconfig')# print(ans.read())Qsrc='adu_2.mp3'dst='wav_2.wav'ff_cmd='ffmpeg -i audio/{} wav/{}'.format(src, dst)ans=os.popen(ff_cmd)print(ans)cmd_func()
结果可行
数据和代码下载
Praat库案例代码
参考资料
pydub库实现MP3文件与wav文件的相互转换
音频mp3格式转wav格式
python调用cmd命令行
【NLP】Praat库(1) 安装及初步使用相关推荐
- 【NLP】Praat库(2) Batch processing of files
导航 文件批处理 计算谐波信噪比 文件批处理 使用标准库glob和os可以批处理文件,可以使用Praat库对Sound对象进行pre-emphasize操作,然后将pre-emphasized对象写入 ...
- NLP常用库安装(一)genism,nltk
下面介绍在实现word2vec过程之初,安装genism,nltk这里是建立在大家已经安装完成anaconda后,并熟练安装各种包之后,使用pip命令来实现.对于anaconda建议读者参考前文. 手 ...
- python中nlp的库_用于nlp的python中的网站数据清理
python中nlp的库 The most important step of any data-driven project is obtaining quality data. Without t ...
- nlp工具库spacy
文章目录 spacy能做什么 如何安装 案例 分词功能 spacy是一个辅助自然语言处理的工具库. spacy能做什么 它集成了各种实用的句子分析功能,包括分词.词性分析.词性还原等等,所有功能特性可 ...
- g2o的安装及初步使用
声明:本博客仅供个人学习使用.转载自 Jasmine_shine g2o的安装及初步使用 运行环境:ubuntu12.04 + g2o 个人原创,转载请注明来自Jasmine_shine的专栏: ...
- VC6 下 libpng 库的编译与初步使用以及压缩与解压缩
VC6 下 libpng 库的编译与初步使用 目录 libong 库的介绍 VC6 下 libpng 的编译 下载 libpng 与 zlib 进行编译 得到 .lib 文件 初步使用 对 VC6 进 ...
- IIS+PHP+MySQL+Zend Optimizer+GD库+phpMyAdmin安装配置[完整修正实用版]
IIS+PHP+MySQL+Zend Optimizer+GD库+phpMyAdmin安装配置[完整修正实用版] IIS+PHP+MySQL+Zend Optimizer+GD库+phpMyAdmin ...
- python中nlp的库_单词袋简介以及如何在Python for NLP中对其进行编码
python中nlp的库 by Praveen Dubey 通过Praveen Dubey 单词词汇入门以及如何在Python中为NLP 编写代码的简介 (An introduction to Bag ...
- Python+Anaconda中库的安装
查看Anaconda中的Python的开发环境 (1)conda env list 不同环境中库的安装 方式一: Pycharm+Anacond安装完成后的Python文件创建以及No module ...
最新文章
- 微信小程序把玩(三十五)Video API
- python 配置文件对比_Python运维自动化之nginx配置文件对比操作示例
- KlayGE 4.0中Deferred Rendering的改进(五)完结篇:Post process
- 中国发布自主开发的域名系统基础软件 “红枫”
- Android 闹钟
- MongoDB(二):MongoDB的安装
- slf4j+logback 日志
- JS逻辑运算符——短路逻辑
- ubuntu安装php7-mysql,ubuntu上安装php7.0+nginx+mysql
- 各种算法和数据结构的复杂度
- git21天打卡day12切换分支修改文件
- axure小程序模板_公众号和小程序模板消息
- 怎样写好一篇高质量的技术文章?
- 吴伯凡-认知方法论-T字形认知
- pytorch 语⾔模型数据集(周杰伦专辑歌词)数据集 免费
- c++调用静态函数的方法
- 华为S5300系列交换机V100R006SPH019升级补丁
- vi编辑器基础命令合集与yim初级使用
- 大疆网上测评题库_大疆笔试题
- 水果店处理坏果,水果店卖不掉的水果如何处理