class_docstr: Align text to audio using CTC segmentation.
  
  Usage:
      Initialize with given ASR model and parameters.
      If needed, parameters for CTC segmentation can be set with ``set_config(·)``.
      Then call the instance as function to align text within an audio file.
  
  Example:
      >>> # example file included in the ESPnet repository
      >>> import soundfile
      >>> speech, fs = soundfile.read("test_utils/ctc_align_test.wav")
      >>> # load an ASR model
      >>> from espnet_model_zoo.downloader import ModelDownloader
      >>> d = ModelDownloader()
      >>> wsjmodel = d.download_and_unpack( "kamo-naoyuki/wsj" )
      >>> # Apply CTC segmentation
      >>> aligner = CTCSegmentation( **wsjmodel )
      >>> text=["utt1 THE SALE OF THE HOTELS", "utt2 ON PROPERTY MANAGEMENT"]
      >>> aligner.set_config( gratis_blank=True )
      >>> segments = aligner( speech, text, fs=fs )
      >>> print( segments )
      utt1 utt 0.27 1.72 -0.1663 THE SALE OF THE HOTELS
      utt2 utt 4.54 6.10 -4.9646 ON PROPERTY MANAGEMENT
  
  On multiprocessing:
      To parallelize the computation with multiprocessing, these three steps
      can be separated:
      (1) ``get_lpz``: obtain the lpz,
      (2) ``prepare_segmentation_task``: prepare the task, and
      (3) ``get_segments``: perform CTC segmentation.
      Note that the function `get_segments` is a staticmethod and therefore
      independent of an already initialized CTCSegmentation object.
  
  References:
      CTC-Segmentation of Large Corpora for German End-to-end Speech Recognition
      2020, Kürzinger, Winkelbauer, Li, Watzel, Rigoll
      https://arxiv.org/abs/2007.09127
  
  More parameters are described in https://github.com/lumaku/ctc-segmentation
docstr: Align utterances.
  
  Args:
      speech: Audio file.
      text: List or multiline-string with utterance ground truths.
      fs: Sample rate in Hz. Optional, as this can be given when
          the module is initialized.
      name: Name of the file. Utterance names are derived from it.
  
  Returns:
      CTCSegmentationTask object with segments.
docstr_tok: ["Align","utterances",".","Args",":","speech",":","Audio","file",".","text",":","List","or","multiline-string","with","utterance","ground","truths",".","fs",":","Sample","rate","in","Hz",".","Optional",",","as","this","can","be","given","when","the","module","is","initialized",".","name",":","Name","of","the","file",".","Utterance","names","are","derived","from","it",".","Returns",":","CTCSegmentationTask","object","with","segments","."]
code: def __call__(
      self,
      speech: Union[torch.Tensor, np.ndarray],
      text: Union[List[str], str],
      fs: Optional[int] = None,
      name: Optional[str] = None,
  ) -> CTCSegmentationTask:
      """Align utterances.
  
      Args:
          speech: Audio file.
          text: List or multiline-string with utterance ground truths.
          fs: Sample rate in Hz. Optional, as this can be given when
              the module is initialized.
          name: Name of the file. Utterance names are derived from it.
  
      Returns:
          CTCSegmentationTask object with segments.
      """
      assert check_argument_types()
      if fs is not None:
          self.set_config(fs=fs)
      # Get log CTC posterior probabilities
      lpz = self.get_lpz(speech)
      # Conflate text & lpz & config as a segmentation task object
      task = self.prepare_segmentation_task(
          text, lpz, name, speech.shape[0]
      )
      # Apply CTC segmentation
      segments = self.get_segments(task)
      task.set(**segments)
      assert check_return_type(task)
      return task
  
imports: import argparse
  import logging
  import sys
  from pathlib import Path
  from typing import List, Optional, TextIO, Union
  import numpy
  import soundfile
  import torch
  from ctc_segmentation import CtcSegmentationParameters, ctc_segmentation, determine_utterance_segments, prepare_text, prepare_token_list
  from typeguard import check_argument_types, check_return_type
  from espnet2.tasks.asr import ASRTask
  from espnet2.torch_utils.device_funcs import to_device
  from espnet2.utils import config_argparse
  from espnet2.utils.types import str2bool, str_or_none
  from espnet.utils.cli_utils import get_commandline_args
label_desc: Use image node_id 9 for calling the CTCSegmentation obj's underlying member method code with example usage: obj.__call__(speech, text, fs, name) and returns: task