class AWSTranscribeService implements TranscribeService, AcmConfigurablePlugin {

    @Override
    @Async
    public Transcribe create(Transcribe transcribe) throws CreateTranscribeException
    {
        AWSTranscribeConfiguration configuration = null;
        try
        {
            configuration = getConfiguration();
        }
        catch (GetConfigurationException e)
        {
            getTranscribeEventPublisher().publish(transcribe, TranscribeActionType.PROVIDER_FAILED.toString());
            throw new CreateTranscribeException(String.format("Transcribe failed to create on Amazon. REASON=[%s]", e.getMessage()), e);
        }

        checkIfMediaExist(transcribe, configuration.getBucket());
        uploadMedia(transcribe);
        startTranscribeJob(transcribe);

        return transcribe;
    }

}