Compartir a través de


Uso de Microsoft Audio Stack (MAS)

El SDK de Voz integra Microsoft Audio Stack (MAS), lo que permite que cualquier aplicación o producto use sus funcionalidades de procesamiento de audio en el audio de entrada. Consulte la documentación de procesamiento de audio para obtener información general.

En este artículo, aprenderá a usar Microsoft Audio Stack (MAS) con el SDK de Voz.

Importante

En el SDK de Voz para C++ y C# v1.33.0 y versiones posteriores, el paquete Microsoft.CognitiveServices.Speech.Extension.MAS debe instalarse para usar Microsoft Audio Stack en Windows y en Linux si instala el SDK de Voz mediante NuGet.

Opciones predeterminadas

En este ejemplo se muestra cómo usar MAS con todas las opciones de mejora predeterminadas en la entrada del micrófono predeterminado del dispositivo.

var speechConfig = SpeechConfig.FromSubscription("YourSubscriptionKey", "YourServiceRegion");

var audioProcessingOptions = AudioProcessingOptions.Create(AudioProcessingConstants.AUDIO_INPUT_PROCESSING_ENABLE_DEFAULT);
var audioInput = AudioConfig.FromDefaultMicrophoneInput(audioProcessingOptions);

var recognizer = new SpeechRecognizer(speechConfig, audioInput);

Geometría de micrófono preestablecida

En este ejemplo se muestra cómo usar MAS con una geometría de micrófono predefinida en un dispositivo de entrada de audio especificado. En este ejemplo:

  • Opciones de mejora: las mejoras predeterminadas se aplicarán en la secuencia de audio de entrada.
  • Geometría preestablecida: la geometría preestablecida representa una matriz lineal de 2 micrófonos.
  • Dispositivo de entrada de audio: el id. de dispositivo de entrada de audio es hw:0,1. Para más información sobre cómo seleccionar un dispositivo de entrada de audio, consulte Cómo seleccionar un dispositivo de entrada de audio con el SDK de Voz.
var speechConfig = SpeechConfig.FromSubscription("YourSubscriptionKey", "YourServiceRegion");

var audioProcessingOptions = AudioProcessingOptions.Create(AudioProcessingConstants.AUDIO_INPUT_PROCESSING_ENABLE_DEFAULT, PresetMicrophoneArrayGeometry.Linear2);
var audioInput = AudioConfig.FromMicrophoneInput("hw:0,1", audioProcessingOptions);

var recognizer = new SpeechRecognizer(speechConfig, audioInput);

Geometría de micrófono personalizada

En este ejemplo se muestra cómo usar MAS con una geometría de micrófono personalizada en un dispositivo de entrada de audio especificado. En este ejemplo:

  • Opciones de mejora: las mejoras predeterminadas se aplicarán en la secuencia de audio de entrada.
  • Geometría personalizada: una geometría de micrófono personalizada para una matriz de 7 micrófonos se proporciona mediante las coordenadas del micrófono. Las unidades de las coordenadas son milímetros.
  • Entrada de audio: la entrada de audio es desde un archivo, en el que se espera capturar el audio del archivo desde un dispositivo de entrada de audio correspondiente a la geometría personalizada especificada.
var speechConfig = SpeechConfig.FromSubscription("YourSubscriptionKey", "YourServiceRegion");

MicrophoneCoordinates[] microphoneCoordinates = new MicrophoneCoordinates[7]
{
    new MicrophoneCoordinates(0, 0, 0),
    new MicrophoneCoordinates(40, 0, 0),
    new MicrophoneCoordinates(20, -35, 0),
    new MicrophoneCoordinates(-20, -35, 0),
    new MicrophoneCoordinates(-40, 0, 0),
    new MicrophoneCoordinates(-20, 35, 0),
    new MicrophoneCoordinates(20, 35, 0)
};
var microphoneArrayGeometry = new MicrophoneArrayGeometry(MicrophoneArrayType.Planar, microphoneCoordinates);
var audioProcessingOptions = AudioProcessingOptions.Create(AudioProcessingConstants.AUDIO_INPUT_PROCESSING_ENABLE_DEFAULT, microphoneArrayGeometry, SpeakerReferenceChannel.LastChannel);
var audioInput = AudioConfig.FromWavFileInput("katiesteve.wav", audioProcessingOptions);

var recognizer = new SpeechRecognizer(speechConfig, audioInput);

