code: def process_line(line, data_folder, language, accented_letters):
      # Path is at indice 1 in Common Voice tsv files. And .mp3 files
      # are located in datasets/lang/clips/
      mp3_path = data_folder + "/clips/" + line.split("\t")[1]
  
      file_name = mp3_path.split(".")[-2].split("/")[-1]
      spk_id = line.split("\t")[0]
      snt_id = file_name
  
      # Setting torchaudio backend to sox-io (needed to read mp3 files)
      if torchaudio.get_audio_backend() != "sox_io":
          logger.warning(
              "This recipe needs the sox-io backend of torchaudio"
          )
          logger.warning("The torchaudio backend is changed to sox_io")
          torchaudio.set_audio_backend("sox_io")
  
      # Reading the signal (to retrieve duration in seconds)
      if os.path.isfile(mp3_path):
          info = read_audio_info(mp3_path)
      else:
          msg = "\tError loading: %s" % (str(len(file_name)))
          logger.info(msg)
          return None
  
      duration = info.num_frames / info.sample_rate
  
      # Getting transcript
      words = line.split("\t")[2]
  
      # Unicode Normalization
      words = unicode_normalisation(words)
  
      # !! Language specific cleaning !!
      words = language_specific_preprocess(language, words)
  
      # Remove accents if specified
      if not accented_letters:
          words = strip_accents(words)
          words = words.replace("'", " ")
          words = words.replace("’", " ")
  
      # Remove multiple spaces
      words = re.sub(" +", " ", words)
  
      # Remove spaces at the beginning and the end of the sentence
      words = words.lstrip().rstrip()
  
      # Getting chars
      chars = words.replace(" ", "_")
      chars = " ".join([char for char in chars][:])
  
      # Remove too short sentences (or empty):
      if language in ["ja", "zh-CN"]:
          if len(chars) < 3:
              return None
      else:
          if len(words.split(" ")) < 3:
              return None
  
      # Composition of the csv_line
      return CVRow(snt_id, duration, mp3_path, spk_id, words)
  
file_path: speechbrain/recipes/CommonVoice/LM/common_voice_prepare.py
imports: from dataclasses import dataclass
  import os
  import csv
  import re
  import logging
  import torchaudio
  import unicodedata
  import functools
  from speechbrain.utils.parallel import parallel_map
  from speechbrain.dataio.dataio import read_audio_info
label_desc: Use image node_id 3 for calling a global function with example usage: process_line(line, data_folder, language, accented_letters) and returns: CVRow, None, None, None