escribe el código fuente de un microservicio en java para extraer el audio de videos y luego convertir ese audio en texto si es posible utilizando whisper o sino otro servicio de audio a texto
		
		
	 
Aquí te presento un ejemplo de código en Java que utiliza FFmpeg para extraer el audio de un archivo de video y utiliza el servicio de transcripción de voz a texto de Google Cloud para convertirlo. Puedes adaptar este código para utilizar otros servicios de transcripción si lo deseas:
```java
import com.google.auth.oauth2.GoogleCredentials;
import com.google.cloud.speech.v1.*;
import com.google.protobuf.ByteString;
import io.grpc.ManagedChannel;
import io.grpc.ManagedChannelBuilder;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
public class AudioToTextService {
    private static final String GOOGLE_CLOUD_PROJECT_ID = "tu-proyecto-id";
    private static final String GOOGLE_APPLICATION_CREDENTIALS_PATH = "/ruta/hacia/cloud/credenciales.json";
    private static final int RECORDING_RATE = 16000;
    public static void main(String[] args) throws Exception {
        String videoFilePath = "ruta/al/video.mp4";
        // Extraer el audio del video en formato FLAC
        String audioFilePath = extractAudioFromVideo(videoFilePath);
        // Transcribir el audio utilizando el servicio de Google Cloud Speech-to-Text
        String transcript = transcribeAudio(audioFilePath);
        // Imprimir el resultado
        System.out.println("Transcripción: " + transcript);
    }
    private static String extractAudioFromVideo(String videoFilePath) throws IOException, InterruptedException {
        // Crear el archivo temporal para guardar el audio
        Path tempAudioFilePath = Files.createTempFile("audio", ".flac");
        // Crear y ejecutar el comando FFmpeg para extraer el audio en formato FLAC
        List<String> ffmpegCmd = List.of(
                "ffmpeg", "-i", videoFilePath, "-vn", tempAudioFilePath.toString());
        ProcessBuilder pb = new ProcessBuilder(ffmpegCmd);
        pb.inheritIO();
        Process process = pb.start();
        process.waitFor();
        // Devolver la ruta al archivo de audio extraído
        return tempAudioFilePath.toString();
    }
    private static String transcribeAudio(String audioFilePath) throws IOException {
        // Crear instancia del cliente de Google Cloud Speech-to-Text
        ManagedChannel channel = ManagedChannelBuilder.forTarget("speech.googleapis.com:443").build();
        GoogleCredentials credentials = GoogleCredentials.fromStream(new FileInputStream(GOOGLE_APPLICATION_CREDENTIALS_PATH));
        SpeechSettings settings = SpeechSettings.newBuilder()
                .setCredentialsProvider(() -> credentials)
                .build();
        SpeechClient speech = SpeechClient.create(settings);
        // Crear la configuración del pedido de transcripción
        RecognitionConfig config = RecognitionConfig.newBuilder()
                .setEncoding(RecognitionConfig.AudioEncoding.FLAC)
                .setSampleRateHertz(RECORDING_RATE)
                .setLanguageCode("es-ES")
                .build();
        // Leer el archivo de audio y convertirlo a bytes
        byte[] audioBytes = FileUtils.readFileToByteArray(new File(audioFilePath));
        ByteString audioBytesByteString = ByteString.copyFrom(audioBytes);
        // Crear el objeto de solicitud de transcripción
        RecognitionAudio audio = RecognitionAudio.newBuilder()
                .setContent(audioBytesByteString)
                .build();
        // Enviar la solicitud al servicio de Google Cloud Speech-to-Text
        RecognizeResponse response = speech.recognize(config, audio);
        // Obtener la transcripción
        StringBuilder transcriptBuilder = new StringBuilder();
        for (SpeechRecognitionResult result : response.getResultsList()) {
            SpeechRecognitionAlternative alternative = result.getAlternativesList().get(0);
            String text = alternative.getTranscript();
            transcriptBuilder.append(text);
        }
        String transcript = transcriptBuilder.toString();
        // Cerrar el cliente y devolver la transcripción
        speech.close();
        return transcript;
    }
}
```
Recuerda modificar las constantes `GOOGLE_CLOUD_PROJECT_ID` y `GOOGLE_APPLICATION_CREDENTIALS_PATH` con tus propias credenciales de Google Cloud Speech-to-Text.
Espero que esto te sea útil ¡buena suerte con tu proyecto!