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 } } }
/// <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); }
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); }
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); }