-
Notifications
You must be signed in to change notification settings - Fork 1.4k
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
Support for podcast:transcript tag #4935
Comments
@keunes or @ByteHamster please assign to me, since I have the podcastindex namespace parsing done in #4933, I could tackle |
I have a a few suggestions for transcript related features I think would be great to include in AntennaPod (originally mentioned in #5002):
There are currently at least two podcast apps on iOS that provide some of these features, but none on Android as far as I know. Those apps are https://podcast9.com/ and https://www.airr.io/. They are labeling themselves as more educational / productive alternatives to regular podcast apps and their main value proposition is the ability to interact with and remember what you listen to as well as easily share your favorite bits with others. A future item to consider which might be out of scope currently is to automatically create transcripts for episodes that don't provide it, e.g. using the live transcribe feature on phones where it is available. |
Nice ideas 👍 My guess would be that # 4 wouldn't be too difficult. But for the others I guess we (the app) would need to receive the timestamps with the transcript I think - as I reckon it's not feasible for AP to automatically match the text with the audio. Do you know if transcripts typically have such timestamps? |
Thanks @keunes ! I am not very experienced with podcast data and metadata, but I looked around a bit and it seems like at least some transcripts provide this. The example used on the podcastindex API docs page includes this segment: transcriptUrl: "https://mp3s.nashownotes.com/NA-1322-Captions.srt" That srt file includes timestamps which look like this: 1
00:00:00,000 --> 00:00:05,340
Pull my mask over my nose. Adam
Curry John C Dvorak, Thursday,
2
00:00:05,340 --> 00:00:09,030
February 18 2021. This is your
award winning media
3
00:00:09,030 --> 00:00:13,380
assassination Episode 13. This
is no agenda.
... I am not sure how common it is, but at least it exists. A complimentary approach that is less robust but does not rely on external data could be to match the relative position of sentences in the transcript with the relative time of the audio file (when no timestamps are available). Even if this was only able to generate precision to the minute, I think it would be helpful for most items I mentioned above. For some, like the scrolling text, it would probably perform quite well since so much of the transcript would be shown on the screen that the matched position does not have to be exact. It would probably benefit from calculating the relative audio position without silences (I noted that there is already an option in AP to skip these when listening). |
I like to add an idea mentioned in the issue above: hide empty tabs - that could be empty transcripts and especially nonexistent chapters, if only one tab remains the tablayout itself should probably be hidden. I think thats a sensible solution, to not crowd the AudioPlayer with empty tabs and require to user to swipe a thousand times to get to the desired tab, makes the UX clearer :) |
@tonytamsf Any idea how to implement the data store? Downloading all transcripts of all episodes could result in a huge amount of text to be stored. We already have the problem that the database is pretty big. I think it would be better to only store the URLs and then load the transcript when actually viewing the transcript page in AntennaPod. We could enable caching with okhttp to reduce the number of web requests. |
I like your idea, there is no need to store transcription. Depending on the user, they may not want to be downloading transcript using mobile data, so we might have to get user consent to use mobile to download transcript. |
Why not storing transcript on file text on device? Same way episodes are stored. They would be removed along with episodes and it would allow to make them available like episodes are. Edit : |
Sounds like a good idea. When streaming, users need a data connection anyways. When downloading, we can download the transcripts, too. 👍 |
I'm just wondering: this wouldn't hinder 'processing' the info (esp. timestamps, for # 4 in OP).
Just to throw an idea out: couldn't this be done, but then in the db? As in, download & store in db when episode is downloaded; remove from dB when file is deleted? (Don't know if this would have any actual benefit, see above). |
I don't think storing and using text files would cause any problem : it is what video player does with srt files for subtitles. |
Storing it in the database but only for downloaded episodes should work :) Then we don't need to store the file path, we can just store the transcript directly. |
Don't know if you saw how Podverse implemented transcript with search. For reference there is a video of what they did : https://twitter.com/Podverse/status/1413642917760184325?s=19 IMHO about their screen :
|
Thanks for sharing that @Matth7878!
Fully agree
I understand your point, but we can't really merge sentences that are separated into two blocks I think:
|
Let me take a stab at getting the podcast:transcript tag to download and stored. Then we can work on the UI on the next step |
Sorry I have been taking a break from AntennaPod. I'm un-assigning myself until I get back |
We will be targeting the |
I have a test build of how we can display transcripts in 2 lines of text on the player screen. It works for JSON (word by word) or SRT (a few seconds of text). The way I am able to nicely display the transcript is as follows
@keunes I would like to give this test build to you and maybe just one of two others (maybe @jamescridland ) to test out against different podcasts which have transcripts to make sure the algorithm works. I would like to do this before the code reviews because that will take many weeks while we can fine tune how transcripts will function in the UI. note: detecting words will be difficult with languages like Chinese and Arabic |
@keunes - I have a test build of the transcript functionality in the 3rd PR, it will display 2 lines of transcript in the player screen. When you have time, please check out it. If you wanted more podcasts that have the transcript tag to see the variety of how folks format their transcripts, I have crawl all 4 million podcasts from podcastindex.org found the 15233 urls of the podcasts which have at least one podcast:transcript tag |
4th PR to display 2 lines of transcript on the cover #6912 |
@keunes - take a look at the preview of iOS Podcast player and how the UX is for transcripts, play the video https://podnews.net/article/apple-podcasts-transcriptions-faq
|
Also adding some interesting stats here
|
That's interesting. Makes you wonder if we need the two-line fragment on the cover. Let's take some use-cases:
Seeing Apple's implementation and the use cases I can think of, I'm starting to think we might not need the subtitle version… @ByteHamster what do you think? Plus it might be easier to implement?
Do you know what that does in terms of percentages vis-à-vis the full index? |
I would say it's probably a bit easier to implement, yes (at least we don't need to deal with doing line breaks manually). Also, I'm not a big fan of the moving text on the otherwise quite clean player screen anyway. So if @tonytamsf and you agree, I'm totally happy with just having the full transcript screen. |
@jamescridland - is there an issue with the transcript rollout in iTunes today?
|
Apple produces its own transcripts, as well as using the podcast:transcript tag.
As above!
If there's a podcast:transcript tag listed, then anyone (like AntennaPod) can use the transcript. But Apple isn't making its own transcripts (in the app) available to anyone other than the podcast creator. Which seems fair enough.
There are only 2.4mn podcasts in Apple Podcasts. All of those come with auto-transcripts unless the creator has opted out. |
Just since I'm updating my article... Apple won't produce automated transcripts for RSS feeds you've manually added. But the app will, apparently, show transcripts from the podcast:transcript tag. |
Thank you @jamescridland for the explanation. Wow, talk about fragmenting the ecosystem with iOS wall. Today I am writing a school paper on why televisions and movies have gotten close to 100% close captioning but transcripts in podcast are still at 1%. It is mind boggling |
Actually, it's the opposite here. Apple has taken an open standard that's been under development for three years and implemented it in their app. But for those podcasts that can't be bothered to create a transcript to appear in Apple Podcasts, Apple will do it for them. That seems generous and the right thing to do.
In Apple Podcasts, transcripts in podcasts are, from today, almost 100%. |
So if podcast A is transcribed by Apple, the RSS feed that is served out to non iOS Podcast players will not show the So I will assume that the Apple Podcast app no longer fetches from the transistor.fm RSS feed directly? Then transistor.fm has to do it's own transcript in order for Spotify, AntennaPod, Overcast to consume. Is that the correct understanding? I guess it's too much to ask Apple to do us all a favor and give us the transcript for free via a |
No, precisely wrong. If the creator is supplying a transcript, Apple always uses it.
As the creator - Apple can do what it wants in its own app, but I don't want Apple to suddenly take control of my own RSS feed, no; and nor do I want it to produce transcripts for others. Apple here is respecting the creator. And, good on them for doing so. |
re the references to Podverse: I can't find any obvious place in |
Podverse may not support JSON, but probably does SRT. Have you tried that? |
I see Podverse using the JSON transcript from Here’s the line in podverse-rn where they fetch a transcript URL:
|
Oh yes. To the point of @ssb22 - the JSON call is absolutely made from the Podverse player. |
Ah yes, and
|
Checklist
Feature description
Some podcasts include text transcript using
podcast:transcipt
Suggested solution:
Display transcript and sync it with the audio.
Meeting notes from Nov 2nd, 2023 #4935 (comment)
The text was updated successfully, but these errors were encountered: