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;
 }
示例#2
0
        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));
        }