code: public byte[] getAudioData(double volume)
      {
          short s;
          int byteIndex = 0;
          byte[] audio = new byte[audioData.length * 2];
          for (int i = 0; i < audioData.length; i++)
          {
              s = audioData[i];
              if (volume != 1.0)
                  s = (short) (s * volume);
  
              byte leftByte = (byte) ((0x000000FF) & (s >> 8));
              byte rightByte =  (byte) (0x000000FF & s);
              audio[byteIndex] = leftByte;
              audio[byteIndex + 1] = rightByte;
              byteIndex += 2;
          }
          return audio;
      }
docs: Provides 20 Milliseconds of combined audio data in 48KHz 16bit stereo signed BigEndian PCM.
  <br>Format defined by: {@link net.dv8tion.jda.core.audio.AudioReceiveHandler#OUTPUT_FORMAT AudioReceiveHandler.OUTPUT_FORMAT}.
  <p>
  The output volume of the data can be modified by the provided {@code `volume`} parameter. {@code `1.0`} is considered to be 100% volume.
  <br>Going above `{@code 1.0`} can increase the volume further, but you run the risk of audio distortion.
  <p>
  <b>NOTE: If no users were speaking, this provides silent audio and {@link #getUsers()} returns an empty list!</b>
  
  @param  volume
  Value used to modify the "volume" of the returned audio data. 1.0 is normal volume.
  
  @return Never-null byte array of PCM data defined by {@link net.dv8tion.jda.core.audio.AudioReceiveHandler#OUTPUT_FORMAT AudioReceiveHandler.OUTPUT_FORMAT}