コード例 #1
0
ファイル: Program.cs プロジェクト: briandenicola/traduire
        static async Task Main(string[] args)
        {
            var file = new Uri("https://tra7db0afiles01.blob.core.windows.net/mp3files/01-_In_the_Beginning.mp3");
            AzureCognitiveServicesClient client = new AzureCognitiveServicesClient();

            (Transcription response, HttpStatusCode code) = await client.SubmitTranscriptionRequestAsync(file);

            if (code != HttpStatusCode.Created)
            {
                Console.WriteLine($"Transcription failed with status code of {code}");
                return;
            }

            Console.WriteLine($"Transcription submitted at {response.Self} with a status of {response.Status}");

            Transcription  currentStatus;
            HttpStatusCode currentStatusCode;

            do
            {
                Console.WriteLine($"Sleeping for 1 minute....");
                Thread.Sleep(10000);
                (currentStatus, currentStatusCode) = await client.CheckTranscriptionRequestAsync(new Uri(response.Self));

                if (currentStatusCode != HttpStatusCode.OK)
                {
                    Console.WriteLine($"Transcription Status Checked failed with status code of {currentStatusCode}");
                    return;
                }
                else
                {
                    Console.WriteLine($"Transcription Current status {currentStatus.Status}");
                }
            } while(currentStatus.Status != "Succeeded");

            Console.WriteLine($"Transcription succeeded. Downloading results from {currentStatus.Links.Files}");
            (TranscriptionResults result, HttpStatusCode currentStatusCode2) = await client.DownloadTranscriptionResultAsync(new Uri(currentStatus.Links.Files));

            var firstChannel = result.CombinedRecognizedPhrases.FirstOrDefault();

            Console.WriteLine($"Results:\n{firstChannel.Display}");
        }
コード例 #2
0
        public async Task <ActionResult> Transcribe(TradiureTranscriptionRequest request, CancellationToken cancellationToken)
        {
            try
            {
                _logger.LogInformation($"{request.TranscriptionId}. {request.BlobUri} was successfullly received by Dapr PubSub");
                state = await _client.GetStateEntryAsync <TraduireTranscription>(Components.StateStoreName, request.TranscriptionId.ToString());

                state.Value ??= new TraduireTranscription();

                (TranscriptionResults result, HttpStatusCode code) = await _cogsClient.DownloadTranscriptionResultAsync(new Uri(request.BlobUri));

                switch (code)
                {
                case HttpStatusCode.OK:
                    _logger.LogInformation($"{request.TranscriptionId}. Transcription from '{request.BlobUri}' was saved to state store ");
                    var firstChannel = result.CombinedRecognizedPhrases.FirstOrDefault();

                    await _serviceClient.PublishNotification(request.TranscriptionId.ToString(), state.Value.Status.ToString());
                    await UpdateStateRepository(TraduireTranscriptionStatus.Completed, firstChannel.Display);

                    _logger.LogInformation($"{request.TranscriptionId}. All working completed on request");
                    return(Ok(request.TranscriptionId));

                default:
                    _logger.LogInformation($"{request.TranscriptionId}. Transcription Failed for an unexpected reason. Added to Failed Queue for review");
                    var failedEvent = await UpdateStateRepository(TraduireTranscriptionStatus.Failed, code, request.BlobUri);

                    await _client.PublishEventAsync(Components.PubSubName, Topics.TranscriptionFailedTopicName, failedEvent, cancellationToken);

                    break;
                }
            }
            catch (Exception ex)
            {
                _logger.LogWarning($"Nuts. Something really bad happened processing {request.BlobUri} - {ex.Message}");
            }

            return(BadRequest());
        }