code: def find_speech_regions(filename, frame_width=4096, min_region_size=0.5, max_region_size=6): # pylint: disable=too-many-locals
      
      reader = wave.open(filename)
      sample_width = reader.getsampwidth()
      rate = reader.getframerate()
      n_channels = reader.getnchannels()
      chunk_duration = float(frame_width) / rate
  
      n_chunks = int(math.ceil(reader.getnframes()*1.0 / frame_width))
      energies = []
  
      for _ in range(n_chunks):
          chunk = reader.readframes(frame_width)
          energies.append(audioop.rms(chunk, sample_width * n_channels))
  
      threshold = percentile(energies, 0.2)
  
      elapsed_time = 0
  
      regions = []
      region_start = None
  
      for energy in energies:
          is_silence = energy <= threshold
          max_exceeded = region_start and elapsed_time - region_start >= max_region_size
  
          if (max_exceeded or is_silence) and region_start:
              if elapsed_time - region_start >= min_region_size:
                  regions.append((region_start, elapsed_time))
                  region_start = None
  
          elif (not region_start) and (not is_silence):
              region_start = elapsed_time
          elapsed_time += chunk_duration
      return regions
docs: Perform voice activity detection on a given audio file.