A python library for working with praat, textgrids, time aligned audio transcripts, and audio files.

Related tags

AudiopraatIO
Overview

praatIO

Questions? Comments? Feedback?


A library for working with praat, time aligned audio transcripts, and audio files that comes with batteries included.

Praat uses a file format called textgrids, which are time aligned speech transcripts. This library isn't just a data struct for reading and writing textgrids--many utilities are provided to make it easy to work with with transcripts and associated audio files. This library also provides some other tools for use with praat.

Praat is an open source software program for doing phonetic analysis and annotation of speech. Praat can be downloaded here

Table of contents

  1. Documentation
  2. Tutorials
  3. Version History
  4. Requirements
  5. Installation
  6. Version 4 to 5 Migration
  7. Usage
  8. Common Use Cases
  9. Tests
  10. Citing praatIO
  11. Acknowledgements

Documentation

Automatically generated pdocs can be found here:

http://timmahrt.github.io/praatIO/

Tutorials

There are tutorials available for learning how to use PraatIO. These are in the form of IPython Notebooks which can be found in the /tutorials/ folder distributed with PraatIO.

You can view them online using the external website Jupyter:

Tutorial 1: An introduction and tutorial

Version History

Praatio uses semantic versioning (Major.Minor.Patch)

Please view CHANGELOG.md for version history.

Requirements

Python module https://pypi.org/project/typing-extensions/. It should be installed automatically with praatio but you can install it manually if you have any problems.

Python 3.7.* or above

Click here to visit travis-ci and see the specific versions of python that praatIO is currently tested under

If you are using Python 2.x or Python < 3.7, you can use PraatIO 4.x.

Installation

PraatIO is on pypi and can be installed or upgraded from the command-line shell with pip like so

python -m pip install praatio --upgrade

Otherwise, to manually install, after downloading the source from github, from a command-line shell, navigate to the directory containing setup.py and type

python setup.py install

If python is not in your path, you'll need to enter the full path e.g.

C:\Python37\python.exe setup.py install

Version 4 to 5 Migration

Many things changed between versions 4 and 5. If you see an error like WARNING: You've tried to import 'tgio' which was renamed 'textgrid' in praatio 5.x. it means that you have installed version 5 but your code was written for praatio 4.x or earlier.

The immediate solution is to uninstall praatio 5 and install praatio 4. From the command line:

pip uninstall praatio
pip install "praatio<5"

If praatio is being installed as a project dependency--ie it is set as a dependency in setup.py like

    install_requires=["praatio"],

then changing it to the following should fix the problem

    install_requires=["praatio ~= 4.1"],

Many files, classes, and functions were renamed in praatio 5 to hopefully be clearer. There were too many changes to list here but the tgio module was renamed textgrid.

Also, the interface for openTextgrid() and tg.save() has changed. Here are examples of the required arguments in the new interface

textgrid.openTextgrid(
  fn=name,
  includeEmptyIntervals=False
)
tg.save(
  fn=name,
  format= "short_textgrid",
  includeBlankSpaces= False
)

Please consult the documentation to help in upgrading to version 5.

Usage

99% of the time you're going to want to run

from praatio import textgrid
tg = textgrid.openTextgrid(r"C:\Users\tim\Documents\transcript.TextGrid", False)

Or if you want to work with KlattGrid files

from praatio import klattgrid
kg = klattgrid.openKlattGrid(r"C:\Users\tim\Documents\transcript.KlattGrid")

See /test for example usages

Common Use Cases

What can you do with this library?

  • query a textgrid to get information about the tiers or intervals contained within

    tg = textgrid.openTextgrid("path_to_textgrid", False)
    entryList = tg.tierDict["speaker_1_tier"].entryList # Get all intervals
    entryList = tg.tierDict["phone_tier"].find("a") # Get the indicies of all occurrences of 'a'
  • create or augment textgrids using data from other sources

  • found that you clipped your audio file five seconds early and have added it back to your wavefile but now your textgrid is misaligned? Add five seconds to every interval in the textgrid

    tg = textgrid.openTextgrid("path_to_textgrid", False)
    moddedTG = tg.editTimestamps(5)
    moddedTG.save('output_path_to_textgrid', 'long_textgrid', True)
  • utilize the klattgrid interface to raise all speech formants by 20%

    kg = klattgrid.openKlattGrid("path_to_klattgrid")
    incrTwenty = lambda x: x * 1.2
    kg.tierDict["oral_formants"].modifySubtiers("formants",incrTwenty)
    kg.save(join(outputPath, "bobby_twenty_percent_less.KlattGrid"))
  • replace labeled segments in a recording with silence or delete them

    • see /examples/deleteVowels.py
  • use set operations (union, intersection, difference) on textgrid tiers

    • see /examples/textgrid_set_operations.py
  • see /praatio/praatio_scripts.py for various ready-to-use functions such as

    • splitAudioOnTier(): split an audio file into chunks specified by intervals in one tier
    • spellCheckEntries(): spellcheck a textgrid tier
    • tgBoundariesToZeroCrossings(): adjust all boundaries and points to fall at the nearest zero crossing in the corresponding audio file
    • alignBoundariesAcrossTiers(): for handmade textgrids, sometimes entries may look as if they are aligned at the same time but actually are off by a small amount, this will correct them

Tests

I run tests with the following command (this requires pytest and pytest-cov to be installed):

pytest --cov=praatio tests/

Citing praatIO

PraatIO is general purpose coding and doesn't need to be cited but if you would like to, it can be cited like so:

Tim Mahrt. PraatIO. https://github.com/timmahrt/praatIO, 2016.

Acknowledgements

