Как записывать звук с микрофона?

Для записи звука с микрофона в Java, вам потребуется использовать библиотеку Java Sound API. Эта библиотека предоставляет различные классы и методы для управления аудио-данными.

Вот пример кода, который позволяет записывать звук с микрофона:

import javax.sound.sampled.*;

public class MicrophoneRecorder {
    public static void main(String[] args) {
        // Получение доступных аудио-устройств
        Mixer.Info[] mixerInfo = AudioSystem.getMixerInfo();
        
        // Поиск аудио-устройства, отвечающего за микрофон
        Mixer mixer = null;
        for (Mixer.Info info : mixerInfo) {
            mixer = AudioSystem.getMixer(info);
            Line.Info[] targetLineInfo = mixer.getTargetLineInfo();
            if (targetLineInfo.length != 0 && targetLineInfo[0].getLineClass().equals(TargetDataLine.class)) {
                break;
            }
        }
        
        // Установка формата аудио-данных
        AudioFormat audioFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, 44100, 16, 2, 4, 44100, false);
        
        try {
            // Открытие линии записи
            TargetDataLine line = (TargetDataLine) mixer.getLine(new DataLine.Info(TargetDataLine.class, audioFormat));
            line.open(audioFormat);
            
            // Создание аудио-потока
            AudioInputStream audioInputStream = new AudioInputStream(line);
            
            // Начало записи
            line.start();
            
            // Запись аудио-данных в файл
            File outputFile = new File("output.wav");
            AudioSystem.write(audioInputStream, AudioFileFormat.Type.WAVE, outputFile);
            
            // Завершение записи
            line.stop();
            line.close();
        } catch (LineUnavailableException | IOException e) {
            e.printStackTrace();
        }
    }
}

В этом примере мы сначала получаем доступные аудио-устройства с помощью метода AudioSystem.getMixerInfo(). Затем мы ищем аудио-устройство, отвечающее за микрофон, путем проверки типа линии TargetDataLine у каждого аудио-устройства.

Затем мы устанавливаем формат аудио-данных, в данном случае PCM_SIGNED с частотой дискретизации 44100 Гц, 16-битной глубиной и двумя каналами.

Далее мы открываем линию TargetDataLine, создаем AudioInputStream на основе этой линии, и начинаем запись с помощью line.start(). Записанные аудио-данные сохраняются в файл типа WAV с помощью AudioSystem.write().

В конце мы останавливаем линию и закрываем ее.

Обратите внимание, что для работы этого кода вам понадобится правильно настроенный микрофон и доступ к аудио-устройству на вашей операционной системе.