Использование Microsoft Audio Stack (MAS)

Пакет SDK для службы "Речь" интегрирует Microsoft Audio Stack (MAS), позволяя любому приложению или продукту применить возможности обработки звука к входным аудиоданным. Общие сведения приведены в документации по обработке звука.

Из этой статьи вы узнаете, как использовать Microsoft Audio Stack (MAS) с пакетом SDK для службы "Речь".

Важно!

В пакете SDK службы "Речь" для C++ и C# версии 1.33.0 и более поздней версии Microsoft.CognitiveServices.Speech.Extension.MAS необходимо установить пакет для использования Microsoft Audio Stack в Windows и linux, если установить пакет SDK службы "Речь" с помощью NuGet.

Параметры по умолчанию

В этом примере показано, как использовать 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);

Выбор расширений

В этом примере показано, как использовать 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. Опорный канал автоматически собирается пакетом SDK службы "Речь", если параметр SpeakerReferenceChannel::LastChannel указан при создании AudioProcessingOptions.
  • Linux. Должна быть настроена расширенная звуковая архитектура Linux (ALSA) для предоставления опорного звукового потока в качестве последнего канала для используемого входного аудиоустройства. ALSA настраивается в дополнение к SpeakerReferenceChannel::LastChannelпараметру при созданииAudioProcessingOptions.

Поддержка языков и платформ.

Язык Платформа Справочная документация
C++ Windows, Linux Документация C++
C# Windows, Linux Документация C#
Java Windows, Linux Документация Java

Следующие шаги

Настройка среды разработки