Inicio rápido: Traducción de voz con Speech SDK para .NET CoreQuickstart: Translate speech with the Speech SDK for .NET Core

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

En este inicio rápido, creará una sencilla aplicación de .NET Core 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 .NET Core 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. La aplicación está diseñada para ejecutarse en Windows de 64 bits y se ha creado con el paquete NuGet del SDK de Voz y Microsoft Visual Studio 2017 o una versión posterior.This application is designed to run on 64-bit Windows, and is built with the Speech SDK NuGet package and Microsoft Visual Studio 2017 or later.

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:

Creación de un proyecto de Visual StudioCreate a Visual Studio project

  1. Inicie Visual Studio 2019.Start Visual Studio 2019.

  2. Asegúrese de que la carga de trabajo de Desarrollo multiplataforma de .NET Core esté disponible.Make sure the .NET cross-platform development workload is available. Elija Herramientas > Get Tools and Features (Obtener herramientas y características) desde la barra de menús de Visual Studio para abrir el instalador de Visual Studio.Choose Tools > Get Tools and Features from the Visual Studio menu bar to open the Visual Studio installer. Si esta carga de trabajo ya está habilitada, cierre el cuadro de diálogo.If this workload is already enabled, close the dialog box.

    Captura de pantalla del instalador de Visual Studio, con la pestaña Workloads (Cargas de trabajo) resaltada

    En caso contrario, active la casilla junto a Desarrollo multiplataforma de .NET Core y elija Modificar en la esquina inferior derecha del cuadro de diálogo.Otherwise, select the box next to .NET Core cross-platform development, and select Modify at the lower right corner of the dialog box. La instalación de la nueva característica tardará un momento.Installation of the new feature will take a moment.

  3. Cree una nueva aplicación de consola de .NET Core en Visual C#.Create a new Visual C# .NET Core Console App. En el cuadro de diálogo Nuevo proyecto, en el panel izquierdo, expanda Instalado > Visual C# > .NET Core.In the New Project dialog box, from the left pane, expand Installed > Visual C# > .NET Core. Luego, seleccione Aplicación de consola (.NET Framework) .Then select Console App (.NET Core). Para el nombre del proyecto, escriba helloworld.For the project name, enter helloworld.

    Captura de pantalla del cuadro de diálogo Nuevo proyectoScreenshot of New Project dialog box

  4. Instale y haga referencia al paquete NuGet del SDK de Voz.Install and reference the Speech SDK NuGet package. En el Explorador de soluciones, haga clic con el botón derecho en la solución y seleccione Manage NuGet Packages for Solution (Administrar paquetes de NuGet para la solución).In Solution Explorer, right-click the solution and select Manage NuGet Packages for Solution.

    Captura de pantalla del Explorador de soluciones, con la opción Administrar paquetes NuGet para la solución resaltadaScreenshot of Solution Explorer, with Manage NuGet Packages for Solution highlighted

  5. En la esquina superior derecha, en el campo Origen del paquete, seleccione nuget.org. Busque el paquete Microsoft.CognitiveServices.Speech e instálelo en el proyecto helloworld.In the upper-right corner, in the Package Source field, select nuget.org. Search for the Microsoft.CognitiveServices.Speech package, and install it into the helloworld project.

    Captura de pantalla del cuadro de diálogo de administrar paquetes para la soluciónScreenshot of Manage Packages for Solution dialog box

  6. Acepte la licencia que aparece para comenzar la instalación del paquete de NuGet.Accept the displayed license to begin installation of the NuGet package.

    Captura de pantalla de cuadro de diálogo de aceptación de licenciaScreenshot of License Acceptance dialog box

Después de instalar el paquete, aparecerá una confirmación en la consola del Administrador de paquetes.After the package is installed, a confirmation appears in the Package Manager console.

