Inicio rápido: Traducción de voz con Speech SDK para JavaQuickstart: Translate speech with the Speech SDK for Java

También hay inicios rápidos disponibles para la conversión de voz en texto y el Asistente virtual por voz.Quickstarts are also available for speech-to-text and voice-first virtual assistant.

En este inicio rápido, creará una sencilla aplicación de Java que captura la voz del usuario procedente del micrófono del equipo, traduce el contenido de voz y transcribe el texto traducido en la línea de comandos en tiempo real.In this quickstart, you'll create a simple Java application that captures user speech from your computer's microphone, translates the speech, and transcribes the translated text to the command line in real time. Esta aplicación está diseñada para ejecutarse en Windows de 64 bits o Linux de 64 bits (Ubuntu 16.04, Ubuntu 18.04, Debian 9), o en macOS 10.13 o posterior.This application is designed to run on 64-bit Windows or 64-bit Linux (Ubuntu 16.04, Ubuntu 18.04, Debian 9), or on macOS 10.13 or later. Se crea con el paquete de Maven de Speech SDK y el IDE de Java de Eclipse.It is built with the Speech SDK Maven package and the Eclipse Java IDE.

Para obtener una lista completa de los idiomas disponibles para la traducción de voz, consulte la compatibilidad con idiomas.For a complete list of languages available for speech translation, see language support.

Requisitos previosPrerequisites

Esta guía de inicio rápido requiere:This quickstart requires:

Si ejecuta Ubuntu Linux, asegúrese de que estén instaladas estas dependencias antes de iniciar Eclipse.If you're running Linux, make sure these dependencies are installed before starting Eclipse.

  • En Ubuntu:On Ubuntu:

    sudo apt-get update
    sudo apt-get install libssl1.0.0 libasound2
    
  • En Debian 9:On Debian 9:

    sudo apt-get update
    sudo apt-get install libssl1.0.2 libasound2
    

Nota

Para el SDK de dispositivos de Voz y el dispositivo Roobo, consulte SDK de dispositivos de voz.For the Speech Devices SDK and the Roobo device, see Speech Devices SDK.

