class_docstr: LibriTTS dataset.
class_docstr_tok: ["LibriTTS","dataset","."]
code: def _populate_metadata(self, archive_paths):
      # All archives contain the same metadata.
      archive_path = list(archive_paths.values())[0]
  
      speaker_info = {}
      with tf.io.gfile.GFile(archive_path, "rb") as f:
          tarf = tarfile.open(mode="r:gz", fileobj=f)
          speakers_tsv = tarf.extractfile("LibriTTS/speakers.tsv")
          for n, line in enumerate(speakers_tsv):
              # Skip the first line which is just a header.
              if n == 0:
                  continue
              fields = line.decode("utf-8").strip().split("\t")
              if len(fields) == 3:
                  # Some lines are missing the final field, so leave it blank.
                  fields.append("")
              id_str, gender, subset, name = fields
              speaker_info[int(id_str)] = {
                  "gender": gender,
                  "subset": subset,
                  "name": name,
              }
      self.info.metadata["speakers"] = speaker_info
  
file_path: datasets/tensorflow_datasets/datasets/libritts/libritts_dataset_builder.py
imports: from __future__ import annotations
  import io
  import os
  import tarfile
  import numpy
  import six
  from tensorflow_datasets.core.utils.lazy_imports_utils import tensorflow
  import tensorflow_datasets.public_api
label_desc: Use image node_id 2 for calling the Builder obj's underlying member method code with example usage: obj._populate_metadata(archive_paths) without return types