public async Task StartTranscriptionAsync(Message message) { if (message == null) { throw new ArgumentNullException(nameof(message)); } var busMessage = JsonConvert.DeserializeObject <ServiceBusMessage>(Encoding.UTF8.GetString(message.Body)); var audioFileName = StorageUtilities.GetFileNameFromUri(busMessage.Data.Url); var startDateTime = DateTime.UtcNow; // Check if language identification is required: var secondaryLocale = StartTranscriptionEnvironmentVariables.SecondaryLocale; if (!string.IsNullOrEmpty(secondaryLocale) && !secondaryLocale.Equals("None", StringComparison.OrdinalIgnoreCase) && !secondaryLocale.Equals(Locale, StringComparison.OrdinalIgnoreCase)) { secondaryLocale = secondaryLocale.Split('|')[0].Trim(); Logger.LogInformation($"Primary locale: {Locale}"); Logger.LogInformation($"Secondary locale: {secondaryLocale}"); var languageID = new LanguageIdentification(StartTranscriptionEnvironmentVariables.AzureSpeechServicesKey, StartTranscriptionEnvironmentVariables.AzureSpeechServicesRegion); var fileExtension = Path.GetExtension(audioFileName); var sasUrl = await StorageUtilities.CreateSASAsync(StartTranscriptionEnvironmentVariables.AzureWebJobsStorage, busMessage.Data.Url, Logger).ConfigureAwait(false); var byteArray = await StorageUtilities.DownloadFileFromSAS(sasUrl).ConfigureAwait(false); var identifiedLocale = await languageID.DetectLanguage(byteArray, fileExtension, Locale, secondaryLocale).ConfigureAwait(false); Logger.LogInformation($"Identified locale: {identifiedLocale}"); Locale = identifiedLocale; } await StartBatchTranscriptionJobAsync(new[] { message }, audioFileName, startDateTime).ConfigureAwait(false); }