コード例 #1
0
ファイル: Function.cs プロジェクト: rycx/AWSTranscribe
        private async Task ProcessTranscribe(string bucket, string key)
        {
            Settings settings = new Settings();

            settings.ShowSpeakerLabels = true;
            settings.MaxSpeakerLabels  = 2;
            settings.VocabularyName    = "Vocab";

            Media media = new Media();

            media.MediaFileUri = string.Format("https://s3.us-east-2.amazonaws.com/{0}/{1}", bucket, key);
            CancellationToken token = new CancellationToken();


            StartTranscriptionJobRequest startRequest = new StartTranscriptionJobRequest();

            startRequest.LanguageCode         = LanguageCode.EnUS;
            startRequest.Settings             = settings;
            startRequest.Media                = media;
            startRequest.MediaFormat          = MediaFormat.Mp3;
            startRequest.TranscriptionJobName = Guid.NewGuid().ToString();

            StartTranscriptionJobResponse response = await transClient.StartTranscriptionJobAsync(startRequest, token);


            GetTranscriptionJobRequest request = new GetTranscriptionJobRequest();

            request.TranscriptionJobName = startRequest.TranscriptionJobName;

            bool isComplete = false;

            while (!isComplete)
            {
                GetTranscriptionJobResponse response2 = await transClient.GetTranscriptionJobAsync(request);

                if (response2.TranscriptionJob.TranscriptionJobStatus == TranscriptionJobStatus.COMPLETED)
                {
                    //we need to DL the file to S3
                    isComplete = true;

                    WriteFileToS3(response2.TranscriptionJob.Transcript.TranscriptFileUri, startRequest.TranscriptionJobName);
                }
                else if (response2.TranscriptionJob.TranscriptionJobStatus == TranscriptionJobStatus.FAILED)
                {
                    isComplete = true;
                    //need to log the error.
                }
                else
                {
                    System.Threading.Thread.Sleep(5000);//wait 5 seconds and check again
                    //not done yet
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// Unmarshaller the response from the service to the response class.
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public override AmazonWebServiceResponse Unmarshall(JsonUnmarshallerContext context)
        {
            StartTranscriptionJobResponse response = new StartTranscriptionJobResponse();

            context.Read();
            int targetDepth = context.CurrentDepth;

            while (context.ReadAtDepth(targetDepth))
            {
                if (context.TestExpression("TranscriptionJob", targetDepth))
                {
                    var unmarshaller = TranscriptionJobUnmarshaller.Instance;
                    response.TranscriptionJob = unmarshaller.Unmarshall(context);
                    continue;
                }
            }

            return(response);
        }
コード例 #3
0
        public string GetTranscriptURL()
        {
            string result = string.Empty;

            try
            {
                AmazonTranscribeServiceClient client = new AmazonTranscribeServiceClient(ConfigurationManager.AppSettings["AmazonAccessKey"],
                                                                                         ConfigurationManager.AppSettings["AmazonSecretAccessKey"],
                                                                                         RegionEndpoint.EUWest1);

                if (client != null)
                {
                    string url = String.Format(ConfigurationManager.AppSettings["AmazonBucketURL"],
                                               ConfigurationManager.AppSettings["AmazonBucketName"],
                                               keyName);

                    Media media = new Media();
                    StartTranscriptionJobResponse transcriptionJobResponse = null;
                    GetTranscriptionJobResponse   checkJob = null;

                    media.MediaFileUri = url;



                    StartTranscriptionJobRequest transcriptionJobRequest = new StartTranscriptionJobRequest();
                    string name = Guid.NewGuid().ToString();
                    transcriptionJobRequest.TranscriptionJobName = name;
                    transcriptionJobRequest.MediaFormat          = "wav";
                    transcriptionJobRequest.Media        = media;
                    transcriptionJobRequest.LanguageCode = "en-US";

                    GetTranscriptionJobRequest getTranscriptionJobRequest = new GetTranscriptionJobRequest();
                    getTranscriptionJobRequest.TranscriptionJobName = name;

                    bool finished = false;
                    transcriptionJobResponse = client.StartTranscriptionJob(transcriptionJobRequest);

                    while (!finished)
                    {
                        checkJob = client.GetTranscriptionJob(getTranscriptionJobRequest);

                        if (checkJob != null)
                        {
                            if (!checkJob.TranscriptionJob.TranscriptionJobStatus.Value.Contains("IN_PROGRESS"))
                            {
                                finished = true;
                            }

                            Thread.Sleep(1000);
                        }
                    }


                    result = checkJob.TranscriptionJob.Transcript.TranscriptFileUri;
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

            return(result);
        }
コード例 #4
0
        public async static Task <string> TranscribeDemo(IAmazonTranscribeService transcribeClient, string lauguageCode, string mediaUri)
        {
            string result = null;
            Media  media  = new Media()
            {
                MediaFileUri = mediaUri
            };

            StartTranscriptionJobRequest transcriptionRequest = new StartTranscriptionJobRequest()
            {
                TranscriptionJobName = DateTime.Now.Millisecond.ToString(),
                Media            = media,
                MediaFormat      = MediaFormat.Wav.ToString(),
                LanguageCode     = lauguageCode,
                OutputBucketName = "reinvent-indiamazones"
            };

            try
            {
                Task <StartTranscriptionJobResponse> transcriptionTask     = transcribeClient.StartTranscriptionJobAsync(transcriptionRequest);
                StartTranscriptionJobResponse        transcriptionResponse = await transcriptionTask;
                TranscriptionJob transcriptionJob = transcriptionResponse.TranscriptionJob;

                bool loop = true;
                while (loop == true)
                {
                    if (transcriptionResponse.TranscriptionJob.TranscriptionJobStatus == TranscriptionJobStatus.IN_PROGRESS)
                    {
                        Console.WriteLine(transcriptionResponse.TranscriptionJob.TranscriptionJobName);
                        Console.WriteLine(transcriptionResponse.TranscriptionJob.TranscriptionJobStatus);
                        if (transcriptionResponse.TranscriptionJob.Transcript != null)
                        {
                            Console.WriteLine(transcriptionResponse.TranscriptionJob.Transcript.TranscriptFileUri);
                        }
                        Thread.Sleep(3000);
                    }
                    else if (transcriptionResponse.TranscriptionJob.TranscriptionJobStatus == TranscriptionJobStatus.COMPLETED)
                    {
                        Console.Write("Transcription job completed.");
                        DateTime completionTime = transcriptionJob.CompletionTime;
                        result = transcriptionJob.Transcript.TranscriptFileUri;

                        loop = false;
                    }
                    else
                    {
                        Console.WriteLine(transcriptionResponse.TranscriptionJob.TranscriptionJobStatus);
                        result = string.Empty;

                        loop = false;
                    }
                }

                result = transcriptionResponse.TranscriptionJob.Transcript.TranscriptFileUri;
            }
            catch (AmazonTranscribeServiceException transcribeException)
            {
                Console.WriteLine(transcribeException.Message, transcribeException.InnerException);
            }

            return(result);
        }