C++ Amazon Transcribe: StartTranscriptionJob

Back to Index

Starts an asynchronous job to transcribe speech to text.

Documentation: https://docs.aws.amazon.com/transcribe/latest/dg/API_StartTranscriptionJob.html

CURL Command

curl -X POST https://transcribe.us-west-2.amazonaws.com/ \
  -H "Content-Type: application/x-amz-json-1.1" \
  -H "X-Amz-Target: Transcribe.StartTranscriptionJob" \
  -d '{
   "LanguageCode": "en-US",
   "Media": { 
      "MediaFileUri": "https://s3-us-west-2.amazonaws.com/chilkat.ocean/example.mp4"
   },
   "MediaFormat": "mp4",
   "MediaSampleRateHertz": 44100,
   "OutputBucketName": "chilkat.ocean",
   "Settings": { 
      "ChannelIdentification": true,
      "MaxSpeakerLabels": 2,
      "ShowSpeakerLabels": false,
      "VocabularyName": "test"
   },
   "TranscriptionJobName": "testJob1"
}'

C++ Example

#include <CkRest.h>
#include <CkAuthAws.h>
#include <CkJsonObject.h>
#include <CkStringBuilder.h>

void ChilkatSample(void)
    {
    CkRest rest;
    bool success;

    CkAuthAws authAws;
    authAws.put_AccessKey("AWS_ACCESS_KEY");
    authAws.put_SecretKey("AWS_SECRET_KEY");
    authAws.put_Region("us-west-2");
    authAws.put_ServiceName("transcribe");
    rest.SetAuthAws(authAws);

    //  URL: https://transcribe.us-west-2.amazonaws.com/
    bool bTls = true;
    int port = 443;
    bool bAutoReconnect = true;
    success = rest.Connect("transcribe.us-west-2.amazonaws.com",port,bTls,bAutoReconnect);
    if (success != true) {
        std::cout << "ConnectFailReason: " << rest.get_ConnectFailReason() << "\r\n";
        std::cout << rest.lastErrorText() << "\r\n";
        return;
    }

    //  See the Online Tool for Generating JSON Creation Code
    CkJsonObject json;
    json.UpdateString("LanguageCode","en-US");
    json.UpdateString("Media.MediaFileUri","https://s3-us-west-2.amazonaws.com/chilkat.ocean/example.mp4");
    json.UpdateString("MediaFormat","mp4");
    json.UpdateNumber("MediaSampleRateHertz","44100");
    json.UpdateString("OutputBucketName","chilkat.ocean");
    json.UpdateBool("Settings.ChannelIdentification",true);
    json.UpdateNumber("Settings.MaxSpeakerLabels","2");
    json.UpdateBool("Settings.ShowSpeakerLabels",false);
    json.UpdateString("Settings.VocabularyName","test");
    json.UpdateString("TranscriptionJobName","testJob1");

    rest.AddHeader("Content-Type","application/x-amz-json-1.1");
    rest.AddHeader("X-Amz-Target","Transcribe.StartTranscriptionJob");

    CkStringBuilder sbRequestBody;
    json.EmitSb(sbRequestBody);
    CkStringBuilder sbResponseBody;
    success = rest.FullRequestSb("POST","/",sbRequestBody,sbResponseBody);
    if (success != true) {
        std::cout << rest.lastErrorText() << "\r\n";
        return;
    }

    int respStatusCode = rest.get_ResponseStatusCode();
    if (respStatusCode >= 400) {
        std::cout << "Response Status Code = " << respStatusCode << "\r\n";
        std::cout << "Response Header:" << "\r\n";
        std::cout << rest.responseHeader() << "\r\n";
        std::cout << "Response Body:" << "\r\n";
        std::cout << sbResponseBody.getAsString() << "\r\n";
        return;
    }

    CkJsonObject jsonResponse;
    jsonResponse.LoadSb(sbResponseBody);

    //  See the Online Tool for Generating JSON Parse Code

    const char *TranscriptionJobCompletionTime = jsonResponse.stringOf("TranscriptionJob.CompletionTime");
    const char *TranscriptionJobCreationTime = jsonResponse.stringOf("TranscriptionJob.CreationTime");
    const char *TranscriptionJobFailureReason = jsonResponse.stringOf("TranscriptionJob.FailureReason");
    const char *TranscriptionJobLanguageCode = jsonResponse.stringOf("TranscriptionJob.LanguageCode");
    const char *TranscriptionJobMediaMediaFileUri = jsonResponse.stringOf("TranscriptionJob.Media.MediaFileUri");
    const char *TranscriptionJobMediaFormat = jsonResponse.stringOf("TranscriptionJob.MediaFormat");
    int TranscriptionJobMediaSampleRateHertz = jsonResponse.IntOf("TranscriptionJob.MediaSampleRateHertz");
    bool TranscriptionJobSettingsChannelIdentification = jsonResponse.BoolOf("TranscriptionJob.Settings.ChannelIdentification");
    int TranscriptionJobSettingsMaxSpeakerLabels = jsonResponse.IntOf("TranscriptionJob.Settings.MaxSpeakerLabels");
    bool TranscriptionJobSettingsShowSpeakerLabels = jsonResponse.BoolOf("TranscriptionJob.Settings.ShowSpeakerLabels");
    const char *TranscriptionJobSettingsVocabularyName = jsonResponse.stringOf("TranscriptionJob.Settings.VocabularyName");
    const char *TranscriptionJobTranscriptTranscriptFileUri = jsonResponse.stringOf("TranscriptionJob.Transcript.TranscriptFileUri");
    const char *TranscriptionJobTranscriptionJobName = jsonResponse.stringOf("TranscriptionJob.TranscriptionJobName");
    const char *TranscriptionJobTranscriptionJobStatus = jsonResponse.stringOf("TranscriptionJob.TranscriptionJobStatus");
    }

Sample JSON Response Body

{
  "TranscriptionJob": {
    "CompletionTime": 1.537978264322E9,
    "CreationTime": 1.537978264322E9,
    "FailureReason": "string",
    "LanguageCode": "string",
    "Media": {
      "MediaFileUri": "string"
    },
    "MediaFormat": "string",
    "MediaSampleRateHertz": 44100,
    "Settings": {
      "ChannelIdentification": true,
      "MaxSpeakerLabels": 2,
      "ShowSpeakerLabels": false,
      "VocabularyName": "string"
    },
    "Transcript": {
      "TranscriptFileUri": "string"
    },
    "TranscriptionJobName": "string",
    "TranscriptionJobStatus": "string"
  }
}