Usar o MAS (Microsoft Audio Stack)

O SDK de Fala integra o MAS (Microsoft Audio Stack), permitindo que qualquer aplicativo ou produto use os recursos de processamento de áudio no áudio de entrada. Confira a documentação de processamento de áudio para ter uma visão geral.

Neste artigo, você aprenderá a usar o MAS (Microsoft Audio Stack) com o SDK de Fala.

Importante

No SDK de Fala para C++ e C# v1.33.0 e mais recentes, o pacote Microsoft.CognitiveServices.Speech.Extension.MAS deve ser instalado para usar o Microsoft Audio Stack no Windows e no Linux se você instalar o SDK de Fala usando o NuGet.

Opções padrão

Este exemplo mostra como usar o MAS com todas as opções de aprimoramento padrão na entrada do microfone padrão do 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);

Geometria de microfone predefinida

Este exemplo mostra como usar o MAS com uma geometria de microfone predefinida em um dispositivo de entrada de áudio especificado. Neste exemplo:

  • Opções de aprimoramento – Os aprimoramentos padrão são aplicados no fluxo de áudio de entrada.
  • Geometria predefinida – A geometria predefinida representa uma matriz de dois microfones lineares.
  • Dispositivo de entrada de áudio – A ID do dispositivo de entrada de áudio é hw:0,1. Para obter mais informações sobre como selecionar um dispositivo de entrada de áudio, confira Instruções: selecionar um dispositivo de entrada de áudio com o SDK de Fala.
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);

Geometria de microfone personalizada

Este exemplo mostra como usar o MAS com uma geometria de microfone personalizada em um dispositivo de entrada de áudio especificado. Neste exemplo:

  • Opções de aprimoramento – Os aprimoramentos padrão são aplicados no fluxo de áudio de entrada.
  • Geometria personalizada – Uma geometria de microfone personalizada para uma matriz de sete microfones é fornecida por meio das coordenadas do microfone. As unidades das coordenadas são milímetros.
  • Entrada de áudio – A entrada de áudio é de um arquivo em que o áudio no arquivo é esperado de um dispositivo de entrada de áudio correspondente à geometria 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);

Selecionar aprimoramentos

Este exemplo mostra como usar o MAS com um conjunto personalizado de aprimoramentos no áudio de entrada. Por padrão, todos os aprimoramentos estão habilitados, mas há opções para desabilitar desreverberação, supressão de ruído, controle de ganho automático e cancelamento de eco individualmente usando AudioProcessingOptions.

Neste exemplo:

  • Opções de aprimoramento – O cancelamento de eco e a supressão de ruído estão desabilitados, enquanto todos os outros aprimoramentos permanecem habilitados.
  • Dispositivo de entrada de áudio – O dispositivo de entrada de áudio é o microfone padrão do 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);

Especificar ângulos de beamforming

Este exemplo mostra como usar o MAS com uma geometria de microfone personalizada e os ângulos de beamforming em um dispositivo de entrada de áudio especificado. Neste exemplo:

  • Opções de aprimoramento – Os aprimoramentos padrão são aplicados no fluxo de áudio de entrada.
  • Geometria personalizada – Uma geometria de microfone personalizada para uma matriz de quatro microfones é fornecida especificando as coordenadas do microfone. As unidades das coordenadas são milímetros.
  • Ângulos de beamforming – Os ângulos de beamforming são especificados para otimizar o áudio originado nesse intervalo. As unidades dos ângulos são graus.
  • Entrada de áudio – A entrada de áudio é de um fluxo por push, em que o áudio no fluxo é esperado em um dispositivo de entrada de áudio correspondente à geometria personalizada especificada.

No código de exemplo a seguir, o ângulo inicial é definido como 70 graus e o ângulo final é definido como 110 graus.

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 referência para cancelamento de eco

O Microsoft Audio Stack requer o canal de referência (também conhecido como canal de loopback) para executar o cancelamento de eco. A origem do canal de referência varia de acordo com a plataforma:

  • Windows – O canal de referência será coletado automaticamente pelo SDK de Fala, se a opção SpeakerReferenceChannel::LastChannel for fornecida ao criar o AudioProcessingOptions.
  • Linux – A ALSA (Advanced Linux Sound Architecture) precisa ser configurada para fornecer o fluxo de áudio de referência como o último canal para o dispositivo de entrada de áudio usado. A ALSA é configurada, além de fornecer a opção SpeakerReferenceChannel::LastChannel durante a criação de AudioProcessingOptions.

Suporte de idioma e plataforma

Linguagem Plataforma Documentos de Referência
C++ Windows, Linux Documentações do C++
C# Windows, Linux Documentações do C#
Java Windows, Linux Documentações do Java