Development of PraatIO was possible thanks to NSF grant BCS 12-51343 to Jennifer Cole, José I. Hualde, and Caroline Smith and to the A*MIDEX project (n° ANR-11-IDEX-0001-02) to James Sneed German funded by the Investissements d'Avenir French Government program, managed by the French National Research Agency (ANR).

Owner
Tim
I write tools for working with speech data.
Tim
TONet: Tone-Octave Network for Singing Melody Extraction from Polyphonic Music

TONet Introduction The official implementation of "TONet: Tone-Octave Network for Singing Melody Extraction from Polyphonic Music", in ICASSP 2022 We

Knut(Ke) Chen 29 Dec 01, 2022
Bot Music Pintar. Created by Rio

🎶 Rio Music 🎶 Kalo Fork Star Ya Bang Hehehe Requirements 📝 FFmpeg NodeJS nodesource.com Python 3.8+ or 3.7 PyTgCalls Generate String Using Replit ⤵

RioProjectX 7 Jun 15, 2022
python wrapper for rubberband

pyrubberband A python wrapper for rubberband. For now, this just provides lightweight wrappers for pitch-shifting and time-stretching. All processing

Brian McFee 106 Nov 28, 2022
Music player - endlessly plays your music

Music player First, if you wonder about what is supposed to be a music player or what makes a music player different from a simple media player, read

Albert Zeyer 482 Dec 19, 2022
Powerful, simple, audio tag editor for GNU/Linux

puddletag puddletag is an audio tag editor (primarily created) for GNU/Linux similar to the Windows program, Mp3tag. Unlike most taggers for GNU/Linux

341 Dec 26, 2022
A small project where I identify notes and key harmonies in a piece of music and use them further to recreate and generate the same piece of music through Python

A small project where I identify notes and key harmonies in a piece of music and use them further to recreate and generate the same piece of music through Python

5 Oct 07, 2022
Frescobaldi LilyPond Editor

README for Frescobaldi Homepage: http://www.frescobaldi.org/ Main author: Wilbert Berendsen Frescobaldi is a LilyPond sheet music text editor. It aims

Frescobaldi 600 Dec 29, 2022
Full LAKH MIDI dataset converted to MuseNet MIDI output format (9 instruments + drums)

LAKH MuseNet MIDI Dataset Full LAKH MIDI dataset converted to MuseNet MIDI output format (9 instruments + drums) Bonus: Choir on Channel 10 Please CC

Alex 6 Nov 20, 2022
All-In-One Digital Audio Workstation and Plugin Suite

How to install Windows Mac OS X Fedora Ubuntu How to Build Debian and Ubuntu Fedora All Other Linux Distros Mac OS X Windows What is MusiKernel? MusiK

j3ffhubb 111 Sep 21, 2021
This is an OverPowered Vc Music Player! Will work for you and play music in Voice Chatz

VcPlayer This is an OverPowered Vc Music Player! Will work for you and play music in Voice Chatz Telegram Voice-Chat Bot [PyTGCalls] ⇝ Requirements ⇜

1 Dec 20, 2021
Scrap electronic music charts into CSV files

musiccharts A small python script to scrap (electronic) music charts into directories with csv files. Installation Download MusicCharts.exe Run MusicC

Dustin Scharf 1 May 11, 2022
A python library for working with praat, textgrids, time aligned audio transcripts, and audio files.

praatIO Questions? Comments? Feedback? A library for working with praat, time aligned audio transcripts, and audio files that comes with batteries inc

Tim 224 Dec 19, 2022
Telegram Bot to play music in VoiceChat with Channel Support and autostarts Radio.

VCPlayerBot Telegram bot to stream videos in telegram voicechat for both groups and channels. Supports live streams, YouTube videos and telegram media

Abdisamad Omar Mohamed 1 Oct 15, 2021
Jarvis From Basic to Advance - make a voice assistant similar to JARVIS (in iron man movie)

JARVIS (Basic to Advance) This was my attempt to make a voice assistant similar to JARVIS (in iron man movie) Let's be honest, it's not as intelligent

codesempai 17 Dec 25, 2022
SomaFM Plugin for Kodi

SomaFM XBMC Plugin This description is a bit outdated. You can simply install this addon by browsing the official repositories from within Kodi. Insta

7 Jan 21, 2022
spafe: Simplified Python Audio-Features Extraction

spafe aims to simplify features extractions from mono audio files. The library can extract of the following features: BFCC, LFCC, LPC, LPCC, MFCC, IMFCC, MSRCC, NGCC, PNCC, PSRCC, PLP, RPLP, Frequenc

Ayoub Malek 310 Jan 01, 2023
User-friendly Voice Cloning Application

Multi-Language-RTVC stands for Multi-Language Real Time Voice Cloning and is a Voice Cloning Tool capable of transfering speaker-specific audio featur

Sven Eschlbeck 19 Dec 30, 2022
Vixtify - Python Controlled Music Player

Strumm Sound Playlist : Click me to listen Welcome to GitHub Pages You can use the editor on GitHub to maintain and preview the content for your websi

Vicky Kumar 2 Feb 03, 2022
A Python 3 script for capturing and recording a SDR stream to a WAV file (or serving it to a HTTP audio stream).

rfsoapyfile A Python 3 script for capturing and recording a SDR stream to a WAV file (or serving it to a HTTP audio stream). The script is threaded fo

4 Dec 19, 2022
LibXtract is a simple, portable, lightweight library of audio feature extraction functions.

LibXtract LibXtract is a simple, portable, lightweight library of audio feature extraction functions. The purpose of the library is to provide a relat

Jamie Bullock 215 Nov 16, 2022