A deep navy field crossed by three thin pale slate lines that all trace the same gentle S-shaped contour. A fourth line in warm gold begins at the middle slate line about two thirds of the way across, rises steeply through the others with a soft glow around the bend, and levels off above them at the right edge.

The scenario below is invented. No case, no client, no real recording. I have written it as four cameras because four is where the interesting thing happens, and everything else in this post is real.

Four cameras caught the same eleven seconds. Two officer body cameras, the squad car, and a bystander standing about thirty feet back holding a phone.

All four have audio. All four were transcribed. Somewhere in the middle of that eleven seconds is a sentence that matters, and the four machine transcripts do not agree about one word in it.

Three of them say one thing. The fourth says something else.

Here is the question I care about, and it is not the one you might expect. The question is not which transcript is right. The question is what a tool should do at that moment.

The fork every tool arrives at

There is a moment in building any analysis tool where you have enough information to be helpful, and you have to decide what kind of helpful.

You can reduce the work. You can also reduce the thinking. On a feature list these look identical. Both of them shorten the distance between the analyst and the answer, both of them get described with the same verbs, and both of them demo well.

They are not the same thing at all.

Reducing the work means the analyst spends their attention on the part that needs a person. Reducing the thinking means the analyst spends less attention, full stop, and the tool quietly absorbs a judgment nobody watched it make.

I have been building a review surface for machine transcripts, and I ended up taking the first branch about six times in a row. That was not a plan. It happened one decision at a time, and I only noticed the pattern afterward, when I went back and asked what all six had in common.

What it will not do

I want to say this early, because a limitation stated up front is the only kind a reader has any reason to believe.

It will not tell you what was said. It will not pick the better transcript when two of them disagree. It will not merge four AI models into one confident description of what is on screen. It will not stop you from loading a file whose hash does not match.

It does not conclude. Not because concluding was hard, but because concluding is the part that belongs to you.

Confidence colors a word. It does not fix it.

The transcript sits under the video, one span per word, each carrying its start time. As the video plays, the current word highlights and the panel scrolls itself.

Every word arrives with a confidence value from the speech model. Words at or below a threshold turn red and bold, and the red is interpolated rather than flat: a word just under the line renders soft, and a word the model barely recognized renders hot. You can see the difference between “probably fine” and “the machine was guessing” without reading a single number.

The threshold is a live slider, and it ships at 0.85.

That number is high on purpose, and the reason is the whole argument in miniature. The threshold does not decide what is true. It decides how much of the transcript you are asked to listen to. Set it low and the tool gets quiet and agreeable and hides exactly the marginal words that are worth your ears. Set it high and it flags more than you strictly need, and you drag it down until the noise is bearable for this particular recording.

The reviewer owns that setting. Not the vendor, and not me.

Click a word and you hear the word

Clicking any word seeks the media to that word’s start time and plays from there.

That sounds like a convenience feature. It is actually the load-bearing one, because it decides what the unit of review is.

If you read a transcript, the text is the evidence. If you click a red word and hear the two seconds around it, the audio is the evidence and the transcript is an index into it. Same screen, same data, completely different epistemics.

A machine transcript is a finding aid. The recording is the record.

And there is a practical reason that distinction is not merely tidy, which took me a while to appreciate properly. I did not want to build something that asks a trier of fact to evaluate a confidence value, or to take my word or a vendor’s for what a muffled syllable was. I wanted the recording to be the thing in the room. People have ordinary human competence at hearing speech, and with counsel on both sides they will use it.

That is an unusual property. Often forensic tool output has to be interpreted for the fact finder by an expert, and the expert becomes a bottleneck the other side spends its time attacking. Audio is different. Play it in the room and everyone present forms their own view of what was said.

So the work is not to produce the definitive transcript. The work is to find the moments worth playing, and to arrive with the recording rather than in place of it. Every design decision after this one falls out of taking that seriously.

Four cameras, one timeline, and the part I am proudest of

Multi-camera is where this stops being a nicer transcript viewer.

