❔ Any way to optimize this? Task.WhenAll

This takes anywhere from 6-14 seconds, Any way to make it faster?
   private async Task HandlePhaseAudioFileStorage()
    {
        var tasks = new List<Task>();
        foreach (var phase in _currentLesson.Phases)
        {
            // Generate default bot audio if not provided
            if (phase.BotAudio is null)
            {
                phase.BotAudio = await _googleApiManager.TextToSpeechAsync(phase.BotText, _srcLanguageCode);
                var defaultBotBlobKey = _azureBlobStorageManager.GenerateBlobKey();
                phase.DefaultPhaseBlobFileId = defaultBotBlobKey;
                var botAudioWithTranslation = new AudioAndTranslation(phase.BotAudio, phase.BotText);
                tasks.Add(_azureBlobStorageManager.SaveServerGeneratedFilesBytesAsync(defaultBotBlobKey,
                    botAudioWithTranslation));
            }
            if (phase.BotResponseTextOnSuccess is not null)
            {
                var successBotBlobKey = _azureBlobStorageManager.GenerateBlobKey();
                phase.SuccessPhaseBlobFileId = successBotBlobKey;

                var botSuccessAudioTask = phase.BotResponseAudioOnSuccess is not null
                    ? Task.FromResult(phase.BotResponseAudioOnSuccess)
                    : _googleApiManager.TextToSpeechAsync(phase.BotResponseTextOnSuccess, _srcLanguageCode);

                tasks.Add(botSuccessAudioTask.ContinueWith(async (botSuccessAudioTaskResult) =>
                {
                    var botSuccessAudio = await botSuccessAudioTaskResult;
                    var botSuccessAudioWithTranslation =
                        new AudioAndTranslation(botSuccessAudio, phase.BotResponseTextOnSuccess);
                    await _azureBlobStorageManager.SaveServerGeneratedFilesBytesAsync(successBotBlobKey,
                        botSuccessAudioWithTranslation);
                }));
            }

            }
        }

        await Task.WhenAll(tasks);
    }
Was this page helpful?