Creación y configuración de un proyectoCreate and configure project

  1. Inicie Eclipse.Start Eclipse.

  2. En el selector de Eclipse, en el campo Workspace (Área de trabajo), escriba el nombre de un nuevo directorio de área de trabajo.In the Eclipse Launcher, in the Workspace field, enter the name of a new workspace directory. Luego, seleccione Launch (Iniciar).Then select Launch.

    Captura de pantalla del selector de Eclipse

  3. Al cabo de unos segundos, aparece la ventana principal del IDE de Eclipse.In a moment, the main window of the Eclipse IDE appears. Cierre la pantalla de bienvenida si hay alguna.Close the Welcome screen if one is present.

  4. En la barra de menús de Eclipse, cree un nuevo proyecto eligiendo File (Archivo) > New (Nuevo) > Project (Proyecto) .From the Eclipse menu bar, create a new project by choosing File > New > Project.

  5. Aparecerá el cuadro de diálogo Nuevo proyecto .The New Project dialog box appears. Seleccione Java Project (Proyecto de Java) y seleccione Next (Siguiente).Select Java Project, and select Next.

    Captura de pantalla del cuadro de diálogo New Project (Nuevo proyecto), con el proyecto de Java resaltado

  6. Se inicia el asistente para nuevo proyecto de Java.The New Java Project wizard starts. En el campo Project name (Nombre del proyecto), escriba quickstart y elija JavaSE-1.8 como el entorno de ejecución.In the Project name field, enter quickstart, and choose JavaSE-1.8 as the execution environment. Seleccione Finalizar.Select Finish.

    Captura de pantalla del asistente de nuevo proyecto de Java

  7. Si aparece una ventana titulada Open Associated Perspective? (¿Abrir perspectiva asociada?), seleccione Open Perspective (Abrir perspectiva).If the Open Associated Perspective? window appears, select Open Perspective.

  8. En el Explorador de paquetes, haga clic en el proyecto quickstart.In the Package explorer, right-click the quickstart project. Elija Configure (Configurar) > Convert to Maven Project (Convertir en proyecto de Maven) en el menú contextual.Choose Configure > Convert to Maven Project from the context menu.

    Captura de pantalla del Explorador de paquetes

  9. Aparece la ventana Create new POM (Crear nuevo POM).The Create new POM window appears. En el campo Group Id (Identificador de grupo), escriba com.microsoft.cognitiveservices.speech.samples, y en el campo Artifact Id (Identificador de artefacto), escriba quickstart.In the Group Id field, enter com.microsoft.cognitiveservices.speech.samples, and in the Artifact Id field, enter quickstart. A continuación, seleccione Finish (Finalizar).Then select Finish.

    Captura de pantalla de la pantalla Create new POM (Crear nuevo POM)

  10. Abra el archivo pom.xml y edítelo.Open the pom.xml file and edit it.

    • Al final del archivo, antes cerrar la etiqueta de cierre </project>, cree un elemento repositories con una referencia al repositorio de Maven para el SDK de Voz, tal y como se muestra aquí:At the end of the file, before the closing tag </project>, create a repositories element with a reference to the Maven repository for the Speech SDK, as shown here:

      <repositories>
        <repository>
          <id>maven-cognitiveservices-speech</id>
          <name>Microsoft Cognitive Services Speech Maven Repository</name>
          <url>https://csspeechstorage.blob.core.windows.net/maven/</url>
        </repository>
      </repositories>
      
    • Agregue también un elemento dependencies, con la versión 1.6.0 del SDK de Voz como dependencia:Also add a dependencies element, with the Speech SDK version 1.6.0 as a dependency:

      <dependencies>
        <dependency>
          <groupId>com.microsoft.cognitiveservices.speech</groupId>
          <artifactId>client-sdk</artifactId>
          <version>1.6.0</version>
        </dependency>
      </dependencies>
      
    • Guarde los cambios.Save the changes.

