Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Transcripts by file upload #969

Open
4 tasks done
brandonhundt opened this issue Feb 16, 2024 · 2 comments
Open
4 tasks done

Transcripts by file upload #969

brandonhundt opened this issue Feb 16, 2024 · 2 comments
Assignees

Comments

@brandonhundt
Copy link
Contributor

brandonhundt commented Feb 16, 2024

Per our discussion about Step 1 for transcripts, we want to get some basic support in Feeder. See the doc: https://docs.google.com/document/d/1-0bOHkWMd0LUKt-1sw5h-oUlqwAdVYmtqxPyk4UGEpE/edit#bookmark=id.9j3sg0ayyaju

  • Transcript file made available to RSS feed and API (one file per episode), Validate and "shove out" a transcript with the episode. RSS and API
  • Add a field to UI. VTT and SRT supported (add to media files tab)

Feeder _ Episode _ Media Files

Tasks (separate issues/PRs)

  1. radical-ube
  2. high
    radical-ube
  3. radical-ube
  4. radical-ube
@brandonhundt brandonhundt self-assigned this Feb 26, 2024
@kookster
Copy link
Member

Should we allow multiple transcript files? There might be an uploaded version and a machine generated, should we be able to have both? The element in the feed allows multiple in different formats, we could allow the same. I wonder if we should also keep track of where/which app generated a transcript...like, did this VTT come from Apple, from Descript, AWS?

Should we also support human readable, but not terribly machine friendly formats like txt, MS Word docs or even pdfs?

Would we have storage of individual audio file segment transcripts? I think if we generate the transcript from segments, those would get generated and stored next to the audio files in s3, like we do with other derivatives. But then what does that mean for the overall transcript? Seems like we'd need a (on demand? async?) process to make a combined transcript from them. Perhaps a field on the MediaResource could indicate if there is a transcript for it, or we could allow a MediaResource to have a Transcript...

So what would the model/storage for this episode transcript look like?

I'm thinking like an EpisodeImage or MediaResource, with the original_url where it is uploaded (probably an s3 url), and the url for the public location. Since we have different standards, include a format or mime_type to designate if they uploaded/generated a VTT, podcasts:transcript json, or SRT file.

I think this is its own table/model, for Transcript, and Episode has many Transcript.

@cavis
Copy link
Member

cavis commented May 21, 2024

Implementation (these could be broken up into separate PRs):

  • Create a new transcripts table/model
    • Similar to EpisodeImage fields: status, guid, url, original_url, mime_type, file_size, format
    • To start, let's treat it has episode has-one transcript. We can always change that to many later.
    • Make paranoid.
  • Create a new CopyTranscriptTask as a subclass of Task
    • To start, fire off porter Inspect / Copy tasks and parse the results back into the Transcript
  • Create UI to upload the transcript
    • On save in the controller, set the original_url/file_size (and randomize the guid) on the Transcript model
    • Kick off a copy transcript task in the episode.copy_media hooks
    • Add validations to the transcript that it has an acceptable format (TODO: what mime_types does porter Inspect return for these transcript files?)
  • Add transcript link to the RSS

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants