MCPcopy Create free account
hub / github.com/MoonInTheRiver/DiffSinger / TextGrid

Class TextGrid

data_gen/tts/data_gen_utils.py:197–271  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

195
196
197class TextGrid(object):
198 def __init__(self, text):
199 text = remove_empty_lines(text)
200 self.text = text
201 self.line_count = 0
202 self._get_type()
203 self._get_time_intval()
204 self._get_size()
205 self.tier_list = []
206 self._get_item_list()
207
208 def _extract_pattern(self, pattern, inc):
209 """
210 Parameters
211 ----------
212 pattern : regex to extract pattern
213 inc : increment of line count after extraction
214 Returns
215 -------
216 group : extracted info
217 """
218 try:
219 group = re.match(pattern, self.text[self.line_count]).group(1)
220 self.line_count += inc
221 except AttributeError:
222 raise ValueError("File format error at line %d:%s" % (self.line_count, self.text[self.line_count]))
223 return group
224
225 def _get_type(self):
226 self.file_type = self._extract_pattern(r"File type = \"(.*)\"", 2)
227
228 def _get_time_intval(self):
229 self.xmin = self._extract_pattern(r"xmin = (.*)", 1)
230 self.xmax = self._extract_pattern(r"xmax = (.*)", 2)
231
232 def _get_size(self):
233 self.size = int(self._extract_pattern(r"size = (.*)", 2))
234
235 def _get_item_list(self):
236 """Only supports IntervalTier currently"""
237 for itemIdx in range(1, self.size + 1):
238 tier = OrderedDict()
239 item_list = []
240 tier_idx = self._extract_pattern(r"item \[(.*)\]:", 1)
241 tier_class = self._extract_pattern(r"class = \"(.*)\"", 1)
242 if tier_class != "IntervalTier":
243 raise NotImplementedError("Only IntervalTier class is supported currently")
244 tier_name = self._extract_pattern(r"name = \"(.*)\"", 1)
245 tier_xmin = self._extract_pattern(r"xmin = (.*)", 1)
246 tier_xmax = self._extract_pattern(r"xmax = (.*)", 1)
247 tier_size = self._extract_pattern(r"intervals: size = (.*)", 1)
248 for i in range(int(tier_size)):
249 item = OrderedDict()
250 item["idx"] = self._extract_pattern(r"intervals \[(.*)\]", 1)
251 item["xmin"] = self._extract_pattern(r"xmin = (.*)", 1)
252 item["xmax"] = self._extract_pattern(r"xmax = (.*)", 1)
253 item["text"] = self._extract_pattern(r"text = \"(.*)\"", 1)
254 item_list.append(item)

Callers 1

get_mel2phFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected