Partilhar via


Usar o Microsoft Audio Stack (MAS)

O Speech SDK integra o Microsoft Audio Stack (MAS), permitindo que qualquer aplicativo ou produto use seus recursos de processamento de áudio na entrada de áudio. Consulte a documentação de processamento de áudio para obter uma visão geral.

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

Importante

No SDK de Fala para C++ e C# v1.33.0 e mais recente, o Microsoft.CognitiveServices.Speech.Extension.MAS pacote deve ser instalado para usar o Microsoft Audio Stack no Windows e no Linux se você instalar o SDK de Fala usando 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 predefinida do microfone

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 linear de 2 microfones.
  • Dispositivo de entrada de áudio - O ID do dispositivo de entrada de áudio é hw:0,1. Para obter mais informações sobre como selecionar um dispositivo de entrada de áudio, consulte Como 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 personalizada do microfone

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 7 microfones é fornecida através das coordenadas do microfone. As unidades para coordenadas são milímetros.
  • Entrada de áudio - A entrada de áudio é de um arquivo, onde o áudio dentro do 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 melhorias

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

Neste exemplo:

  • Opções de aprimoramento - O cancelamento de eco e a supressão de ruído estão desativados, enquanto todos os outros aprimoramentos permanecem ativados.
  • 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 formação de feixe

Este exemplo mostra como usar o MAS com uma geometria de microfone personalizada e ângulos de formação de feixe 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 4 microfones é fornecida especificando as coordenadas do microfone. As unidades para coordenadas são milímetros.
  • Ângulos de formação de feixe - Os ângulos de formação de feixe são especificados para otimizar o áudio originado nessa faixa. As unidades para ângulos são graus.
  • Entrada de áudio - A entrada de áudio é de um fluxo push, onde o áudio dentro do fluxo é esperado de um dispositivo de entrada de áudio correspondente à geometria personalizada especificada.

No exemplo de código 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 fonte do canal de referência varia de acordo com a plataforma:

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

Suporte a idiomas e plataformas

Idioma Plataforma Documentos de referência
C++ Windows, Linux Documentos C++
C# Windows, Linux Documentos em C#
Java Windows, Linux Documentos Java