Projects
A project is one set of instructions, theconfig:
- sourceMedia: where the media comes from: the project’s input folder, or a feed;
- transcription: the language spoken in the media, and the speech-recognition engine;
- translations: zero or more target languages, each with a translation engine and optionally
a voice to dub it with (
ttsOptions); - outputs: where the results go (the output folder, and for a feed project a feed per language), each with the files to produce for every input: videos with chosen audio and subtitle tracks, audio files, subtitle files.
The folders
Each project has its own place in SyncWords’ S3 storage, given in itsstorage field:
input/holds your source media. Upload with the API (no AWS account needed) or with the AWS CLI and a role vended for your account. Subfolders are allowed. A project that reads a feed downloads each item’s media here itself, and takes no uploads.output/receives the results, named from each input by the item’snameTemplate(episode 01.mp4→episode 01.es.mp4), in the same subfolders as the input. A feed project’s re-published feeds are written underoutput/feeds/.
The processing service
A running project has a processing service watching its input folder. It picks up each new file, works through it, writes the outputs and moves on. Several files are processed in parallel. For each file it:- transcribes the speech, with speaker diarization;
- translates each utterance into every target language;
- dubs each translation that has
ttsOptions: synthesises the lines with the chosen voices, timed to the original speech, and mixes them over the original background; - packages the outputs: muxes audio and subtitle tracks into videos, writes audio and subtitle files.
startOnNewFiles off). A project
that reads a feed is never stopped for being idle: it keeps reading the feed, every 30 seconds,
for new items. See the processing service.
Following progress
GET /projects/{id}/files lists every input with its state (pending, processing, done,
failed) and the outputs it will produce, each marked available once written. To be told
instead of asking, register a webhook: it is called when a file is done or
failed and when a project stops. Or poll the listing, as described in
Monitoring.
Billing
Usage is recorded per input file when it is done, by the file’s duration: once for its captions in the transcription language, once for each translated language, and separately once for each dubbed language. Output formats are not billed separately, so three video formats of one Spanish dub count as one Spanish dub, and a file that is only transcribed is billed for its captions alone. A file that fails is not billed. Retrying a file does not bill it again; uploading different content under the same name does. Billing followstranslations, not outputs: a language translated or dubbed is billed even if no
output carries it. The project says so in its meta.messages.
Each done file’s usage in GET /projects/{id}/files lists what
it was billed for, entry by entry, with the duration each is billed by.