В образовательных целях я хочу снять звук с микрофона и воспроизвести его. Но когда я выполняю свой код, он записывается в течение примерно 6-8 секунд, а затем молчит 6-8 секунд. Когда я экспортирую аудио как файл .raw и загружаю его в Audacity, я слышу только тихий белый шум. Пожалуйста, помогите мне.
OpenJDK 11, PulseAudio, Arch Linux, Realtek, KDE
public static void main(String[] args) throws LineUnavailableException, IOException {
System.out.println("RECORDING");
AudioFormat format = new AudioFormat(8000, 8, 1, true, false);
TargetDataLine microphone = AudioSystem.getTargetDataLine(format);
microphone.open(format);
byte[] buffer = new byte[(int) format.getSampleRate() * format.getFrameSize()];
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
microphone.start();
int bytesRead;
while (outputStream.size() < 100000) {
bytesRead = microphone.read(buffer, 0, buffer.length);
outputStream.write(buffer, 0, bytesRead);
}
microphone.stop();
microphone.close();
System.out.println("PLAYING");
byte[] audio = outputStream.toByteArray();
ByteArrayInputStream inputStream = new ByteArrayInputStream(audio);
AudioInputStream ais = new AudioInputStream(inputStream, format, audio.length);
SourceDataLine speaker = AudioSystem.getSourceDataLine(format);
speaker.open(format);
speaker.start();
while ((bytesRead = ais.read(buffer, 0, buffer.length)) != -1) {
speaker.write(buffer, 0, bytesRead);
}
speaker.drain();
speaker.close();
speaker.stop();
}
Любая помощь будет высоко ценится.