private async void DownloadModel(string person) { MLTtsLocalModel model = new MLTtsLocalModel.Factory(person).Create(); MLModelDownloadStrategy request = new MLModelDownloadStrategy.Factory() .NeedWifi() .SetRegion(MLModelDownloadStrategy.RegionDrEurope) .Create(); Task downloadTask = manager.DownloadModelAsync(model, request, this); try { await downloadTask; if (downloadTask.IsCompleted) { mlTtsEngine.UpdateConfig(mlTtsConfigs); Log.Info(Tag, "downloadModel: " + model.ModelName + " success"); ShowToast("downloadModel Success"); Speak(mEditText.Text.ToString().Trim()); } else { Log.Info(Tag, "failed "); } } catch (Exception e) { Log.Error(Tag, "downloadModel failed: " + e.Message); ShowToast(e.Message); } }
public async void OnClick(View v) { switch (v.Id) { case Resource.Id.close: mEditText.Text = ""; break; case Resource.Id.btn_speak: string text = mEditText.Text.ToString(); //Check whether the offline model corresponding to the language has been downloaded. MLTtsLocalModel model = new MLTtsLocalModel.Factory(MLTtsConstants.TtsSpeakerOfflineEnUsMaleEagle).Create(); Task <bool> checkModelTask = manager.IsModelExistAsync(model); try { await checkModelTask; if (checkModelTask.IsCompleted && checkModelTask.Result == true) { Speak(text); } else { Log.Error(Tag, "isModelDownload== " + checkModelTask.Result); ShowToast("The offline model has not been downloaded!"); DownloadModel(MLTtsConstants.TtsSpeakerOfflineEnUsMaleEagle); } } catch (Exception e) { Log.Error(Tag, "downloadModel failed: " + e.Message); ShowToast(e.Message); } break; case Resource.Id.btn_download_model: DownloadModel(MLTtsConstants.TtsSpeakerOfflineEnUsMaleEagle); break; case Resource.Id.btn_stop_speak: mlTtsEngine.Stop(); break; default: break; } }