Microsoft Audio Stack (MAS) を使用する

Speech SDK は Microsoft Audio Stack (MAS) を統合して、任意のアプリケーションまたは製品が入力オーディオでオーディオ処理機能を使用できるようにします。 概要については、「オーディオ処理」のドキュメントを参照してください。

この記事では、Speech SDK を使用して Microsoft Audio Stack (MAS) を活用する方法について学習します。

重要

C++ および C# v1.33.0 以降の Speech SDK では、Windows で、そして NuGet を使用して Speech SDK をインストールする場合は Linux で Microsoft Audio Stack を使用するには Microsoft.CognitiveServices.Speech.Extension.MAS パッケージをインストールする必要があります。

既定のオプション

このサンプルは、デバイスの既定のマイクからの入力に対し、すべての既定の強調機能オプションを使用して MAS を使用する方法を示しています。

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

マイクのジオメトリのプリセット

このサンプルは、指定されたオーディオ入力デバイスに対し、事前定義されたマイク ジオメトリを使用して MAS を使用する方法を示しています。 次の点に注意してください。

  • 強調機能オプション - 既定の強調機能が入力オーディオ ストリームに適用されます。
  • プリセット ジオメトリ - プリセット ジオメトリは、線形 2 マイク アレイを表します。
  • オーディオ入力デバイス -オーディオ入力デバイス ID は hw:0,1 です。 オーディオ入力デバイスを選択する方法の詳細については、「方法: 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);

カスタムのマイクのジオメトリ

このサンプルは、指定されたオーディオ入力デバイスに対し、カスタム マイク ジオメトリを使用して MAS を使用する方法を示しています。 次の点に注意してください。

  • 強調機能オプション - 既定の強調機能が入力オーディオ ストリームに適用されます。
  • カスタム ジオメトリ - 7 マイク アレイのカスタム マイク ジオメトリは、マイクの座標を指定することで提供されます。 座標の単位はミリメートルです。
  • オーディオ入力 - オーディオ入力はファイルからの入力です。ファイル内のオーディオは、指定されたカスタム ジオメトリに対応するオーディオ入力デバイスからのものである必要があります。
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);

拡張機能の選択

このサンプルは、入力オーディオに対し、強調機能のカスタム セットを使用して MAS を使用する方法を示しています。 既定ではすべての強調機能が有効になっていますが、AudioProcessingOptions を使用して、残響除去、ノイズ抑制、自動ゲイン制御、およびエコー キャンセルを個別に無効にするオプションがあります。

次の点に注意してください。

  • 拡張機能オプション - エコー キャンセルとノイズ抑制は無効になりますが、他のすべての拡張機能は有効のままです。
  • オーディオ入力デバイス - オーディオ入力デバイスは、デバイスの既定のマイクです。
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);

光線の形成角度の指定

このサンプルは、指定されたオーディオ入力デバイスに対し、カスタム マイク ジオメトリとビームフォーミング角度を使用して MAS を使用する方法を示しています。 次の点に注意してください。

  • 強調機能オプション - 既定の強調機能が入力オーディオ ストリームに適用されます。
  • カスタム ジオメトリ - 4 マイク アレイのカスタム マイク ジオメトリは、マイク座標を指定することで提供されます。 座標の単位はミリメートルです。
  • ビームフォーミング角度 - ビームフォーミング角度は、その範囲で発生するオーディオを最適化するために指定します。 角度の単位は度です。
  • オーディオ入力 - オーディオ入力はプッシュ ストリームからの入力です。ストリーム内のオーディオは、指定されたカスタム ジオメトリに対応するオーディオ入力デバイスからのものである必要があります。

次のサンプル コードでは、開始角度が 70 度に設定され、終了角度が 110 度に設定されています。

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

エコー キャンセルの参照チャネル

Microsoft Audio Stack でエコー キャンセルを実行するには、参照チャネル (ループバック チャネルとも呼ばれます) が必要になります。 参照チャネルのソースは、プラットフォームによって異なります。

  • Windows - SpeakerReferenceChannel::LastChannel 作成時にオプションが指定されている場合、参照チャネルは Speech SDK によって自動的に収集され AudioProcessingOptions ます。
  • Linux - ALSA (Advanced Linux Sound Architecture) は、参照オーディオ ストリームを、使用されるオーディオ入力デバイスの最後のチャネルとして提供するように構成する必要があります。 ALSA は、AudioProcessingOptions の作成時の SpeakerReferenceChannel::LastChannel オプションの指定に加えて構成します。

言語とプラットフォームのサポート

言語 プラットフォーム リファレンス ドキュメント
C++ Windows、Linux C++ のドキュメント
C# Windows、Linux C# のドキュメント
Java Windows、Linux Java のドキュメント