Incorporación de código de ejemploAdd sample code

  1. Para agregar una nueva clase vacía al proyecto de Java, seleccione File (Archivo) > New (Nuevo) > Class (Clase) .To add a new empty class to your Java project, select File > New > Class.

  2. En la ventana New Java Class (Nueva clase de Java) escriba speechsdk.quickstart en el campo Package (Paquete) y Main en el campo Name (Nombre).In the New Java Class window, enter speechsdk.quickstart into the Package field, and Main into the Name field.

    Captura de pantalla de la ventana New Java Class (Nueva clase de Java)

  3. Reemplace el código en Main.java con el siguiente fragmento de código:Replace all code in Main.java with the following snippet:

    package speechsdk.quickstart;
    
    import java.io.IOException;
    import java.util.Map;
    import java.util.Scanner;
    import java.util.concurrent.ExecutionException;
    import com.microsoft.cognitiveservices.speech.*;
    import com.microsoft.cognitiveservices.speech.translation.*;
    
    public class Main {
    
        public static void translationWithMicrophoneAsync() throws InterruptedException, ExecutionException, IOException
        {
            // Creates an instance of a speech translation config with specified
            // subscription key and service region. Replace with your own subscription key
            // and service region (e.g., "westus").
            SpeechTranslationConfig config = SpeechTranslationConfig.fromSubscription("YourSubscriptionKey", "YourServiceRegion");
    
            // Sets source and target language(s).
            String fromLanguage = "en-US";
            config.setSpeechRecognitionLanguage(fromLanguage);
            config.addTargetLanguage("de");
    
            // Sets voice name of synthesis output.
            String GermanVoice = "Microsoft Server Speech Text to Speech Voice (de-DE, Hedda)";
            config.setVoiceName(GermanVoice);
    
            // Creates a translation recognizer using microphone as audio input.
            TranslationRecognizer recognizer = new TranslationRecognizer(config);
            {
                // Subscribes to events.
                recognizer.recognizing.addEventListener((s, e) -> {
                    System.out.println("RECOGNIZING in '" + fromLanguage + "': Text=" + e.getResult().getText());
    
                    Map<String, String> map = e.getResult().getTranslations();
                    for(String element : map.keySet()) {
                        System.out.println("    TRANSLATING into '" + element + "': " + map.get(element));
                    }
                });
    
                recognizer.recognized.addEventListener((s, e) -> {
                    if (e.getResult().getReason() == ResultReason.TranslatedSpeech) {
                        System.out.println("RECOGNIZED in '" + fromLanguage + "': Text=" + e.getResult().getText());
    
                        Map<String, String> map = e.getResult().getTranslations();
                        for(String element : map.keySet()) {
                            System.out.println("    TRANSLATED into '" + element + "': " + map.get(element));
                        }
                    }
                    if (e.getResult().getReason() == ResultReason.RecognizedSpeech) {
                        System.out.println("RECOGNIZED: Text=" + e.getResult().getText());
                        System.out.println("    Speech not translated.");
                    }
                    else if (e.getResult().getReason() == ResultReason.NoMatch) {
                        System.out.println("NOMATCH: Speech could not be recognized.");
                    }
                });
    
                recognizer.synthesizing.addEventListener((s, e) -> {
                    System.out.println("Synthesis result received. Size of audio data: " + e.getResult().getAudio().length);
                });
    
                recognizer.canceled.addEventListener((s, e) -> {
                    System.out.println("CANCELED: Reason=" + e.getReason());
    
                    if (e.getReason() == CancellationReason.Error) {
                        System.out.println("CANCELED: ErrorCode=" + e.getErrorCode());
                        System.out.println("CANCELED: ErrorDetails=" + e.getErrorDetails());
                        System.out.println("CANCELED: Did you update the subscription info?");
                    }
                });
    
                recognizer.sessionStarted.addEventListener((s, e) -> {
                    System.out.println("\nSession started event.");
                });
    
                recognizer.sessionStopped.addEventListener((s, e) -> {
                    System.out.println("\nSession stopped event.");
                });
    
                // Starts continuous recognition. Uses StopContinuousRecognitionAsync() to stop recognition.
                System.out.println("Say something...");
                recognizer.startContinuousRecognitionAsync().get();
    
                System.out.println("Press any key to stop");
                new Scanner(System.in).nextLine();
    
                recognizer.stopContinuousRecognitionAsync().get();
            }
        }
    
        public static void main(String[] args) {
            try {
                translationWithMicrophoneAsync();
            } catch (Exception ex) {
                System.out.println("Unexpected exception: " + ex.getMessage());
                assert(false);
                System.exit(1);
            }
        }
    }
    
  4. Reemplace la cadena YourSubscriptionKey por la clave de suscripción.Replace the string YourSubscriptionKey with your subscription key.

  5. Reemplace la cadena YourServiceRegion por la región asociada con la suscripción (por ejemplo, westus para la suscripción de evaluación gratuita).Replace the string YourServiceRegion with the region associated with your subscription (for example, westus for the free trial subscription).

  6. Guarde los cambios en el proyecto.Save changes to the project.

Compilación y ejecución de la aplicaciónBuild and run the app

Presione F11, o seleccione Run (Ejecutar) > Debug (Depurar) .Press F11, or select Run > Debug.

La entrada de voz del micrófono se transcribe en alemán y se registra en la ventana de consola.The speech input from your microphone will be transcribed into German and logged in the console window. Presione "Entrar" para detener la captura de voz.Press "Enter" to stop capturing speech.

Captura de pantalla de la salida de la consola después de un reconocimiento correcto

Pasos siguientesNext steps

Se pueden encontrar ejemplos adicionales como, por ejemplo, leer voz desde un archivo de audio y proporcionar una salida del texto traducido como voz sintetizada, en GitHub.Additional samples, such as how to read speech from an audio file, and output translated text as synthesized speech, are available on GitHub.

Otras referenciasSee also