Half the consultation never reached the transcript: where the audio died
In short
Consult audio is lost in 4 places, and the shape of the gap names which. A clean cut at the end is the operating system reclaiming the microphone; a hole in the middle is a chunk that never uploaded; full duration with unintelligible stretches is distance during examination. Compare recorded seconds against the booked slot first.
Key takeaways
- Compare recorded seconds against the booked slot first. A 4-minute file from a 15-minute appointment is a different fault from a 15-minute file nobody can hear.
- A clean cut at the end is almost always the operating system reclaiming the microphone from a backgrounded app.
- A hole in the middle with clean audio either side is an upload fault, not a capture fault, and no phone setting will fix it.
- Sound level falls by about 6 dB every time the distance doubles, which is why an examination 3 metres from the phone is inaudible.
- You can only run this diagnosis while the raw audio still exists, so the retention rule and the debugging plan have to be written together.
Start with duration, because a short file and a complete-but-poor file are unrelated problems. Pull recorded seconds for the encounter and compare it against the booked slot. A 4-minute file against a 15-minute appointment means capture stopped and you are looking for where. A 14-minute file against the same appointment means capture ran and something else — distance, overlap, a drape over the phone — cost you the content. Teams that skip this comparison spend a week on microphone settings for a problem that was an upload queue.
Once you know which, the shape of the gap names the cause. There are 4, and each leaves a different signature in the file and in the client logs. None of this is about which microphone to buy — a separate question answered in whether the microphone in the room actually matters.
Read the shape of the gap before you read the logs
| What the file looks like | Cause | Log evidence that confirms it | Where the fix lives |
|---|---|---|---|
| Clean cut at the end, everything before it intact | Screen lock or the OS suspending a backgrounded app | App lifecycle transition to background or suspended within seconds of the last audio frame | Client capture: declare a foreground capture service and keep it running |
| Good audio, a silent hole, good audio again | A chunk that never finished uploading | Sequence numbers with a missing index; a failed request with no successful retry | Upload path: durable local queue with retry and gap detection |
| Full duration, low level, unintelligible in stretches | Distance and physical obstruction during examination | Level meter drops for the same minutes the transcript goes empty; no lifecycle events at all | Room setup: where the phone sits, and a second capture point |
| Abrupt stop, no further frames, session still marked open | Another process took the audio input | An audio interruption or route-change event, often at the moment a call arrived | Client capture: handle the interruption, resume, and mark the seam |
The 4th row is the one people misread as the 1st. Both end the audio, but a lock-screen truncation is silent in the logs while an interruption is loud in them — the system tells the app it is losing the input. If the app does not act on that message, capture ends and the clinician has no idea until review.
The clean cut: the operating system reclaimed the microphone
A consultation app that records while the clinician does anything else on the phone is asking the platform for a privilege, not for a permission, and both mobile platforms grant it narrowly. On Android, continuing to capture from the background requires a foreground service declared with the microphone service type — `android:foregroundServiceType="microphone"` in the manifest, the FOREGROUND_SERVICE_MICROPHONE permission, and the RECORD_AUDIO runtime permission granted by the user. Android's own documentation is explicit that RECORD_AUDIO is subject to while-in-use restrictions: the app cannot create a microphone foreground service while it is already in the background, and cannot start one from a boot receiver. In practice that means the service has to exist before the clinician switches away, not after.
On iOS the shape is similar and the vocabulary differs: an app records in the background only if it has declared that it does, and the system will interrupt the audio session for higher-priority audio — an incoming call being the obvious one. Confirm the current rules in Apple's developer documentation rather than a settings guide, because the background-mode requirements have moved more than once. What matters for diagnosis is that both platforms end capture without asking, and an app that treats the microphone as something it holds until it decides otherwise will lose consultations.
The hole in the middle: a chunk that never made it up
Most consultation capture streams in chunks — often 15 to 30 seconds each — so transcription can start before the visit ends. That turns 1 large upload into 30 or 60 small ones, and a clinic corridor with 1 bar of signal will fail some of them. The failure is invisible only if nobody counts: each chunk carries a sequence number, and a transcript with a hole in it is a sequence with a missing index. If your pipeline cannot answer whether all 42 chunks arrived for an encounter, it cannot tell a quiet minute from a lost one.
- Write to durable local storage first, then upload. A chunk that exists only in memory is gone when the app is killed, and the app will be killed.
- Retry with backoff for hours, not seconds. A clinic that loses signal in the basement recovers it on the ground floor, and the file is worth keeping until it does.
- Reconcile server-side by sequence, not by byte count. Assemble the encounter only when the expected indices are present, and mark it incomplete when they are not.
- Show the clinician upload state, not a spinner. 'All 42 segments received' is actionable at the end of a list; a tick that means the app tried is not.
- Never generate a note from a knowingly incomplete transcript without marking it as such.
Sizing makes the case, because the numbers are small enough that holding unsent audio is cheap. At 16 kHz, 16-bit mono, raw audio runs at about 32 kB per second — roughly 29 MB for a 15-minute consultation, or about 2.7 MB compressed for speech at 24 kbps. A day's list of 30 consultations held locally until delivery is confirmed sits well under 100 MB. There is no engineering reason to discard a chunk because its first upload failed.
A transcript with a hole in it looks exactly like a consultation where nobody spoke. The system cannot tell the difference, and neither can the model reading it — only the sequence numbers can.
Present but unintelligible: the examination happens away from the phone
This one has full duration and empty content, which is why duration is the first check. Sound pressure falls by about 6 dB each time distance from the source doubles, so a clinician talking 3 metres away behind a curtain arrives at a fraction of the level of the same clinician at the desk. Add a drape, a running tap, a couch that puts the patient's head below the phone, and the examination minutes come back as fragments — thin exactly where the objective findings were spoken.
The dangerous downstream effect is not the missing examination. It is what a template does with an examination section it was given nothing for: a section that expects to be full tends to get filled, and a generated normal is worse than a blank. That mechanism, and its structural fix, is normals appearing in the review of systems that nobody asked about — read it alongside this page.
Which of the 3 fixes to build first
- Fix background capture first if any incident shows a clean cut. It is the cheapest change, it affects every clinician, and until it is done the other diagnoses are contaminated by truncations you cannot attribute.
- Fix the upload queue second. Durable local write, sequence reconciliation, and an incomplete-encounter state that the note generator refuses to run against silently. This is ordinary pipeline work and it is where AI agents and automation engagements usually start on a scribe stack.
- Fix the room last, because it is per-room and needs a person to walk in. Move the phone off the desk, add a second capture point for the examination area, or accept that examination findings are dictated rather than overheard.
- Then instrument, so the next incident takes 10 minutes instead of a week: recorded seconds, expected seconds, chunk count expected and received, lifecycle events, and interruption events, all on the encounter record.
Two constraints shape all of this. You can only diagnose an incident while the raw audio still exists, and the retention rule is usually written by someone who has never had to debug one — settle it deliberately, which is the argument in who keeps the recordings when the pilot ends. And re-recording a consultation is rarely an option, so the consent script and the failure path must agree in advance about what happens when capture fails, which belongs with what to settle before the first consultation is recorded.
Catching a truncated recording before the clinician goes home
Most of these failures surface at review, so the discovery window is the signing window. A draft generated from 4 minutes of a 15-minute visit can still be repaired from memory on the day, and cannot be repaired at all on Friday. That makes same-day signing a capture-quality control as much as a compliance one, which is why draining the unsigned-note queue the same day belongs in the same project as the upload fix.
Where audio never leaves the clinic — an on-premise or private deployment — the upload path is a local network rather than a mobile one, which changes the failure profile without removing it; the trade-offs are set out in private LLM deployment. The rest of the capture-to-signature chain sits in ambient documentation and the clinical note, inside our healthcare and MedTech work.
Frequently asked questions
Short answers to the follow-ups this page tends to raise.
Why does the recording stop when the phone screen locks?
Because the app lost the right to hold the microphone when it stopped being the foreground app. Both mobile platforms treat background microphone access as a declared, restricted capability rather than something an app keeps by default — on Android it needs a foreground service declared with the microphone type and the matching permissions, and on iOS it needs declared background audio plus handling of the system's interruptions. If none of that is configured, capture ends at the lock screen and the file is a clean truncation with nothing in the logs.
How do I tell an upload failure from a capture failure?
Look at where the gap sits and whether the audio resumes. A capture failure ends the file; an upload failure leaves a hole with good audio on both sides, because the device kept recording while one chunk failed to arrive. The confirming evidence is sequence numbers: if the server received segments 1 to 18 and 22 to 42, three chunks were captured and lost in transit, which is a queue and retry problem rather than anything to do with the microphone.
Should a note be generated from an incomplete transcript?
Yes, but only if the incompleteness is carried through to the clinician. A partial draft is still faster to correct than a blank page, and clinicians can fill gaps from memory on the same day. What must not happen is generating silently from 60% of a consultation and presenting the result as a normal draft, because a reviewer's attention is calibrated by how complete the note looks.
Does a longer chunk size reduce upload failures?
It reduces the number of requests and increases the cost of losing one. A 30-second chunk that fails takes 30 seconds of consultation with it; a 5-minute chunk takes 5 minutes. The variable that decides reliability is whether chunks are written to durable local storage and retried for hours, not how big they are. Choose chunk size for how quickly you want transcription to start, and solve reliability in the queue.
How long should raw consultation audio be kept?
Long enough to diagnose a disputed note, and no longer than your stated purpose supports. Those two pull in opposite directions, which is why it has to be an explicit decision with a named owner rather than a default. Whatever period you set, write it down before launch, state it in the consent script, and make sure the deletion job actually runs.
- audio capture
- ambient documentation
- mobile capture
- upload reliability
The work behind this page
Builds from our portfolio that this page draws on.
Read next
- The review of systems lists normals nobody asked aboutPhantom negatives are a structural fault. A review of systems built as a fixed list of rows will be completed, because completion is what the shape of the section asks for.diagnostic
- Copy-forward: how a chart fills with text nobody wrote todayCopy-forward is the habit of carrying a previous note into today's entry. It is fast, it is defensible, and it slowly makes a chart unreadable to the next clinician.definition
- Diarisation: clinician, patient, and the relative who came alongDiarisation attributes each turn of a consultation to a speaker. Transcription can be flawless while the note still records the daughter's symptom as the patient's.definition
- S, O, A and P: what belongs in each section, and which ones a recording can fillFour sections with four different sources of truth. Subjective is spoken, Objective is half instrument data, and Assessment and Plan are judgement a microphone never hears.definition
- The attestation statement: what a clinician is signing when the draft was machine-writtenA sentence at the foot of a note proves nothing. Attestation is a record: who signed, when, which draft version they saw, what they changed, and what the signature covers.definition
- The HPI's elements, and which of them the conversation actually containsOnset and location are nearly always said out loud. Severity, radiation and timing frequently are not, and no model can transcribe a question nobody asked.definition
Working on something in this space?
Tell us where you are in a sentence or two. We'll tell you honestly whether we're the right team, and what a sensible first slice of the work looks like.
Start the conversation