Incorporación de código de ejemploAdd sample code

  1. Abra Program.cs y reemplace todo el código que contiene por lo siguiente.Open Program.cs, and replace all the code in it with the following.

    using System;
    using System.Threading.Tasks;
    using Microsoft.CognitiveServices.Speech;
    using Microsoft.CognitiveServices.Speech.Translation;
    
    namespace helloworld
    {
        class Program
        {
            public static async Task TranslationContinuousRecognitionAsync()
            {
                // 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").
                var config = SpeechTranslationConfig.FromSubscription("YourSubscriptionKey", "YourServiceRegion");
    
                // Sets source and target languages.
                string fromLanguage = "en-US";
                config.SpeechRecognitionLanguage = fromLanguage;
                config.AddTargetLanguage("de");
    
                // Sets voice name of synthesis output.
                const string GermanVoice = "de-DE-Hedda";
                config.VoiceName = GermanVoice;
                // Creates a translation recognizer using microphone as audio input.
                using (var recognizer = new TranslationRecognizer(config))
                {
                    // Subscribes to events.
                    recognizer.Recognizing += (s, e) =>
                    {
                        Console.WriteLine($"RECOGNIZING in '{fromLanguage}': Text={e.Result.Text}");
                        foreach (var element in e.Result.Translations)
                        {
                            Console.WriteLine($"    TRANSLATING into '{element.Key}': {element.Value}");
                        }
                    };
    
                    recognizer.Recognized += (s, e) =>
                    {
                        if (e.Result.Reason == ResultReason.TranslatedSpeech)
                        {
                            Console.WriteLine($"\nFinal result: Reason: {e.Result.Reason.ToString()}, recognized text in {fromLanguage}: {e.Result.Text}.");
                            foreach (var element in e.Result.Translations)
                            {
                                Console.WriteLine($"    TRANSLATING into '{element.Key}': {element.Value}");
                            }
                        }
                    };
    
                    recognizer.Synthesizing += (s, e) =>
                    {
                        var audio = e.Result.GetAudio();
                        Console.WriteLine(audio.Length != 0
                            ? $"AudioSize: {audio.Length}"
                            : $"AudioSize: {audio.Length} (end of synthesis data)");
                    };
    
                    recognizer.Canceled += (s, e) =>
                    {
                        Console.WriteLine($"\nRecognition canceled. Reason: {e.Reason}; ErrorDetails: {e.ErrorDetails}");
                    };
    
                    recognizer.SessionStarted += (s, e) =>
                    {
                        Console.WriteLine("\nSession started event.");
                    };
    
                    recognizer.SessionStopped += (s, e) =>
                    {
                        Console.WriteLine("\nSession stopped event.");
                    };
    
                    // Starts continuous recognition. Uses StopContinuousRecognitionAsync() to stop recognition.
                    Console.WriteLine("Say something...");
                    await recognizer.StartContinuousRecognitionAsync().ConfigureAwait(false);
    
                    do
                    {
                        Console.WriteLine("Press Enter to stop");
                    } while (Console.ReadKey().Key != ConsoleKey.Enter);
    
                    // Stops continuous recognition.
                    await recognizer.StopContinuousRecognitionAsync().ConfigureAwait(false);
                }
            }
    
            static void Main(string[] args)
            {
                TranslationContinuousRecognitionAsync().Wait();
            }
        }
    }
    
  2. En el mismo archivo, reemplace la cadena YourSubscriptionKey por la clave de suscripción.In the same file, replace the string YourSubscriptionKey with your subscription key.

  3. Además, reemplace la cadena YourServiceRegion por la región asociada a su suscripción (por ejemplo, westus para la suscripción de evaluación gratuita).Also replace the string YourServiceRegion with the region associated with your subscription (for example, westus for the free trial subscription).

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

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

  1. Compile la aplicación.Build the application. En la barra de menús, elija Compilar > Compilar solución.From the menu bar, choose Build > Build Solution. El código se debería compilar sin errores ahora.The code should compile without errors.

    Captura de pantalla de la aplicación de Visual Studio, con la opción Generar solución resaltadaScreenshot of Visual Studio application, with Build Solution option highlighted

  2. Inicie la aplicación.Start the application. En la barra de menús, elija Depurar > Iniciar depuración o bien presione F5.From the menu bar, choose Debug > Start Debugging, or press F5.

    Captura de pantalla de la aplicación de Visual Studio, con la opción Iniciar depuración resaltadaScreenshot of Visual Studio application, with Start Debugging option highlighted

  3. Aparece una ventana de consola que le pide decir algo.A console window appears, prompting you to say something. Diga una oración o frase en inglés.Speak an English phrase or sentence. Lo que diga se transmitirá al servicio Voz, se traducirá y se transcribirá como texto que aparecerá en la misma ventana.Your speech is transmitted to the Speech service, translated, and transcribed to text, which appears in the same window.

    Captura de pantalla de la salida de la consola después de una traducción correctaScreenshot of console output after successful translation

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