共用方式為


使用 Microsoft 音訊堆疊 (MAS)

語音 SDK 會整合 Microsoft 音訊堆疊 (MAS),讓任何應用程式或產品都可以在輸入音訊上使用其音訊處理功能。 如需概觀,請參閱音訊處理文件。

在本文中,您會了解如何搭配使用 Microsoft 音訊堆疊 (MAS) 與語音 SDK。

重要

在適用於 C++ 和 C# v1.33.0 和更新版本的語音 SDK 上,您必須在 Windows 上安裝 Microsoft.CognitiveServices.Speech.Extension.MAS 套件,才能使用 Microsoft 音訊堆疊,如果您使用 NuGet 安裝語音 SDK,則需在 Linux 上安裝該套件。

預設選項

此範例展示如何在裝置的預設麥克風輸入上,使用 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 與預先定義的麥克風幾何搭配。 在此範例中:

  • 增強功能選項 - 預設的增強功能會套用至輸入音訊串流。
  • 預設幾何 - 預設幾何代表線性雙麥克風陣列。
  • 音訊輸入裝置 - 音訊輸入裝置識別碼是 hw:0,1。 如需如何選取音訊輸入裝置的詳細資訊,請參閱作法:使用語音 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);

選取增強功能

此範例展示如何在輸入音訊上使用 MA 與自訂的增強功能集搭配。 根據預設,會啟用所有的增強功能,但有一些選項,可使用 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 音訊堆疊需要參考頻道 (也稱為回送頻道) 來執行回音消除。 參考頻道的來源會因平台而異:

  • Windows - 如果在建立 AudioProcessingOptions 時提供 SpeakerReferenceChannel::LastChannel 選項,語音 SDK 會自動收集參考頻道。
  • Linux - ALSA (進階 Linux 音效架構) 必須設定為提供參考音訊串流,作為所使用音訊輸入裝置的最後一個通道。 除了在建立 AudioProcessingOptions 時提供 SpeakerReferenceChannel::LastChannel 選項之外,還會設定 ALSA。

語言和平台支援

Language 平台 參考文件
C++ Windows、Linux C++ 文件
C# Windows、Linux C# 文件
Java Windows、Linux 文件