Использование 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 |