docs: def utterances_from_tier(eafob: Eaf, tier_name: str) -> List[Utterance]:
      """ Returns utterances found in the given Eaf object in the given tier."""
  
      try:
          speaker = eafob.tiers[tier_name][2]["PARTICIPANT"]
      except KeyError:
          speaker = None # We don't know the name of the speaker.
  
      tier_utterances = []
  
      annotations = sort_annotations(
          list(eafob.get_annotation_data_for_tier(tier_name)))
  
      for i, annotation in enumerate(annotations):
          eaf_stem = eafob.eaf_path.stem
          utter_id = "{}.{}.{}".format(eaf_stem, tier_name, i)
          start_time = eafob.time_origin + annotation[0]
          end_time = eafob.time_origin + annotation[1]
          text = annotation[2]
          utterance = Utterance(eafob.media_path, eafob.eaf_path, utter_id,
                                start_time, end_time, text, speaker)
          tier_utterances.append(utterance)
  
      return tier_utterances