docs: def generate_subtitles( # pylint: disable=too-many-locals,too-many-arguments
          source_path,
          output=None,
          concurrency=DEFAULT_CONCURRENCY,
          src_language=DEFAULT_SRC_LANGUAGE,
          dst_language=DEFAULT_DST_LANGUAGE,
          subtitle_file_format=DEFAULT_SUBTITLE_FORMAT,
          api_key=None,
      ):
      """
      Given an input audio/video file, generate subtitles in the specified language and format.
      """
      audio_filename, audio_rate = extract_audio(source_path)
  
      regions = find_speech_regions(audio_filename)
  
      pool = multiprocessing.Pool(concurrency)
      converter = FLACConverter(source_path=audio_filename)
      recognizer = SpeechRecognizer(language=src_language, rate=audio_rate,
                                    api_key=GOOGLE_SPEECH_API_KEY)
  
      transcripts = []
      if regions:
          try:
              widgets = ["Converting speech regions to FLAC files: ", Percentage(), ' ', Bar(), ' ',
                         ETA()]
              pbar = ProgressBar(widgets=widgets, maxval=len(regions)).start()
              extracted_regions = []
              for i, extracted_region in enumerate(pool.imap(converter, regions)):
                  extracted_regions.append(extracted_region)
                  pbar.update(i)
              pbar.finish()
  
              widgets = ["Performing speech recognition: ", Percentage(), ' ', Bar(), ' ', ETA()]
              pbar = ProgressBar(widgets=widgets, maxval=len(regions)).start()
  
              for i, transcript in enumerate(pool.imap(recognizer, extracted_regions)):
                  transcripts.append(transcript)
                  pbar.update(i)
              pbar.finish()
  
              if src_language.split("-")[0] != dst_language.split("-")[0]:
                  if api_key:
                      google_translate_api_key = api_key
                      translator = Translator(dst_language, google_translate_api_key,
                                              dst=dst_language,
                                              src=src_language)
                      prompt = "Translating from {0} to {1}: ".format(src_language, dst_language)
                      widgets = [prompt, Percentage(), ' ', Bar(), ' ', ETA()]
                      pbar = ProgressBar(widgets=widgets, maxval=len(regions)).start()
                      translated_transcripts = []
                      for i, transcript in enumerate(pool.imap(translator, transcripts)):
                          translated_transcripts.append(transcript)
                          pbar.update(i)
                      pbar.finish()
                      transcripts = translated_transcripts
                  else:
                      print(
                          "Error: Subtitle translation requires specified Google Translate API key. "
                          "See --help for further information."
                      )
                      return 1
  
          except KeyboardInterrupt:
              pbar.finish()
              pool.terminate()
              pool.join()
              print("Cancelling transcription")
              raise
  
      timed_subtitles = [(r, t) for r, t in zip(regions, transcripts) if t]
      formatter = FORMATTERS.get(subtitle_file_format)
      formatted_subtitles = formatter(timed_subtitles)
  
      dest = output
  
      if not dest:
          base = os.path.splitext(source_path)[0]
          dest = "{base}.{format}".format(base=base, format=subtitle_file_format)
  
      with open(dest, 'wb') as output_file:
          output_file.write(formatted_subtitles.encode("utf-8"))
  
      os.remove(audio_filename)
  
      return dest