public async Task RecognizeSpeechAsync(CNMAudioItem cnmAudioItem)
        {
            var stopRecognition = new TaskCompletionSource <int>();

            var factory = _speechFactory ?? SpeechFactory.FromSubscription("77623f52633c426890a6d2bb11116c8b", "westus");

            using (var recognizer = factory.CreateSpeechRecognizerWithFileInput(cnmAudioItem.Filename, "es-ES"))
            {
                recognizer.FinalResultReceived += (s, e) =>
                {
                    if (e.Result.RecognitionStatus == RecognitionStatus.Recognized)
                    {
                        cnmAudioItem.AppendTextLine(e.Result.Text);
                    }
                };
                recognizer.OnSessionEvent += (s, e) =>
                {
                    if (e.EventType == SessionEventType.SessionStoppedEvent)
                    {
                        cnmAudioItem.IsBusy = false;
                        stopRecognition.TrySetResult(0);
                    }
                };
                recognizer.RecognitionErrorRaised += (s, e) =>
                {
                    Console.WriteLine(e.FailureReason);
                };

                await recognizer.StartContinuousRecognitionAsync().ConfigureAwait(false);

                await stopRecognition.Task.ConfigureAwait(false);

                await recognizer.StopContinuousRecognitionAsync().ConfigureAwait(false);
            }
        }