kitbrennan90 / aws-transcribe-to-webvtt
PHP package for converting Amazon Web Services Transcribe Service results to a webVTT file
Installs: 57 863
Dependents: 0
Suggesters: 0
Security: 0
Stars: 5
Watchers: 0
Forks: 1
Open Issues: 1
Requires
- php: >=7.1
- ext-json: *
Requires (Dev)
- phpunit/phpunit: ^7.0
- squizlabs/php_codesniffer: ~2.0
This package is auto-updated.
Last update: 2025-04-29 01:19:49 UTC
README
This PHP package lets you take a JSON output from Amazon Transcribe and convert it into a valid WebVTT file to use as video subtitles.
Installation
You can install this library via Composer. Run the following command:
composer require kitbrennan90/aws-transcribe-to-webvtt
Usage
Getting started could not be easier. Simply initialise the transcriber, set your Amazon Transcribe string, and request an output:
use AwsTranscribeToWebVTT\Transcriber; $transcriber = new Transcriber(); $transcriber->setAwsTranscription($jsonString); $result = $transcriber->getOutputAsString();
Advanced Options
Set max string length of cues
By default, cues will be cut when they reach 30 characters long. You can set your own cutoff with the setMaxCueStringLength(int $value)
option.
Example (setting cue length at 40 characters):
use AwsTranscribeToWebVTT\Transcriber; $transcriber = new Transcriber(); $transcriber->setAwsTranscription($jsonString)->setMaxCueStringLength(40); $result = $transcriber->getOutputAsString();
Set max second length of cues
By default, cues will be cut if they will span a period longer than 30 seconds. You can set a custom length in seconds using setMaxCueTimeLength(int $value)
.
Example (setting cue length at 50 seconds):
use AwsTranscribeToWebVTT\Transcriber; $transcriber = new Transcriber(); $transcriber->setAwsTranscription($jsonString)->setMaxCueTimeLength(50); $result = $transcriber->getOutputAsString();
Note: the length of a cue is worked out to the nearest second, so a value of 30 will still include cues 30.9 seconds long.
Delay all timings by n seconds
Sometimes it is useful to postpone all the timings (eg. when you are stitching videos together). Use the setSecondPostponement(int $value)
to set this option (default is no delay).
Example (delaying all timings by 10 seconds):
use AwsTranscribeToWebVTT\Transcriber; $transcriber = new Transcriber(); $transcriber->setAwsTranscription($jsonString)->setSecondPostponement(10); $result = $transcriber->getOutputAsString();
Help
This library is a small labour of love. If you have any questions or if you think something is missing, please option an issue and I will answer as quickly as possible.