Each camera gets a correction to a shared master timeline, so one seek moves all four. The four transcripts merge into a single interleaved thread ordered by corrected time, each line tagged with its source camera, its speaker, and its confidence.

Which brings us back to those eleven seconds.

When two or more cameras catch the same utterance at the same master moment, the naive thing is to deduplicate. Pick the cleanest one, show that, discard the rest. The screen gets tidy. The reviewer reads one line instead of four.

Deduplication is the wrong operation here, and the reason is specific: the four transcripts are not four copies of one record. They are four independent observations of one event, captured through four microphones at four distances. Treating them as duplicates assumes the thing you are trying to establish.

The tool collapses near-identical utterances into a single corroborated line, matched on a normalized similarity ratio, and that line expands. Open it and you see each camera’s exact wording side by side with each camera’s confidence for it.

Three cameras heard one thing. One heard another. Nothing on that screen tells you which is correct.

That is the feature.

The shallow reading is that this tool is less capable, because it will not resolve the conflict. The deeper reading is that resolving it would have cost the only thing worth having. Four microphones at four distances through four different bits of cheap plastic, and one of them heard something different: that divergence is a finding.

I want to be careful about what a tool that picked a winner would actually take from you, because the strong version of this sentence is false and I wrote it twice before catching it.

It would not destroy anything. All four recordings are still on the disk. All four transcripts are still on the disk. Nothing is deleted, and anyone who suspects a divergence is there can go and find it.

What it takes is the reason to look. Nobody goes hunting through eight hours of four-camera audio for a one-word disagreement that no screen ever showed them. The evidence survives and the question does not, and a question nobody thought to ask is, in practice, indistinguishable from an answer nobody had.

Only one thing is audible, and you choose which

Four videos playing at once is four audio streams, which is noise.

So exactly one camera is audible at a time, and the active one is flagged on screen so you always know which ear you are listening through.

There is a mode that automatically unmutes whichever camera has the highest-confidence word at the current moment. It is genuinely useful and it is not the default. Manual is the default, and switching to automatic is a thing you do deliberately, having decided to let the machine choose what reaches your ears for a while.

The difference matters because defaults are decisions you make on behalf of everyone who never opens the settings. If automatic selection were the default, most reviewers would never know a choice existed, and the answer to “why were you listening to that camera” would be “the software picked it,” which nobody chose and nobody can explain. Because it is off until you turn it on, turning it on is something you did, at a time, for a reason you can give.

Three models describe the frame, and they do not vote

There is an optional overlay for the significant moments (based on frame content analysis) a separate forensics pass has already identified. Each moment carries descriptions from three different AI vendors, extracted on-screen text, a summary, and a significance rank.

The three descriptions are shown per vendor. They are not fused, averaged, or reconciled into one authoritative account of what the frame contains.

If two models describe a frame the same way and the third does not, you are looking at the same shape of information as the four transcripts: a disagreement about a hard input, presented as a disagreement. The rank is there to help you decide where to look first. It is a sort order, not a verdict.

The thumbnails on that rail are drawn from the video you loaded, painted onto a canvas at each moment’s timestamp. No frame images ship with the tool. What you see is derived from the media in your hands, not from a picture somebody else made earlier and asked you to trust.

It checks the files and it still lets you through

A session manifest lists every video and transcript with its hash. The player verifies each file in the browser and shows pass or fail per file.

A file that fails verification can still be loaded, with the warning on screen.

Both halves of that are deliberate. It refuses to be quiet about a mismatch, and it refuses to make the decision for you, because there are legitimate reasons a hash moves and a tool sitting in your office at 11pm does not know which one you are in. What it will not do is let the discrepancy pass unremarked, and what it will not do is decide on your behalf that the discrepancy is fatal.

Same shape as everything above. Surface the conflict, name it clearly, leave it with the person who has to sign their name to the result.

Offline is not a privacy feature here

The whole thing is one HTML file. Inline JavaScript, inline CSS, no network calls at all. An examiner hands over the file alongside the media and the JSON, the recipient double-clicks it, and it runs from a local path with nothing to install.

