Använda Microsoft Audio Stack (MAS)
Speech SDK integrerar Microsoft Audio Stack (MAS), vilket gör att alla program eller produkter kan använda sina ljudbearbetningsfunktioner på indataljud. En översikt finns i dokumentationen för ljudbearbetning .
I den här artikeln får du lära dig hur du använder Microsoft Audio Stack (MAS) med Speech SDK.
Viktigt!
På Speech SDK för C++ och C# v1.33.0 och senare Microsoft.CognitiveServices.Speech.Extension.MAS
måste paketet installeras för att använda Microsoft Audio Stack i Windows och i Linux om du installerar Speech SDK med NuGet.
Standardalternativ
Det här exemplet visar hur du använder MAS med alla standardförbättringsalternativ vid indata från enhetens standardmikrofon.
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);
Förinställd mikrofongeometri
Det här exemplet visar hur du använder MAS med en fördefinierad mikrofongeometri på en angiven ljudinmatningsenhet. I det här exemplet:
- Förbättringsalternativ – Standardförbättringarna tillämpas på indataljudströmmen.
- Förinställd geometri – Den förinställda geometrin representerar en linjär matris med 2 mikrofoner.
- Ljudinmatningsenhet – enhetens ID för ljudinmatning är
hw:0,1
. Mer information om hur du väljer en ljudinmatningsenhet finns i Så här väljer du en ljudinmatningsenhet med 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);
Anpassad mikrofongeometri
Det här exemplet visar hur du använder MAS med en anpassad mikrofongeometri på en angiven ljudinmatningsenhet. I det här exemplet:
- Förbättringsalternativ – Standardförbättringarna tillämpas på indataljudströmmen.
- Anpassad geometri – En anpassad mikrofongeometri för en 7-mikrofonmatris tillhandahålls via mikrofonkoordinaterna. Koordinaternas enheter är millimeter.
- Ljudinmatning – Ljudinmatningen kommer från en fil, där ljudet i filen förväntas från en ljudinmatningsenhet som motsvarar den anpassade geometri som angetts.
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);
Välj förbättringar
Det här exemplet visar hur du använder MAS med en anpassad uppsättning förbättringar av indataljudet. Som standard är alla förbättringar aktiverade, men det finns alternativ för att inaktivera dereverberation, brusdämpning, automatisk kontroll och ekoreducering individuellt med hjälp AudioProcessingOptions
av .
I det här exemplet:
- Förbättringsalternativ – Ekoreducering och brusreducering är inaktiverade, medan alla andra förbättringar förblir aktiverade.
- Ljudinmatningsenhet – Enheten för ljudinmatning är enhetens standardmikrofon.
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);
Ange strålformningsvinklar
Det här exemplet visar hur du använder MAS med en anpassad mikrofongeometri och strålformningsvinklar på en angiven ljudinmatningsenhet. I det här exemplet:
- Förbättringsalternativ – Standardförbättringarna tillämpas på indataljudströmmen.
- Anpassad geometri – En anpassad mikrofongeometri för en matris med 4 mikrofoner tillhandahålls genom att mikrofonkoordinaterna anges. Koordinaternas enheter är millimeter.
- Strålformningsvinklar – Strålformningsvinklar anges för att optimera för ljud som kommer från det området. Vinklarnas enheter är grader.
- Ljudinmatning – Ljudinmatningen kommer från en push-ström, där ljudet i strömmen förväntas från en ljudinmatningsenhet som motsvarar den angivna anpassade geometrin.
I följande kodexempel anges startvinkeln till 70 grader och slutvinkeln är inställd på 110 grader.
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);
Referenskanal för ekoreducering
Microsoft Audio Stack kräver att referenskanalen (även kallad loopback-kanal) utför ekoreducering. Referenskanalens källa varierar beroende på plattform:
- Windows – Referenskanalen samlas automatiskt in av Speech SDK om alternativet
SpeakerReferenceChannel::LastChannel
anges när du skaparAudioProcessingOptions
. - Linux – ALSA (Advanced Linux Sound Architecture) måste konfigureras för att tillhandahålla referensljudströmmen som den sista kanalen för den ljudindataenhet som används. ALSA konfigureras förutom att tillhandahålla alternativet
SpeakerReferenceChannel::LastChannel
när du skaparAudioProcessingOptions
.
Stöd för språk och plattform
Språk | Plattform | Referensdokument |
---|---|---|
C++ | Windows, Linux | C++-dokument |
C# | Windows, Linux | C#-dokument |
Java | Windows, Linux | Java-dokument |