Usare Microsoft Audio Stack (MAS)

Speech SDK integra Microsoft Audio Stack (MAS), consentendo a qualsiasi applicazione o prodotto di applicare le specifiche funzionalità di elaborazione all'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 pacchetto Microsoft.CognitiveServices.Speech.Extension.MAS deve essere installato per usare Microsoft Audio Stack in Windows e in Linux se si installa l'SDK Voce con NuGet.

Opzioni predefinite

Questo esempio illustra come usare MAS con tutte le opzioni di miglioramento predefinite sull'input proveniente 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 dei microfoni preimpostata

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

  • Opzioni di miglioramento: al flusso audio di input vengono applicati i miglioramenti predefiniti.
  • Geometria preimpostata: la geometria preimpostata rappresenta un array lineare a 2 microfoni.
  • Dispositivo di input audio: l'ID del 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 dei microfoni personalizzata

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

  • Opzioni di miglioramento: al flusso audio di input vengono applicati i miglioramenti predefiniti.
  • Geometria personalizzata: tramite le coordinate dei microfoni viene fornita una geometria personalizzata per un array a 7 microfoni. Le coordinate sono espresse in millimetri.
  • Input audio: l'input audio proviene da un file, che dovrà contenere l'audio di un dispositivo di input 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 mostra come usare MAS con un set personalizzato di miglioramenti applicati all'audio di input. Per impostazione predefinita, tutti i miglioramenti sono abilitati, ma sono disponibili opzioni per disabilitare la riduzione dell'effetto riverbero, l'eliminazione del rumore, il controllo automatico del guadagno e l'annullamento dell'eco che è possibile applicare singolarmente usando AudioProcessingOptions.

In questo esempio:

  • Opzioni di miglioramento: la cancellazione dell'eco e la soppressione del rumore vengono disabilitati, mentre tutti gli altri miglioramenti rimangono abilitati.
  • Dispositivo di input audio: come dispositivo di input audio viene usato 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 gli angoli di beamforming

Questo esempio illustra come usare MAS con una geometria dei microfoni personalizzata e angoli di beamforming in un dispositivo di input audio specificato. In questo esempio:

  • Opzioni di miglioramento: al flusso audio di input vengono applicati i miglioramenti predefiniti.
  • Geometria personalizzata: tramite le coordinate dei microfoni viene fornita una geometria personalizzata per un array a 4 microfoni. Le coordinate sono espresse in millimetri.
  • Angoli di beamforming: gli angoli di beamforming vengono specificati per ottimizzare l'audio proveniente dall'intervallo definito. Gli angoli sono espressi in gradi.
  • Input audio: l'input audio proviene da un flusso di push, che dovrà contenere l'audio di un dispositivo di input 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 dell'eco

Microsoft Audio Stack richiede che il canale di riferimento (detto anche 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 durante la creazione di AudioProcessingOptions viene specificata l'opzione SpeakerReferenceChannel::LastChannel.
  • Linux: è necessario configurare l'architettura ALSA (Advanced Linux Sound Architecture) per fornire il flusso audio di riferimento come ultimo canale per il dispositivo di input audio in uso. L'architettura ALSA viene specificata in aggiunta all'opzione SpeakerReferenceChannel::LastChannel durante la 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 di Java