private ODMWorkspaceManager(string storageName, string storageKey, string dbEndpoint, string dbPrimaryKey, string dbName, string sourceSystem, string cvKey, string cvEndpoint, string cvTrainingKey, string cvTrainingEndpoint, string cvPredectionKey, string cvPredectionEndpoint) { cognitiveHelper = new CognitiveServicesHelper(cvKey, cvEndpoint, cvTrainingKey, cvTrainingEndpoint, cvPredectionKey, cvPredectionEndpoint); workspaceRepo = new CosmosDBRepository <ODMWorkspace>(dbEndpoint, dbPrimaryKey, dbName, sourceSystem); blobStorageName = storageName; blobStorageKey = storageKey; }
public async Task <byte[]> ConvertTextToSpeechAsync([NotNull] string text) { var accessToken = await CognitiveServicesHelper.FetchTokenAsync(_config.TokenEndPoint, _config.APIKey); var body = $"<speak version='1.0' xmlns='https://www.w3.org/2001/10/synthesis' xml:lang='{_config.Language}'>" + $"<voice name='Microsoft Server Speech Text to Speech Voice ({_config.Language}, {_config.VoiceName})'" + $@">{text}</voice></speak>"; using (var client = new HttpClient()) using (var request = new HttpRequestMessage(HttpMethod.Post, _config.TextToSpeechEndPoint)) { request.Content = new StringContent(body, Encoding.UTF8, "application/ssml+xml"); request.Headers.Add(@"Authorization", $@"Bearer {accessToken}"); request.Headers.Add(@"Connection", @"Keep-Alive"); request.Headers.Add(@"User-Agent", _config.AppName); request.Headers.Add(@"X-Microsoft-OutputFormat", _config.AudioFormat); using (var response = await client.SendAsync(request).ConfigureAwait(false)) { response.EnsureSuccessStatusCode(); using (var dataStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false)) using (var memStream = new MemoryStream()) { await dataStream.CopyToAsync(memStream).ConfigureAwait(false); memStream.Close(); return(memStream.ToArray()); } } } }
public async Task <byte[]> DownloadModelAsync(OfflineModelType modelType) { ValidateWorkspaceRereference(); var modelName = $"model.{CognitiveServicesHelper.GetExtensionForModelType((OfflineModelType)Enum.Parse(typeof(OfflineModelType), modelType.ToString()))}"; var modelData = await modelsBlobContainer.GetFileAsync(modelName); return(modelData); }
private async Task ExportTrainedCustomVisionIterationToODMWorkspace(Guid projectId, Iteration iteration) { int totalWaitingInSeconds = 0; foreach (var platform in iteration.ExportableTo) { if (platform == ExportPlatform.CoreML.ToString() || platform == ExportPlatform.TensorFlow.ToString() || platform == ExportPlatform.ONNX.ToString()) { var currentExport = await cognitiveHelper.CustomVisionTrainingClientInstance.ExportIterationAsync(projectId, iteration.Id, platform); bool waitForExport = true; while (waitForExport) { if (totalWaitingInSeconds > GlobalSettings.MaxTrainingWaitingTimeInSeconds) { throw new TimeoutException($"Exporting timeout as it took more than ({GlobalSettings.MaxTrainingWaitingTimeInSeconds}) seconds."); } Thread.Sleep(1000); totalWaitingInSeconds++; var updatedExports = await cognitiveHelper.CustomVisionTrainingClientInstance.GetExportsAsync(projectId, iteration.Id); currentExport = updatedExports.Where(e => e.Platform == platform).FirstOrDefault(); if (currentExport != null) { if (currentExport.Status == "Done") { waitForExport = false; } } } //modelsBlobContainer.CreateFile() WebClient wc = new WebClient(); var modelArchive = wc.DownloadData(currentExport.DownloadUri); ZipArchive zip = new ZipArchive(new MemoryStream(modelArchive)); var modelName = $"model.{CognitiveServicesHelper.GetExtensionForModelType((OfflineModelType)Enum.Parse(typeof(OfflineModelType), platform))}"; var modelFile = zip.GetEntry(modelName).Open(); //await modelsBlobContainer.CreateFileAsync($"{platform}.zip", modelArchive); await modelsBlobContainer.CreateFileAsync(modelName, modelFile); } } }
public string GetModelDownloadUri(OfflineModelType modelType) { var modelName = $"model.{CognitiveServicesHelper.GetExtensionForModelType((OfflineModelType)Enum.Parse(typeof(OfflineModelType), modelType.ToString()))}"; return(modelsBlobContainer.GetFileDownloadUrl(modelName)); }