Building Conversational Speech Annotation Tool in Clojure
summary
A bespoke ClojureScript editor becomes a working conversational audio annotator that uses Reagent and re-frame, Wavesurfer.js for the waveform UI, piano audio library for diarization and Whisper for transcript seeds, and produces segments by merging ML tokens right-to-left then partitioning by speaker or gap. Concrete wins: property-based tests catch a rare selection-consistency bug; test coverage enables safe refactors. Pain points include Specter hit a 20-arg function limit, local undo histories per segment, and a custom merge that preserves user edits while resizing segments.
AI-written summary · about
chapters (10)
- 0:00Introduction and background
- 3:33Text annotation features
- 9:01Editor architecture overview
- 11:10Spectre challenges and fixes
- 15:47Debugging tooling and data structure
- 19:24Conversational speech annotation
- 23:38Speech annotation workflow
- 26:34Waveform UI and immutability
- 27:40Critical UI challenges
- 31:58Acknowledgments and closing
related talks
34mBuilding a Collaborative Web App with ClojureScript
36mLearning to Talk to Machines with Speech Acts
43mA Case Study of Natural Language Processing in Clojure
31mLightning Talks
31mre-frame your ClojureScript applications
21mLLMs + Clojure = Who needs frameworks?
35mClojureScript & User Interfaces: Simplicity yields Possibilities
41mClojureScript for Skeptics
