Hi HN, here's something fun to play with.
It takes any HN thread and turns it into an audio conversation so you can listen to the thread while doing other things.
I've seen many previous attempts to turn HN threads into podcasts, but they all shared a common issue IMO: trying to reduce the very rich back-and-forth into a single-thread single-reader boring podcast. Instead, I wanted to hear the actual debate from the actual thread!
So I asked Claude 3.7 to build this for me as a browser-only app. It just needs a thread URL and an Elevenlabs API key (this all remains in your browser, you can check the source code, it's only 3 files, there is no server storage of anything).
To make the resulting audio experience as natural as possible, each commenter has a different voice.
Commenters who appear multiple times in the thread have the same voice, and introduce themselves. A bit of context is also introduced when coming back "up" from deeply nested comments.
You can play the resulting audio or download it for later listening. I'm planning to later add the ability to load multiple threads so I can have a playlist generated for listening in the gym!
Any comments or improvement suggestions are appreciated!
Issues I've noticed when running it against more threads:
- don't use Legacy voices as they seem to be of much lower quality (sounds like someone is calling in from an international landline)
- when the same poster appears many times, it gets tedious to hear them restate who they are. I think after the first 3, we should recognize the voice so that's not necessary anymore
Feature requests I'll add:
- emphasize quotes better
- add audio chapter marks if possible, so it's possible to skip ahead
- attach a speaker's voice to the relevant voice in the 11Labs account if there's a voice with the same name as the username
- add sound effects if people write down sound effects in their comments (this seems tough)
Anything I'm missing?
Alright, I've made several updates based on feedback!
Cost Estimation
- Shows (very rough) character count estimate (rounded to nearest thousand)
- Displays approximate cost at $0.12 per thousand characters
- Updates dynamically as selections change
Advanced Input Options - Added toggle between single thread URL and top 100 stories selection
- Implemented multi-thread selection with checkboxes
- Saves input mode preference to localStorage
Comment Limit Improvements - Changed to "All" as default with option for custom limit
- Original post no longer counts against comment limit
Quote Formatting - Text with > is now properly recognized as quotes
- Quotes are transformed with random introduction phrases
- Adds "End of quote" with variations at the end of quoted text
Link Handling - Preserves shared links in expandable section at the bottom
- Different random phrases for first, second, and multiple links
- Links open in new tabs when clicked
Voice Matching - Matches commenter usernames to ElevenLabs voices if names match
- Falls back to deterministic assignment if no match found
Error Handling & Recovery - Saves progress and allows resuming after errors
- Shows "Retry" button with partial audio when errors occur
- Audio generated so far is available for download
UI Improvements - Added tooltip with API key information
- Persistent theme preferences via localStorage
- Improved responsive design for mobile
- the filename of the generated MP3 file matches the thread title
This is cool. Any chance you can drop an example?
Here's a quick example:
First 20 comments of "John Carmack: writing Rust code feels wholesome"
Here is the rendered mp3 : https://drive.google.com/file/d/1yG1mwD70ZteXtdh8Jk_sXUXS_sQ...
The thread: https://news.ycombinator.com/item?id=19126795
First 30 comments of a recent thread, "AGI is still 30 years away": https://drive.google.com/file/d/1YbgRXBv1LC3IdMl8Xb4i9y98S2T...
The thread: https://news.ycombinator.com/item?id=43719280
Given recent developments I think it might be fun to listen to this very thread as audio!
Can I upload my own voiceprint so my comments are said in my voice, voice of my choosing?
Can I navigate by voice commands, for example if listening while driving?
1. This should be possible, I think for example if you saved your cloned voice in your account with the same name as your HN handle. I'll add this. This should then work for using any voice for a specific user (just use the right username as the voice's name in 11Labs).
2. No navigation by voice commands sadly - it generates a single audio track. I might be able to insert chapter marks for each comment though, so that it'd be possible to "skip" to the next comment!
I don't have a voice print, can I put something in my profile to get a generic feminine voice? I don't suppose there's a pronouns field
I would think once I introduce the feature above, you could just create a "01HNNWZ0MV43FF" voice with the Voice Lab[0] inside your account (not necessarily duplicating your real voice but just using 11Lab's tool to get a feminine voice). Would that work?
One big post can have a bigger reply counter-arguing every point 1b1. It would be nice if the arguments go back and forth, basically segmenting the post and the replies into multiple lines of dialog, rather than feeling like you are listening to a speech.
Wait... do you mean, quoting the original (or parent) poster in their own voice when there's a quote?
That seems less natural. I think what I can do though, is turn quotes into actual quotes, eg. turning
> One big post can have a bigger reply counter-arguing every point 1b1
into:
"Look; you said 'One big post can have a bigger reply counter-arguing every point 1b1'"
>Wait... do you mean, quoting the original (or parent) poster in their own voice when there's a quote?
yeah, I think what I'm getting at is when there is a big argumentative post crossing the line from chit-chat to speech, break out of the structure of the website, let the LLM get the arguments out and connect them to the counter-arguments and turn it into a back a forth with shorter dialog lines, without repeating too much or one person talking for very long.
Also I agree, the LLM should be free to transform or add dialog how it sees fit so it feels more natural but always keeping it true to what is written.
In this app, the process runs entirely in the browser and has no LLM calls at all, so we don't have the ability to rewrite the conversation (other than performing regexes or other crude operations on the text of a comment, which is how links are turned into "See the link I posted in the thread").
I also think it's incredibly difficult (even with an LLM) to render properly a multi-turn multi-user conversation without sticking to the actual hierarchy of the thread. We would probably run into the "summarize the thread and lose nuance" problem again.
Note: I'm particularly interested in feedback on making the conversation feel even more "natural" so that the audio is as similar as possible as if we were really listening in on the watercooler chat.
It seems that in the generated audio, the number of comments is off by one. It is missing 1 comment.
I think it counts the original post as a comment, so the total shown is (original posts plus number of comments). Is it actually missing one comment in your audio ? which one? first or last?
The last one. I did https://news.ycombinator.com/item?id=43552385 and entered 26 comments.
Ah! You don't need to enter the exact number of comments in this field, you can leave it at 100.
Entering a max of "26" manually is what created the off-by-one error, I think, because of the original post being counted as a comment.
But yeah, I'll fix that.
If I leave the max at 100, then I get every comment (original post + al 26 comments), here's the output audio: https://drive.google.com/file/d/1fIis8yQn-YuOmJwq1J4cLtthQV0...
Update: I fixed it. The parent post is no longer counting towards the limit.
This is pretty good I might listen to this as alternative to a podcast.
Maybe publish it as a podcast.
Thank you!
I have no plans to publish as a podcast (if I was going to go through all the trouble to put a podcast together, it would be an actual podcast for my startup, not for a hobby project!) but I'd love it if someone did it!
Oh nice cool water. It's a bit muddy looking? Is it safe to drink?
rips hair out
This sounds painful! I think I'll add a feature so 11Labs generates sound effects for comments like this, so they can be enjoyed in their full glory