def split_multiple_recordings(audio, min_silence_duration=0.25, noise_threshold=150, sample_rate_hz=8e3):
    """ Accepts a numpy array of audio data and splits it at the points of silence into multiple arrays of data.

    :param audio: numpy array of audio data
    :param min_silence_duration: the required period of silence to split the recording
    :param sample_rate_hz: the sample rate of the audio
    :return: a list of split numpy arrays
    """
    # A list of tuples (start, stop)
    min_silence_frame = sample_rate_hz * min_silence_duration
    silence_zones = []

    zone_start = None
    zone_end = None

    for idx, point in enumerate(audio):
        if abs(point) < noise_threshold and zone_start is None:
            zone_start = idx

        if abs(point) > noise_threshold and zone_start is not None:
            zone_end = idx

        # If we are in a silent zone and we come to the end point
        if zone_start is not None and zone_end and abs(point) > noise_threshold:
            if (zone_end - zone_start) > min_silence_frame:
                silence_zones.append((zone_start, zone_end))

            zone_start = None
            zone_end = None

    # Split the recording by the zones
    split_recordings = []
    for idx, zone in enumerate(silence_zones):
        if idx == 0:
            start = 0
        else:
            start = silence_zones[idx - 1][1]

        end = zone[0]
        split_recordings.append(audio[start:end])

    return split_recordings