Evidence does not leave the machine it is being examined on. That is not a nice-to-have in this work, it is the job.

And because a promise like that decays the moment somebody adds a font, the build fails if any external reference makes it into the output. Not a warning in a log nobody reads. The build refuses to produce an artifact.

I am more interested in that distinction than in the guarantee itself. An enforced property and a documented property look the same in a README and are not remotely the same thing. If you can state a property your tool has, you should be asking what would happen if it stopped being true, and whether anything anywhere would notice.

What this costs

This design makes the tool slower to use.

A reviewer who wanted a clean transcript gets a screen with red words on it, expandable disagreements, and three descriptions of a frame where one would have fit. Someone will eventually ask why it does not just tell them what was said. It is a fair question and it has an answer, but the answer takes a paragraph, and there are products that would have answered it with a number.

It also makes the output less quotable. There is no confidence score for the whole transcript, no overall accuracy figure, nothing that fits in a summary slide. The tool produces reviewed audio and a person’s judgment, which is exactly what it should produce and is very hard to put in a table.

I think that is the right trade in this domain. I do not think it is the right trade in every domain, and I would be suspicious of anyone who said it was.

Why this matters more here than elsewhere

There is an argument for tools that decide. Volume, consistency, fatigue. Real arguments.

They run into something specific in forensic work, and it is not philosophical.

A conclusion the analyst did not reach is a conclusion the analyst cannot defend.

Put a person in a deposition, or on a stand, or in front of opposing counsel’s expert, and ask them why they concluded what they concluded.

“The tool flagged it, and I listened to it, and here is what I heard” is a fine answer. That is a person doing their job with an instrument, and the instrument’s flag is just the reason they looked. Ask them to play it and they can.

“The tool resolved it” is a different afternoon entirely. There is nothing to walk through, because the step happened inside software the analyst did not write and cannot narrate. And the follow-up question is the one that ends it: what did the other cameras say?

The honest answer is “I did not check.” Not that the answer was unavailable, which would at least be a circumstance. It was available the whole time, sitting in the same folder, and the tool arranged things so that nobody thought to open it. That is a worse answer to have to give, and it is the accurate one.

Flagging is not the problem. Flagging is the tool doing exactly what it should: directing attention and then getting out of the way. Resolving is the problem. The parts you cannot walk through are precisely the parts that get attacked, and they are always the parts something else decided for you.

So a tool that concludes is not merely epistemically weaker. It becomes unusable at the exact moment its output matters most, which is a strange thing for a tool to be.

This is the same thread I have been pulling on in Forensic Detection of AI-Generated Images and in Configuring c2patool for Google Pixel 10 Photos. Those posts were about provenance: whether you can say where a piece of media came from. What has changed since then is where I think the hard part sits. Provenance answers where something came from. It says nothing about whether the analysis performed on it can be defended by the person who signed it. A perfectly provenanced recording, run through a tool that quietly resolved four disagreements into one clean line, gives you an unimpeachable file and an indefensible conclusion.

The chain of custody for the reasoning turns out to be the harder problem, and almost nobody is building for it.

The tool

It is called Second Listen (TM). It is a Lucid Truth Technologies product and the repository is private, though it can be made available on a case under a negotiated arrangement. There will be a proper release, and I am interested in early adopters between now and then. What I have described is where the tool stands today and what I was thinking while building it; the feature set is not frozen and some of it will look different at release.

That is genuinely all I am going to say about it, because the tool is not the point of this post.

Take this instead

Here is what I would actually like you to walk away with, and it costs nothing and applies to whatever you are building or buying this quarter.

Go through the automated steps in it, one at a time, and ask which branch each one took. Did it reduce the work, or did it reduce the thinking?

Then ask the harder version.

If the tool vanished from the account of how you reached your conclusion, could you still defend it?

If the answer is no, the tool did not help your analysis. It replaced it. And you will find that out on the day somebody asks you to explain yourself, which is the worst possible day to find it out.