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 AudioProcessingOptions
o .
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 criarAudioProcessingOptions
o . - 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 criarAudioProcessingOptions
.
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 |