Condividi tramite


Usare Microsoft Audio Stack (MAS)

Speech SDK integra Microsoft Audio Stack (MAS), consentendo a qualsiasi applicazione o prodotto di usare le funzionalità di elaborazione audio sull'audio di input. Per una panoramica, vedere la documentazione sull'elaborazione audio.

Questo articolo illustra come usare Microsoft Audio Stack (MAS) con Speech SDK.

Importante

In Speech SDK per C++ e C# v1.33.0 e versioni successive, il Microsoft.CognitiveServices.Speech.Extension.MAS pacchetto deve essere installato per usare Microsoft Audio Stack in Windows e in Linux se si installa Speech SDK con NuGet.

Opzioni predefinite

Questo esempio illustra come usare MAS con tutte le opzioni di miglioramento predefinite sull'input dal microfono predefinito 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);

Geometria del microfono preimpostato

Questo esempio illustra come usare MAS con una geometria microfono predefinita in un dispositivo di input audio specificato. In questo esempio:

  • Opzioni di miglioramento: i miglioramenti predefiniti vengono applicati al flusso audio di input.
  • Geometria preimpostata: la geometria predefinita rappresenta una matrice lineare a 2 microfoni.
  • Dispositivo di input audio: l'ID dispositivo di input audio è hw:0,1. Per altre informazioni su come selezionare un dispositivo di input audio, vedere Procedura: Selezionare un dispositivo di input audio con Speech SDK.
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 del microfono personalizzata

Questo esempio illustra come usare MAS con una geometria del microfono personalizzata in un dispositivo di input audio specificato. In questo esempio:

  • Opzioni di miglioramento: i miglioramenti predefiniti vengono applicati al flusso audio di input.
  • Geometria personalizzata: una geometria del microfono personalizzata per una matrice a 7 microfoni viene fornita tramite le coordinate del microfono. Le unità per le coordinate sono millimetri.
  • Input audio: l'input audio proviene da un file, in cui l'audio all'interno del file è previsto da un dispositivo di input audio corrispondente alla geometria personalizzata specificata.
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);

Selezionare i miglioramenti

Questo esempio illustra come usare MAS con un set personalizzato di miglioramenti sull'audio di input. Per impostazione predefinita, tutti i miglioramenti sono abilitati, ma sono disponibili opzioni per disabilitare la dereverberazione, l'eliminazione del rumore, il controllo automatico del guadagno e l'annullamento dell'eco singolarmente usando AudioProcessingOptions.

In questo esempio:

  • Opzioni di miglioramento: l'annullamento echo e l'eliminazione del rumore sono disabilitati, mentre tutti gli altri miglioramenti rimangono abilitati.
  • Dispositivo di input audio: il dispositivo di input audio è il microfono predefinito 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);

Specificare angoli di fascio

Questo esempio illustra come usare MAS con una geometria del microfono personalizzata e angoli di traveforming su un dispositivo di input audio specificato. In questo esempio:

  • Opzioni di miglioramento: i miglioramenti predefiniti vengono applicati al flusso audio di input.
  • Geometria personalizzata: viene fornita una geometria del microfono personalizzata per una matrice a 4 microfoni specificando le coordinate del microfono. Le unità per le coordinate sono millimetri.
  • Angoli di beamforming: gli angoli di trave vengono specificati per ottimizzare l'audio che ha origine in tale intervallo. Le unità per gli angoli sono gradi.
  • Input audio: l'input audio proviene da un flusso push, in cui l'audio all'interno del flusso è previsto da un dispositivo di input audio corrispondente alla geometria personalizzata specificata.

Nell'esempio di codice seguente l'angolo iniziale è impostato su 70 gradi e l'angolo finale è impostato su 110 gradi.

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);

Canale di riferimento per l'annullamento echo

Microsoft Audio Stack richiede che il canale di riferimento (noto anche come canale di loopback) esegua l'annullamento dell'eco. L'origine del canale di riferimento varia in base alla piattaforma:

  • Windows : il canale di riferimento viene raccolto automaticamente da Speech SDK se l'opzione viene fornita durante la SpeakerReferenceChannel::LastChannel creazione di AudioProcessingOptions.
  • Linux - ALSA (Advanced Linux Sound Architecture) deve essere configurato per fornire il flusso audio di riferimento come ultimo canale per il dispositivo di input audio usato. ALSA è configurato oltre a fornire l'opzione durante la SpeakerReferenceChannel::LastChannel creazione di AudioProcessingOptions.

Supporto di linguaggi e piattaforme

Lingua Piattaforma Documentazione di riferimento
C++ Windows, Linux Documentazione di C++
C# Windows, Linux Documentazione di C#
Java Windows, Linux Documentazione java

Passaggi successivi

Configurare l'ambiente di sviluppo