!pip install praatio
Collecting praatio
  Downloading praatio-5.0.0-py3-none-any.whl (76 kB)
     |████████████████████████████████| 76 kB 2.9 MB/s 
Requirement already satisfied: typing-extensions in /usr/local/lib/python3.7/dist-packages (from praatio) (3.7.4.3)
Installing collected packages: praatio
Successfully installed praatio-5.0.0
def _read_lab(filename: str, skip_empty_labels: bool = True):
    ret = []
    with open(filename) as file:
        for line in file.readlines():
            if line.strip() == '':
                continue
            if line.startswith('#'):
                continue
            l = line.rstrip().split(' ')
            if skip_empty_labels and len(l) != 3:
                continue
            tmp = {}
            tmp['start'] = l[0]
            tmp['end'] = l[1]
            if len(l) == 3:
                tmp['phone'] = l[2]
            else:
                tmp['phone'] = ''
            ret.append(tmp)
    return ret
%%writefile sample.lab
0 9700000 sil
9700000 10900000 i
10900000 12400000 mj
12400000 13100000 lj
13100000 15200000 au
15200000 16300000 r
16300000 18100000 sil
18100000 19100000 sil
19100000 23700000
Writing sample.lab
ll = _read_lab('sample.lab', False)
from praatio import textgrid
from praatio.utilities.constants import Interval
out = []
for l in ll:
    out.append(Interval(int(l['start'])/10000000.0, int(l['end'])/10000000.0, l['phone']))
tier_start = out[0][0]
tier_end = out[-1][1]
out
[Interval(start=0.0, end=0.97, label='sil'),
 Interval(start=0.97, end=1.09, label='i'),
 Interval(start=1.09, end=1.24, label='mj'),
 Interval(start=1.24, end=1.31, label='lj'),
 Interval(start=1.31, end=1.52, label='au'),
 Interval(start=1.52, end=1.63, label='r'),
 Interval(start=1.63, end=1.81, label='sil'),
 Interval(start=1.81, end=1.91, label='sil'),
 Interval(start=1.91, end=2.37, label='')]
tg = textgrid.Textgrid()
phone_tier = textgrid.IntervalTier('phones', out, tier_start, tier_end)
tg.addTier(phone_tier)
tg.save('out.TextGrid', format="long_textgrid", includeBlankSpaces=False)
!cat out.TextGrid
File type = "ooTextFile"
Object class = "TextGrid"

xmin = 0 
xmax = 2.37 
tiers? <exists> 
size = 1 
item []: 
    item [1]:
        class = "IntervalTier" 
        name = "phones" 
        xmin = 0 
        xmax = 2.37 
        intervals: size = 9 
        intervals [1]:
            xmin = 0 
            xmax = 0.97 
            text = "sil" 
        intervals [2]:
            xmin = 0.97 
            xmax = 1.09 
            text = "i" 
        intervals [3]:
            xmin = 1.09 
            xmax = 1.24 
            text = "mj" 
        intervals [4]:
            xmin = 1.24 
            xmax = 1.31 
            text = "lj" 
        intervals [5]:
            xmin = 1.31 
            xmax = 1.52 
            text = "au" 
        intervals [6]:
            xmin = 1.52 
            xmax = 1.63 
            text = "r" 
        intervals [7]:
            xmin = 1.63 
            xmax = 1.81 
            text = "sil" 
        intervals [8]:
            xmin = 1.81 
            xmax = 1.91 
            text = "sil" 
        intervals [9]:
            xmin = 1.91 
            xmax = 2.37 
            text = ""