def METHOD_NAME(self, size, hop=None, num_chunks=1):
    def get_clip(pos, size):
        if pos > self.audio.shape[1]:
            return np.zeros((self.audio.shape[0], size), dtype=self.audio.dtype)
        if pos + size > self.audio.shape[1]:
            clip = np.zeros((self.audio.shape[0], size), dtype=self.audio.dtype)
            clip[:, :self.audio.shape[1]-pos] = self.audio[:, pos:]
            return clip
        else:
            return self.audio[:, pos:pos+size]
    if not hop:
        hop = size
    pos = 0
    while pos < self.audio.shape[1]:
        chunk = np.zeros((num_chunks, self.audio.shape[0], size), dtype=self.audio.dtype)
        for n in range(num_chunks):
            chunk[n, :, :] = get_clip(pos, size)
            pos += hop
        yield chunk