code: def preprocess_phoneme_level_input(self, inp):
      ph_seq = inp["ph_seq"]
      note_lst = inp["note_seq"].split()
      midi_dur_lst = inp["note_dur_seq"].split()
      is_slur = [float(x) for x in inp["is_slur_seq"].split()]
      print(len(note_lst), len(ph_seq.split()), len(midi_dur_lst))
      if len(note_lst) == len(ph_seq.split()) == len(midi_dur_lst):
          print("Pass word-notes check.")
      else:
          print(
              "The number of words does't match the number of notes' windows. ",
              "You should split the note(s) for each word by | mark.",
          )
          return None
      return ph_seq, note_lst, midi_dur_lst, is_slur
  
imports: import os
  from collections import deque
  import librosa
  import numpy
  import onnxruntime
  from pypinyin import lazy_pinyin
  from tqdm import tqdm
  from .inference.svs.opencpop.map import cpop_pinyin2ph_func
  from .utils.hparams import hparams
  from .utils.text_encoder import TokenTextEncoder
label_desc: Use image node_id 8 for calling the Infer obj's underlying member method code with example usage: obj.preprocess_phoneme_level_input(inp) and returns: ph_seq,  note_lst,  midi_dur_lst,  is_slur, None