code: def main():
      if args.log:
          logging.basicConfig(level=logging.INFO)
  
      data_root = args.data_root
      os.makedirs(data_root, exist_ok=True)
  
      target_unpacked_dir = os.path.join(data_root, "CV_unpacked")
  
      if os.path.exists(target_unpacked_dir):
          logging.info(
              "Find existing folder {}".format(target_unpacked_dir)
          )
      else:
          logging.info(
              "Could not find Common Voice, Downloading corpus..."
          )
  
          # some dataset versions are packaged in different named files, so forcing
          output_archive_filename = args.language + ".tar.gz"
          output_archive_filename = os.path.join(
              data_root, output_archive_filename
          )
  
          commands = [
              "wget",
              "--user-agent",
              '"Mozilla/5.0 (Windows NT 10.0; WOW64) '
              'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"',
              "-O",
              output_archive_filename,
              f"{COMMON_VOICE_URL}",
          ]
          commands = " ".join(commands)
          subprocess.run(
              commands,
              shell=True,
              stderr=sys.stderr,
              stdout=sys.stdout,
              capture_output=False,
          )
          filename = f"{args.language}.tar.gz"
          target_file = os.path.join(
              data_root, os.path.basename(filename)
          )
  
          os.makedirs(target_unpacked_dir, exist_ok=True)
          logging.info(
              "Unpacking corpus to {} ...".format(target_unpacked_dir)
          )
          tar = tarfile.open(target_file)
          tar.extractall(target_unpacked_dir)
          tar.close()
          if args.cleanup:
              logging.info("removing tar archive to save space")
              os.remove(target_file)
  
      folder_path = os.path.join(
          target_unpacked_dir, args.version + f"/{args.language}/"
      )
      if not os.path.isdir(folder_path):
          # try without language
          folder_path = os.path.join(target_unpacked_dir, args.version)
          if not os.path.isdir(folder_path):
              # try without version
              folder_path = target_unpacked_dir
              if not os.path.isdir(folder_path):
                  logging.error(
                      f"unable to locate unpacked files in {folder_path}"
                  )
                  sys.exit()
  
      for csv_file in args.files_to_process:
          data = process_files(
              csv_file=os.path.join(folder_path, csv_file),
              data_root=os.path.join(
                  data_root, os.path.splitext(csv_file)[0]
              ),
              num_workers=args.num_workers,
          )
          logging.info("Creating manifests...")
          create_manifest(
              data=data,
              output_name=f"commonvoice_{os.path.splitext(csv_file)[0]}_manifest.json",
              manifest_path=args.manifest_dir,
          )
  
file_path: NeMo/scripts/dataset_processing/get_commonvoice_data.py
imports: import argparse
  import csv
  import json
  import logging
  import multiprocessing
  import os
  import subprocess
  import sys
  import tarfile
  from multiprocessing.pool import ThreadPool
  from pathlib import Path
  from typing import List
  import sox
  from sox import Transformer
  from tqdm import tqdm
label_desc: Use image node_id 3 for calling a global function with example usage: main() without return types