// Refresh phrase data public static void RefreshVoiceData(TTSService service, TTSPreloadVoiceData voiceData, TTSDiskCacheSettings cacheSettings, ref string log) { // Get voice settings if (service == null) { log += "\n-No TTS service found"; return; } // No voice data if (voiceData == null) { log += "\n-No voice data provided"; return; } // Get voice TTSVoiceSettings voiceSettings = service.GetPresetVoiceSettings(voiceData.presetVoiceID); if (voiceSettings == null) { log += "\n-Missing Voice Setting: " + voiceData.presetVoiceID; return; } // Generate if (cacheSettings == null) { cacheSettings = new TTSDiskCacheSettings() { DiskCacheLocation = TTSDiskCacheLocation.Preload }; } // Iterate phrases for (int p = 0; p < voiceData.phrases.Length; p++) { RefreshPhraseData(service, cacheSettings, voiceSettings, voiceData.phrases[p]); } }
// Perform iterate private static IEnumerator PerformIteratePhrases(TTSService service, TTSPreloadData preloadData, TTSPreloadIterateDelegate onIterate, Action <float> onProgress, Action <string> onComplete) { // Get cache settings TTSDiskCacheSettings cacheSettings = new TTSDiskCacheSettings() { DiskCacheLocation = TTSDiskCacheLocation.Preload }; // Get total phrases int phraseTotal = 0; foreach (var voice in preloadData.voices) { if (voice.phrases == null) { continue; } foreach (var phrase in voice.phrases) { phraseTotal++; } } // Begin onProgress?.Invoke(0f); // Iterate int phraseCount = 0; float phraseInc = 1f / (float)phraseTotal; string log = string.Empty; for (int v = 0; v < preloadData.voices.Length; v++) { // Get voice data TTSPreloadVoiceData voiceData = preloadData.voices[v]; // Get voice TTSVoiceSettings voiceSettings = service.GetPresetVoiceSettings(voiceData.presetVoiceID); if (voiceSettings == null) { log += "\n-Missing Voice Setting: " + voiceData.presetVoiceID; phraseCount += voiceData.phrases.Length; continue; } // Iterate phrases for (int p = 0; p < voiceData.phrases.Length; p++) { // Iterate progress float progress = (float)phraseCount / (float)phraseTotal; onProgress?.Invoke(progress); phraseCount++; // Iterate yield return(onIterate(service, cacheSettings, voiceSettings, voiceData.phrases[p], (p2) => onProgress?.Invoke(progress + p2 * phraseInc), (l) => log += l)); } } // Complete onProgress?.Invoke(1f); onComplete?.Invoke(log); }