Ben Crowder / Blog Menu

Blog: #transcription

Ditto intro

Another entry in the tedious series about my personal productivity tools.

Ditto is my transcription app. It’s a Python app using FastAPI for the web parts.


The goal with Ditto is to take scans (usually of journals) and make it easy to transcribe them a page at a time. Same idea as Unbindery, though scaled way, way down: single-user instead of crowdsourced, a simplified workflow, and it only supports one project at a time so I don’t spread my limited transcription time too thin. It looks like this:


And there’s an inverted mode, which initially seemed like a great idea (dark mode, basically) but I never actually use it, I think because it’s harder to read:


The transcriptions are stored as plain text files in the same directory as the corresponding images.

How I use Ditto

I spend a few minutes transcribing journals each morning as part of my daily routine. (As I finish each volume, I pull the transcribed text files off my server, concatenate them, do some minor formatting, and then import them into Vinci.)

The future

When I made Ditto, one of my goals was to make it work well on mobile so I could have a portable transcription station anywhere I went. It has a responsive design that does work on a phone, but the experience is currently slightly awkward (lots of panning), so I tend to only use it on my laptop. At some point I’d like to try to fix that.

Other than that, though, I’m happy with it. It works well. And it’s small — 340 lines of code. (Which makes me inordinately happy. Small tools are the best.)

Reply via email or office hours

Crosswrite (the real thing)

Remember Crosswrite, that proof-of-concept I did for web-based audio transcription? Well, I’ve fleshed it out a bit.

You can now upload files (either through the buttons on the left or via FTP) and it automatically saves your transcripts to text files (no database required) every second.

I don’t have a live demo of the app (since I don’t really want people uploading their MP3s to my server), but the code is on Github as usual. If you run into problems with it or have feature requests, either add an issue on Github or email me.

Reply via email or office hours


I’ve spent some time transcribing audio in the past (both Mormon Artist interviews and family history recordings) and it’s nice having keyboard shortcuts to control audio playback. There are some nice desktop apps that do this for you, but last night I realized that with the HTML5 audio element and some Javascript magic, it’d be super easy to code up a web app to do it instead. And it was. It’s called Crosswrite, and you can try it out on the demo page.


It works pretty well in Chrome and Safari, but it doesn’t work in Firefox. This is just a demo, not a full-blown app. All things considered, however, it only took ten or fifteen minutes to write, and the hardest part by far was deciding what keyboard shortcuts should do what. (I’m still not entirely happy with my choices.)

Reply via email or office hours