Freigeben über


Verwenden von Microsoft Audio Stack (MAS)

Das Speech SDK integriert Microsoft Audio Stack (MAS), sodass jede Anwendung oder jedes Produkt seine Audioverarbeitungsfunktionen auf Eingabeaudiodaten anwenden kann. Eine Übersicht finden Sie in der Dokumentation zur Audioverarbeitung.

In diesem Artikel erfahren Sie, wie Sie den Microsoft Audio Stack (MAS) in Kombination mit dem Speech SDK verwenden.

Wichtig

Im Speech SDK für C++ und C# v1.33.0 und höher muss das Microsoft.CognitiveServices.Speech.Extension.MAS Paket installiert werden, um den Microsoft Audio Stack unter Windows und unter Linux zu verwenden, wenn Sie das Speech SDK mit NuGet installieren.

Standardoptionen

In diesem Beispiel wird gezeigt, wie Sie MAS mit allen Standarderweiterungsoptionen bei der Eingabe über das Standardmikrofon des Geräts verwenden.

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

Voreingestellte Mikrofongeometrie

In diesem Beispiel wird gezeigt, wie Sie MAS mit einer voreingestellten Mikrofongeometrie auf einem angegebenen Audioeingabegerät verwenden. In diesem Beispiel:

  • Erweiterungsoptionen: Die Standarderweiterungen werden auf den Eingabeaudiostream angewendet.
  • Voreingestellte Geometrie: Die voreingestellte Geometrie stellt ein lineares 2-Mikrofon-Array dar.
  • Audioeingabegerät: Die ID des Audioeingabegeräts ist hw:0,1. Weitere Informationen zum Auswählen eines Audioeingabegeräts finden Sie unter Auswählen eines Audioeingabegeräts mit dem 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);

Benutzerdefinierte Mikrofongeometrie

In diesem Beispiel wird gezeigt, wie Sie MAS mit einer benutzerdefinierten Mikrofongeometrie auf einem angegebenen Audioeingabegerät verwenden. In diesem Beispiel:

  • Erweiterungsoptionen: Die Standarderweiterungen werden auf den Eingabeaudiostream angewendet.
  • Benutzerdefinierte Geometrie: Eine benutzerdefinierte Mikrofongeometrie für ein 7-Mikrofon-Array wird in Form der Mikrofonkoordinaten angegeben. Die Koordinaten werden in der Einheit Millimeter angegeben.
  • Audioeingabe: Die Audioeingabe erfolgt aus einer Datei, deren Audiodaten von einem Audioeingabegerät erfasst wurden, das der angegebenen benutzerdefinierten Geometrie entspricht.
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);

Auswählen von Erweiterungen

In diesem Beispiel wird gezeigt, wie Sie MAS mit einem benutzerdefinierten Set an Erweiterungen auf die Eingabeaudiodaten anwenden. Standardmäßig sind alle Erweiterungen aktiviert; allerdings gibt es auch Optionen zum Deaktivieren der Funktionen Hallunterdrückung, Rauschunterdrückung, automatische Verstärkungsregelung und Echounterdrückung; die Deaktivierung erfolgt jeweils separat mit AudioProcessingOptions.

In diesem Beispiel:

  • Erweiterungsoptionen: Echounterdrückung und Rauschunterdrückung werden deaktiviert, während alle anderen Erweiterungen aktiviert bleiben.
  • Audioeingabegerät: Das Audioeingabegerät ist das Standardmikrofon des Geräts.
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);

Angeben von Strahlformungswinkeln

In diesem Beispiel wird gezeigt, wie Sie MAS mit einer benutzerdefinierten Mikrofongeometrie und benutzerdefinierten Strahlformungswinkeln auf einem angegebenen Audioeingabegerät verwenden. In diesem Beispiel:

  • Erweiterungsoptionen: Die Standarderweiterungen werden auf den Eingabeaudiostream angewendet.
  • Benutzerdefinierte Geometrie: Eine benutzerdefinierte Mikrofongeometrie für ein 4-Mikrofon-Array wird durch Angabe der Mikrofonkoordinaten bereitgestellt. Die Koordinaten werden in der Einheit Millimeter angegeben.
  • Strahlformungswinkel: Strahlformungswinkel werden angegeben, um die Audiodaten aus diesem Bereich zu optimieren. Die Winkel werden in der Einheit Grad angegeben.
  • Audioeingabe: Die Audioeingabe erfolgt aus einem Pushstream, wobei die Audiodaten innerhalb des Streams von einem Audioeingabegerät erfasst werden, das der angegebenen benutzerdefinierten Geometrie entspricht.

Im folgenden Beispielcode wird der Startwinkel auf 70 Grad und der Endwinkel auf 110 Grad festgelegt.

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

Referenzkanal für Echounterdrückung

Microsoft Audio Stack benötigt den Referenzkanal (auch als Loopbackkanal bezeichnet), um eine Echounterdrückung durchzuführen. Die Quelle des Referenzkanals variiert je nach Plattform:

  • Windows: Der Referenzkanal wird automatisch vom Speech SDK erfasst, wenn die Option SpeakerReferenceChannel::LastChannel beim Erstellen von AudioProcessingOptions angegeben wird.
  • Linux: ALSA (Advanced Linux Sound Architecture) muss so konfiguriert werden, dass der Referenzaudiodatenstrom als letzter Kanal für das zu verwendende Audioeingabegerät zur Verfügung steht. ALSA ist zusätzlich zur Angabe der Option SpeakerReferenceChannel::LastChannel beim Erstellen von AudioProcessingOptions erforderlich.

Sprach- und Plattformunterstützung

Sprache Plattform Referenz
C++ Windows, Linux C++ Dokumentation
C# Windows, Linux C# Dokumentation
Java Windows, Linux Java Dokumentation