Selección de mejoras

En este ejemplo se muestra cómo usar MAS con un conjunto personalizado de mejoras en el audio de entrada. De forma predeterminada, todas las mejoras están habilitadas, pero hay opciones para deshabilitar la anulación de la reverberación, la supresión del ruido, el control automático de ganancia y la cancelación del eco individualmente mediante AudioProcessingOptions.

En este ejemplo:

  • Opciones de mejora: la cancelación del eco y la supresión del ruido están deshabilitadas, mientras todas las demás mejoras permanecen habilitadas.
  • Dispositivo de entrada de audio: el dispositivo de entrada de audio es el micrófono predeterminado del dispositivo.
var speechConfig = SpeechConfig.FromSubscription("YourSubscriptionKey", "YourServiceRegion");

var audioProcessingOptions = AudioProcessingOptions.Create(AudioProcessingConstants.AUDIO_INPUT_PROCESSING_DISABLE_ECHO_CANCELLATION | AudioProcessingConstants.AUDIO_INPUT_PROCESSING_DISABLE_NOISE_SUPPRESSION | AudioProcessingConstants.AUDIO_INPUT_PROCESSING_ENABLE_DEFAULT);
var audioInput = AudioConfig.FromDefaultMicrophoneInput(audioProcessingOptions);

var recognizer = new SpeechRecognizer(speechConfig, audioInput);

Especificación de ángulos de forma de haz

En este ejemplo se muestra cómo usar MAS con una geometría de micrófono personalizada y ángulos con forma de haz en un dispositivo de entrada de audio especificado. En este ejemplo:

  • Opciones de mejora: las mejoras predeterminadas se aplicarán en la secuencia de audio de entrada.
  • Geometría personalizada: una geometría de micrófono personalizada para una matriz de 4 micrófonos se proporciona especificando las coordenadas del micrófono. Las unidades de las coordenadas son milímetros.
  • Ángulos con forma de haz: los ángulos con forma de haz se especifican para optimizar el audio que se origina en ese intervalo. Las unidades para los ángulos son grados.
  • Entrada de audio: la entrada de audio es de una secuencia de inserción, en el que se espera capturar el audio de la secuencia desde un dispositivo de entrada de audio correspondiente a la geometría personalizada especificada.

En el código de ejemplo siguiente, el ángulo inicial se establece en 70 grados y el ángulo final en 110 grados.

var speechConfig = SpeechConfig.FromSubscription("YourSubscriptionKey", "YourServiceRegion");

MicrophoneCoordinates[] microphoneCoordinates = new MicrophoneCoordinates[4]
{
    new MicrophoneCoordinates(-60, 0, 0),
    new MicrophoneCoordinates(-20, 0, 0),
    new MicrophoneCoordinates(20, 0, 0),
    new MicrophoneCoordinates(60, 0, 0)
};
var microphoneArrayGeometry = new MicrophoneArrayGeometry(MicrophoneArrayType.Linear, 70, 110, microphoneCoordinates);
var audioProcessingOptions = AudioProcessingOptions.Create(AudioProcessingConstants.AUDIO_INPUT_PROCESSING_ENABLE_DEFAULT, microphoneArrayGeometry, SpeakerReferenceChannel.LastChannel);
var pushStream = AudioInputStream.CreatePushStream();
var audioInput = AudioConfig.FromStreamInput(pushStream, audioProcessingOptions);

var recognizer = new SpeechRecognizer(speechConfig, audioInput);

Canal de referencia para la cancelación del eco

Microsoft Audio Stack requiere que el canal de referencia (también conocido como canal de bucle invertido) realice la cancelación del eco. El origen del canal de referencia varía según la plataforma:

  • Windows: el SDK de Voz recopila automáticamente el canal de referencia si se proporciona la opción SpeakerReferenceChannel::LastChannel al crear AudioProcessingOptions.
  • Linux: ALSA (Advanced Linux Sound Architecture) deberá configurarse para proporcionar la secuencia de audio de referencia como último canal para el dispositivo de entrada de audio utilizado. Además de proporcionar la opción SpeakerReferenceChannel::LastChannel al crear AudioProcessingOptions, se configura ALSA.

Compatibilidad con lenguajes y plataformas

Idioma Plataforma Documentos de referencia
C++ Windows, Linux Documentos de C++
C# Windows, Linux Documentos de C#
Java Windows, Linux Documentos de Java