Utiliser Microsoft Audio Stack (MAS)
Le Kit de développement logiciel (SDK) Speech intègre la pile audio Microsoft (MAS), ce qui permet à toute application ou tout produit d’utiliser ses fonctionnalités de traitement audio sur une entrée audio. Pour obtenir une vue d’ensemble, consultez la documentation relative au traitement audio.
Dans cet article, vous allez apprendre à utiliser Microsoft Audio Stack (MAS) avec le SDK Speech.
Important
Sur le Kit de développement logiciel (SDK) Speech pour C++ et C# v1.33.0 et versions plus récentes, le package Microsoft.CognitiveServices.Speech.Extension.MAS
doit être installé pour utiliser Microsoft Audio Stack sur Windows et sur Linux si vous utilisez le Kit de développement logiciel (SDK) Speech en tirant parti de NuGet.
Options par défaut
Cet exemple montre comment utiliser la MAS avec toutes les options d’amélioration par défaut de l’entrée du microphone par défaut de l’appareil.
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);
Prédéfinir la géométrie du micro
Cet exemple montre comment utiliser la MAS avec une géométrie de microphones prédéfinie sur un appareil d’entrée audio spécifié. Dans cet exemple :
- Options d’amélioration : les améliorations par défaut sont appliquées au flux audio d’entrée.
- Géométrie prédéfinie : la géométrie prédéfinie représente un réseau linéaire de deux micros.
- Appareil d’entrée audio : l’ID d’appareil d’entrée audio est
hw:0,1
. Pour plus d’informations sur la sélection d’un appareil d’entrée audio, consultez Guide pratique : Sélectionner un appareil d’entrée audio avec le Kit de développement logiciel (SDK) Speech.
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);
Personnaliser la géométrie du micro
Cet exemple montre comment utiliser la MAS avec une géométrie de microphones personnalisée sur un appareil d’entrée audio spécifié. Dans cet exemple :
- Options d’amélioration : les améliorations par défaut sont appliquées au flux audio d’entrée.
- Géométrie personnalisée : une géométrie de microphones personnalisée pour un réseau de sept micros est fournie via les coordonnées des microphones. Les unités pour les coordonnées sont les millimètres.
- Entrée audio : l’entrée audio provient d’un fichier dans lequel l’audio est censé provenir d’un appareil d’entrée audio correspondant à la géométrie personnalisée spécifiée.
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);
Sélectionner les améliorations
Cet exemple montre comment utiliser la MAS avec un ensemble personnalisé d’améliorations de l’audio en entrée. Par défaut, toutes les améliorations sont activées, mais il existe des options pour désactiver la suppression de la réverbération, la suppression du bruit, le contrôle du gain automatique et l’annulation de l’écho individuellement à l’aide des AudioProcessingOptions
.
Dans cet exemple :
- Options d’amélioration : l’annulation de l’écho et la suppression du bruit sont désactivées, tandis que toutes les autres améliorations sont activées.
- Appareil d’entrée audio : l’appareil d’entrée audio est le micro par défaut de l’appareil.
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);
Spécifier des angles de formation de faisceaux
Cet exemple montre comment utiliser la MAS avec une géométrie de microphones personnalisée et des angles de formation de faisceaux sur un appareil d’entrée audio spécifié. Dans cet exemple :
- Options d’amélioration : les améliorations par défaut sont appliquées au flux audio d’entrée.
- Géométrie personnalisée : une géométrie de microphones personnalisée pour un réseau de quatre micros est fournie en spécifiant les coordonnées des microphones. Les unités pour les coordonnées sont les millimètres.
- Angles de formation de faisceaux : des angles de formation de faisceaux sont spécifiés pour optimiser l’audio provenant de cette plage. Les unités pour les angles sont les degrés.
- Entrée audio : l’entrée audio provient d’un flux d’envoi (push) dans lequel l’audio est censé provenir d’un appareil d’entrée audio correspondant à la géométrie personnalisée spécifiée.
Dans l’exemple de code suivant, l’angle de début est défini sur 70 degrés et l’angle de fin sur 110 degrés.
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);
Canal de référence pour l’annulation de l’écho
La pile audio Microsoft requiert le canal de référence (également appelé canal de bouclage) pour effectuer l’annulation de l’écho. La source du canal de référence varie selon la plateforme :
- Windows : le canal de référence est automatiquement collecté par le Kit de développement logiciel (SDK) Speech si l’option
SpeakerReferenceChannel::LastChannel
est fournie lors de la création desAudioProcessingOptions
. - Linux : l’ALSA (Advanced Linux Sound Architecture) doit être configurée pour fournir le flux audio de référence en tant que dernier canal pour l’appareil d’entrée audio utilisé. ALSA est configuré en plus pour fournir l’option
SpeakerReferenceChannel::LastChannel
lors de la création desAudioProcessingOptions
.
Prise en charge de langues et de plateformes
Langage | Plateforme | Documents de référence |
---|---|---|
C++ | Windows, Linux | Documentation C++ |
C# | Windows, Linux | Documentation C# |
Java | Windows, Linux | Documentation Java |