导航

  • 官方网站
  • 安装测试
  • 绘制声波波幅图像
  • 片段声音采集
  • 声音信号频谱和强度
  • 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) 安装及初步使用相关推荐

  1. 【NLP】Praat库(2) Batch processing of files

    导航 文件批处理 计算谐波信噪比 文件批处理 使用标准库glob和os可以批处理文件,可以使用Praat库对Sound对象进行pre-emphasize操作,然后将pre-emphasized对象写入 ...

  2. NLP常用库安装(一)genism,nltk

    下面介绍在实现word2vec过程之初,安装genism,nltk这里是建立在大家已经安装完成anaconda后,并熟练安装各种包之后,使用pip命令来实现.对于anaconda建议读者参考前文. 手 ...

  3. python中nlp的库_用于nlp的python中的网站数据清理

    python中nlp的库 The most important step of any data-driven project is obtaining quality data. Without t ...

  4. nlp工具库spacy

    文章目录 spacy能做什么 如何安装 案例 分词功能 spacy是一个辅助自然语言处理的工具库. spacy能做什么 它集成了各种实用的句子分析功能,包括分词.词性分析.词性还原等等,所有功能特性可 ...

  5. g2o的安装及初步使用

    声明:本博客仅供个人学习使用.转载自  Jasmine_shine g2o的安装及初步使用  运行环境:ubuntu12.04 + g2o  个人原创,转载请注明来自Jasmine_shine的专栏: ...

  6. VC6 下 libpng 库的编译与初步使用以及压缩与解压缩

    VC6 下 libpng 库的编译与初步使用 目录 libong 库的介绍 VC6 下 libpng 的编译 下载 libpng 与 zlib 进行编译 得到 .lib 文件 初步使用 对 VC6 进 ...

  7. IIS+PHP+MySQL+Zend Optimizer+GD库+phpMyAdmin安装配置[完整修正实用版]

    IIS+PHP+MySQL+Zend Optimizer+GD库+phpMyAdmin安装配置[完整修正实用版] IIS+PHP+MySQL+Zend Optimizer+GD库+phpMyAdmin ...

  8. python中nlp的库_单词袋简介以及如何在Python for NLP中对其进行编码

    python中nlp的库 by Praveen Dubey 通过Praveen Dubey 单词词汇入门以及如何在Python中为NLP 编写代码的简介 (An introduction to Bag ...

  9. Python+Anaconda中库的安装

    查看Anaconda中的Python的开发环境 (1)conda env list 不同环境中库的安装 方式一:  Pycharm+Anacond安装完成后的Python文件创建以及No module ...

最新文章

  1. 微信小程序把玩(三十五)Video API
  2. python 配置文件对比_Python运维自动化之nginx配置文件对比操作示例
  3. KlayGE 4.0中Deferred Rendering的改进(五)完结篇:Post process
  4. 中国发布自主开发的域名系统基础软件 “红枫”
  5. Android 闹钟
  6. MongoDB(二):MongoDB的安装
  7. slf4j+logback 日志
  8. JS逻辑运算符——短路逻辑
  9. ubuntu安装php7-mysql,ubuntu上安装php7.0+nginx+mysql
  10. 各种算法和数据结构的复杂度
  11. git21天打卡day12切换分支修改文件
  12. axure小程序模板_公众号和小程序模板消息
  13. 怎样写好一篇高质量的技术文章?
  14. 吴伯凡-认知方法论-T字形认知
  15. pytorch 语⾔模型数据集(周杰伦专辑歌词)数据集 免费
  16. c++调用静态函数的方法
  17. 华为S5300系列交换机V100R006SPH019升级补丁
  18. vi编辑器基础命令合集与yim初级使用
  19. 大疆网上测评题库_大疆笔试题
  20. 水果店处理坏果,水果店卖不掉的水果如何处理

热门文章

  1. mining lorry和mining truck有什么不同。
  2. python画小猪_利用python画小猪佩奇
  3. 以开发之名|斗罗大陆:创造一个尽情探险的开放式游戏世界
  4. Qt之QML虚拟键盘
  5. 让智能成为本能,华为云引领智能计算新时代
  6. 计算机岗位知识竞赛,计算机工作人员年度考核.doc
  7. VMWare Player设置双屏显示
  8. 柱状图怎么设置xy轴_echarts图表x,y轴的设置
  9. 十年,从“去IOE”走出来的阿里云
  10. 移动硬盘格式化后数据恢复