[GH-ISSUE #4966] [BUG]: Meeting Assistant Transcription Fails on Mac #3112

Closed
opened 2026-02-22 18:32:39 -05:00 by yindo · 16 comments
Owner

Originally created by @treaz on GitHub (Feb 5, 2026).
Original GitHub issue: https://github.com/Mintplex-Labs/anything-llm/issues/4966

How are you running AnythingLLM?

AnythingLLM desktop app

What happened?

Meeting assistant successfully records the meeting, but the transition fails with: Transcription failed. Click to try again.

Are there known steps to reproduce?

Reproduces consistently on my Macbook Air 15-inch, M4, 2025, macos 26.2. AnythingLLM version: Version 1.10.0 (1.10.0)

Originally created by @treaz on GitHub (Feb 5, 2026). Original GitHub issue: https://github.com/Mintplex-Labs/anything-llm/issues/4966 ### How are you running AnythingLLM? AnythingLLM desktop app ### What happened? Meeting assistant successfully records the meeting, but the transition fails with: Transcription failed. Click to try again. ### Are there known steps to reproduce? Reproduces consistently on my Macbook Air 15-inch, M4, 2025, macos 26.2. AnythingLLM version: Version 1.10.0 (1.10.0)
yindo added the possible bugneeds info / can't replicate labels 2026-02-22 18:32:39 -05:00
yindo closed this issue 2026-02-22 18:32:39 -05:00
Author
Owner

@timothycarambat commented on GitHub (Feb 5, 2026):

Can you pull the meeting-assistant-xx-xx-xx.log in the storage directory logs folder?

@timothycarambat commented on GitHub (Feb 5, 2026): Can you pull the meeting-assistant-xx-xx-xx.log in the [storage directory](https://docs.anythingllm.com/installation-desktop/storage) `logs` folder?
Author
Owner

@treaz commented on GitHub (Feb 5, 2026):

@timothycarambat the directory is empty. Any way I could get the info otherwise?

@treaz commented on GitHub (Feb 5, 2026): @timothycarambat the directory is empty. Any way I could get the info otherwise?
Author
Owner

@timothycarambat commented on GitHub (Feb 5, 2026):

The entire directory is empty? That isnt possible since it writes logs there when the application boots. Which directory were you checking - should be something like /Users/<username>/Library/Application Support/anythingllm-desktop/storage/logs

If the app opens at all, logs should be there.

@timothycarambat commented on GitHub (Feb 5, 2026): The entire directory is empty? That isnt possible since it writes logs there when the application boots. Which directory were you checking - should be something like `/Users/<username>/Library/Application Support/anythingllm-desktop/storage/logs` If the app opens at all, logs should be there.
Author
Owner

@treaz commented on GitHub (Feb 6, 2026):

Thanks for helping out @timothycarambat 🙏
You're right, I got confused and was looking in the wrong place. Here it is

meeting-assistant-2026-02-06.log

I'm seeing an error there, but it doesn't say anything to me.
I double checked and the recording is in the right place...
horia@Horias-MacBook-Air logs % ls -altr "/Users/horia/Library/Application Support/anythingllm-desktop/storage/meeting-assistant/34432cd7-ca1a-4af7-8087-a01d1b354946/master-recording.wav" -rw-r--r--@ 1 horia staff 214572 Feb 6 22:52 /Users/horia/Library/Application Support/anythingllm-desktop/storage/meeting-assistant/34432cd7-ca1a-4af7-8087-a01d1b354946/master-recording.wav

@treaz commented on GitHub (Feb 6, 2026): Thanks for helping out @timothycarambat 🙏 You're right, I got confused and was looking in the wrong place. Here it is [meeting-assistant-2026-02-06.log](https://github.com/user-attachments/files/25139095/meeting-assistant-2026-02-06.log) I'm seeing an error there, but it doesn't say anything to me. I double checked and the recording is in the right place... `horia@Horias-MacBook-Air logs % ls -altr "/Users/horia/Library/Application Support/anythingllm-desktop/storage/meeting-assistant/34432cd7-ca1a-4af7-8087-a01d1b354946/master-recording.wav" -rw-r--r--@ 1 horia staff 214572 Feb 6 22:52 /Users/horia/Library/Application Support/anythingllm-desktop/storage/meeting-assistant/34432cd7-ca1a-4af7-8087-a01d1b354946/master-recording.wav`
Author
Owner

@timothycarambat commented on GitHub (Feb 6, 2026):

Interesting, it seems like the server is not booting - I wonder if there is a port collision?
Does lsof -i :9090 report anything? Usually you would expect to see the engine take some time to startup and it seems here it just skips that toally. The binary is signed so that should not be an issue.

Otherwise there is another way to test this issue by trying to run
/Users/horia/Library/Application Support/anythingllm-desktop/storage/engines/meeting-assistant/mac-arm64/tinyscribe
Which should at least attempt to start - if it fails instantly then we know what is going on.

I appreciate the patience! Just trying to rule out any/all possible bugs to narrow this down.

@timothycarambat commented on GitHub (Feb 6, 2026): Interesting, it seems like the server is not booting - I wonder if there is a port collision? Does `lsof -i :9090` report anything? Usually you would expect to see the engine take some time to startup and it seems here it just skips that toally. The binary is signed so that should not be an issue. Otherwise there is another way to test this issue by trying to run `/Users/horia/Library/Application Support/anythingllm-desktop/storage/engines/meeting-assistant/mac-arm64/tinyscribe` Which should at least attempt to start - if it fails instantly then we know what is going on. I appreciate the patience! Just trying to rule out any/all possible bugs to narrow this down.
Author
Owner

@treaz commented on GitHub (Feb 9, 2026):

lsof didn't show anything.
is that ffmpeg warning a problem?

`horia@Horias-MacBook-Air logs % "/Users/horia/Library/Application Support/anythingllm-desktop/storage/engines/meeting-assistant/mac-arm64/tinyscribe"
You did not provide a path to the ffmpeg executable! Audio conversions will fail.
You did not provide a path to the ffmpeg executable! Audio conversions will fail.
Matplotlib is building the font cache; this may take a moment.
[NeMo W 2026-02-09 22:15:19 nemo_logging:405] pydub/utils.py:170: RuntimeWarning: Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work

You did not provide a path to the ffmpeg executable! Audio conversions will fail.
2026-02-09 22:15:19,618 - api.server - INFO - Starting TinyScribe API server on 0.0.0.0:9090
2026-02-09 22:15:19,618 - waitress - INFO - Serving on http://0.0.0.0:9090
`

@treaz commented on GitHub (Feb 9, 2026): lsof didn't show anything. is that ffmpeg warning a problem? `horia@Horias-MacBook-Air logs % "/Users/horia/Library/Application Support/anythingllm-desktop/storage/engines/meeting-assistant/mac-arm64/tinyscribe" You did not provide a path to the ffmpeg executable! Audio conversions will fail. You did not provide a path to the ffmpeg executable! Audio conversions will fail. Matplotlib is building the font cache; this may take a moment. [NeMo W 2026-02-09 22:15:19 nemo_logging:405] pydub/utils.py:170: RuntimeWarning: Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work You did not provide a path to the ffmpeg executable! Audio conversions will fail. 2026-02-09 22:15:19,618 - api.server - INFO - Starting TinyScribe API server on 0.0.0.0:9090 2026-02-09 22:15:19,618 - waitress - INFO - Serving on http://0.0.0.0:9090 `
Author
Owner

@timothycarambat commented on GitHub (Feb 9, 2026):

@treaz Okay so then the binary is not an issue since it is able to boot at all. That ffmpeg warning is not an issue since when we boot the service it starts up with the local ffmpeg used via a command line flag.

@timothycarambat commented on GitHub (Feb 9, 2026): @treaz Okay so then the binary is not an issue since it is able to boot at all. That ffmpeg warning is not an issue since when we boot the service it starts up with the local ffmpeg used via a command line flag.
Author
Owner

@treaz commented on GitHub (Feb 10, 2026):

Ok, I've got more data that I can share. I started with clean logs. Here's the scenario that I was doing:

  • first time, I did a very simple recording directly in the app
  • it failed and it took me to summary page (which is a problem because I would need to regenerate the transcript, not the summary)
  • I went to transcript and clicked retranscribe. Then it worked.

The logs are attached. meeting-assistant-2026-02-10.log

Can you work with this?

@treaz commented on GitHub (Feb 10, 2026): Ok, I've got more data that I can share. I started with clean logs. Here's the scenario that I was doing: * first time, I did a very simple recording directly in the app * it failed and it took me to summary page (which is a problem because I would need to regenerate the transcript, not the summary) * I went to transcript and clicked retranscribe. Then it worked. The logs are attached. [meeting-assistant-2026-02-10.log](https://github.com/user-attachments/files/25201928/meeting-assistant-2026-02-10.log) Can you work with this?
Author
Owner

@MichaelJJeffery commented on GitHub (Feb 10, 2026):

I am experiencing the same issue on MacOS in version 1.10.0. However, clicking retranscribe is not working either. I noticed that in the instance settings menu for AI Providers, the default for transcription is whisper - but the meeting assistant seems to be using parakeet. Could that conflict be causing the issue?

@MichaelJJeffery commented on GitHub (Feb 10, 2026): I am experiencing the same issue on MacOS in version 1.10.0. However, clicking retranscribe is not working either. I noticed that in the instance settings menu for AI Providers, the default for transcription is whisper - but the meeting assistant seems to be using parakeet. Could that conflict be causing the issue?
Author
Owner

@timothycarambat commented on GitHub (Feb 11, 2026):

Hey @MichaelJJeffery no, that is not the issue. This issue (and likely the same for you) has something to do with the tinyscribe backend service not being able to boot but does on re-execution - we need to find the root cause since retranscription works that means it is intermittent as it is the same code-path

@timothycarambat commented on GitHub (Feb 11, 2026): Hey @MichaelJJeffery no, that is not the issue. This issue (and likely the same for you) has something to do with the tinyscribe backend service not being able to boot but does on re-execution - we need to find the root cause since retranscription works that means it is intermittent as it is the same code-path
Author
Owner

@treaz commented on GitHub (Feb 12, 2026):

@timothycarambat, since another user confirms this, can you reopen the issue?

"we need to find the root cause since retranscription works that means it is intermittent as it is the same code-path" -> do you need me to try out anything? I'm also happy to try to debug it if you can direct me in the right way.

@treaz commented on GitHub (Feb 12, 2026): @timothycarambat, since another user confirms this, can you reopen the issue? "we need to find the root cause since retranscription works that means it is intermittent as it is the same code-path" -> do you need me to try out anything? I'm also happy to try to debug it if you can direct me in the right way.
Author
Owner

@jamieede commented on GitHub (Feb 12, 2026):

This is an issue I am encountering on my M4 Max MacBook Pro on 26.2

Duplicate triggers, race condition, and premature Tinyscribe shutdown

Summary

The Meeting Assistant frequently fails to transcribe most meetings. Log analysis reveals three interconnected root causes: (1) duplicate "Master recording file concluded" events spawning concurrent transcription requests, (2) Tinyscribe being killed while a second request is still in flight, and (3) transcription being attempted before Tinyscribe is ready. The failure presents as TypeError: fetch failed and inconsistent UX where the UI may show completion despite failed transcription.

Environment

  • Product: AnythingLLM Desktop (Meeting Assistant)
  • Platform: macOS (arm64) — mac-arm64/tinyscribe
  • Model: parakeet-tdt-0.6b-v3.nemo
  • Speaker identification: Enabled (using /inference endpoint)
  • RTT (Real-Time Transcription): Disabled

Root Cause Analysis

Issue 1: Duplicate "Master recording file concluded" event

When a recording ends, the event fires twice in quick succession, causing two transcription requests for the same master-recording.wav.

Evidence — meeting-assistant-2026-02-11.log (lines 347–349):

347| "Master recording file concluded."
348| "Speaker identification enabled - using /inference endpoint"
349| "Master recording file concluded."   ← DUPLICATE

Issue 2: Tinyscribe killed while second request is waiting

The first request completes successfully, then Tinyscribe is torn down. The second request (which was waiting on the concurrent-transcription lock) then tries to call the server and fails with fetch failed because the server is already gone.

Evidence — meeting-assistant-2026-02-11.log (lines 350–318):

Line Log message Timestamp (from Tinyscribe stderr)
350 A concurrent transcription is in progress. Waiting 500ms (1/30)...
351 Running transcription: Transcribing Master Recording WAV file...
355 [Tinyscribe] Running transcription and diarization in parallel! 2026-02-11 13:56:17,677
356–363 Further requests wait 2.2s, 9.1s, 60.2s, 60.1s (retries 3–6/30)
364 Transcription completed in 52.39 seconds ~13:57:10
311 master-recording.wav - Transcription complete in 94531ms
314 Tinyscribe server process killed.
315 Tinyscribe process closed with code: 0
317 master-recording.wav - Transcription failed! TypeError: fetch failed

Logical breadcrumb: First request succeeds → Tinyscribe killed → second request (waiting in queue) calls Tinyscribe → server is gone → fetch failed.

Issue 3: Transcription attempted before Tinyscribe is ready

In another scenario, transcription is requested as soon as the WAV is written, while Tinyscribe is still starting (e.g. Matplotlib font cache). The first request fails immediately; a manual retranscription later succeeds.

Evidence — meeting-assistant-2026-02-10.log (lines 10–18):

Line Log message
10 Wrote WAV buffer to: .../master-recording.wav
11 Master recording file concluded.
12 Speaker identification enabled - using /inference endpoint
13 master-recording.wav - Transcription failed! TypeError: fetch failed
14 Error transcribing WAV file: null
15 Master recording transcription complete event sent to backendSent even on failure
16 Tinyscribe server process killed.

Contrast with retranscription (lines 22–31):

Line Log message Tinyscribe timestamp
22 Checking server health (1/25) through (5/25)
27 [Tinyscribe] Starting TinyScribe API server on 0.0.0.0:53974 2026-02-10 07:44:45,391
30 Server health check passed - service is now online after 5 attempts!
33 Running transcription and diarization in parallel! 2026-02-10 07:44:47,293
41 master-recording.wav - Transcription complete in 50435ms

Issue 4: Completion event sent on failure

The backend receives "Master recording transcription complete" even when transcription fails, which can mislead the UI and state.

Evidence — meeting-assistant-2026-02-11.log (lines 313, 318):

313| "Master recording transcription complete event sent to backend: 44961d9b-0a4b-4297-b781-f41636143821"  ← After SUCCESS
...
317| "master-recording.wav - Transcription failed! TypeError: fetch failed"
318| "Master recording transcription complete event sent to backend: 44961d9b-0a4b-4297-b781-f41636143821"  ← After FAILURE

Timeline (2026-02-11 session)

Time Event
13:00:29 Tinyscribe starts (Starting TinyScribe API server on 0.0.0.0:56781)
13:00–13:56 Recording in progress (338 partial WAV chunks skipped; RTT disabled)
~13:56:17 Master recording concluded; duplicate event triggers two transcription requests
13:56:17 First request starts; Tinyscribe begins transcription + diarization
13:56:17–13:57:10 Second request waits on "concurrent transcription" lock (up to 6 retries, ~2.5 min total)
~13:57:10 First transcription completes (~52 s processing for ~56 min audio)
~13:57:10 Tinyscribe process killed
~13:57:10 Second request runs its fetch → TypeError: fetch failed (server gone)
~13:57:10 "Master recording transcription complete" sent again (on failure)

Log citations (verbatim)

Citation 1: Duplicate event (2026-02-11)

{"level":"info","message":"Master recording file concluded.","service":"meeting-assistant"}
{"level":"info","message":"Speaker identification enabled - using /inference endpoint","service":"meeting-assistant"}
{"level":"info","message":"Master recording file concluded.","service":"meeting-assistant"}

Citation 2: Concurrent requests and failure (2026-02-11)

{"level":"info","message":"A concurrent transcription is in progress. Waiting 500ms (1/30)...","service":"meeting-assistant"}
{"level":"info","message":"Running transcription: Transcribing Master Recording WAV file: /Users/jamieede/Library/Application Support/anythingllm-desktop/storage/meeting-assistant/44961d9b-0a4b-4297-b781-f41636143821/master-recording.wav","service":"meeting-assistant"}
{"level":"info","message":"[Tinyscribe] stderr 2026-02-11 13:56:17,677 - api.server - INFO - Running transcription and diarization in parallel!\n","service":"meeting-assistant"}
{"level":"info","message":"master-recording.wav - Transcription complete in 94531ms","service":"meeting-assistant"}
{"level":"info","message":"Master recording transcription complete event sent to backend: 44961d9b-0a4b-4297-b781-f41636143821","service":"meeting-assistant"}
{"level":"info","message":"Tinyscribe server process killed.","service":"meeting-assistant"}
{"level":"info","message":"Tinyscribe process closed with code: 0","service":"meeting-assistant"}
{"level":"info","message":"Speaker identification enabled - using /inference endpoint","service":"meeting-assistant"}
{"level":"info","message":"master-recording.wav - Transcription failed! TypeError: fetch failed\n    at node:internal/deps/undici/undici:13185:13\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)","service":"meeting-assistant"}
{"level":"info","message":"Error transcribing WAV file: null","service":"meeting-assistant"}
{"level":"info","message":"Master recording transcription complete event sent to backend: 44961d9b-0a4b-4297-b781-f41636143821","service":"meeting-assistant"}

Citation 3: Premature transcription (2026-02-10)

{"level":"info","message":"Wrote WAV buffer to: /Users/jamieede/Library/Application Support/anythingllm-desktop/storage/meeting-assistant/401ed309-0b9a-4a5d-a373-797c71015ac0/master-recording.wav","service":"meeting-assistant"}
{"level":"info","message":"Master recording file concluded.","service":"meeting-assistant"}
{"level":"info","message":"Speaker identification enabled - using /inference endpoint","service":"meeting-assistant"}
{"level":"info","message":"master-recording.wav - Transcription failed! TypeError: fetch failed\n    at node:internal/deps/undici/undici:13185:13\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)","service":"meeting-assistant"}

Suggested fixes

  1. Deduplicate "Master recording file concluded" — Ensure transcription is triggered only once per recording (e.g. guard/debounce or single handler).
  2. Defer Tinyscribe shutdown — Do not kill Tinyscribe until all in-flight and queued transcription requests for that recording have finished or timed out.
  3. Wait for Tinyscribe readiness — Before starting transcription, wait for a health check (similar to retranscription flow: "Server health check passed - service is now online").
  4. Avoid completion event on failure — Only send "Master recording transcription complete" when transcription actually succeeds.

Reproducibility

  • Observed: Most of the time (user reports "most of the time, not all")
  • Session lengths: Both short (~5.6 s) and long (~56 min) recordings
  • Scenarios: Live recording end and retranscription

Additional context

  • First transcription can succeed while a duplicate request fails, so the raw JSON may exist (master-recording.json) even when the UI reports failure.
  • Retranscription via "Retranscribing existing file" works when Tinyscribe is started fresh and health-checked before use.
@jamieede commented on GitHub (Feb 12, 2026): This is an issue I am encountering on my M4 Max MacBook Pro on 26.2 Duplicate triggers, race condition, and premature Tinyscribe shutdown ## Summary The Meeting Assistant frequently fails to transcribe **most** meetings. Log analysis reveals three interconnected root causes: (1) duplicate "Master recording file concluded" events spawning concurrent transcription requests, (2) Tinyscribe being killed while a second request is still in flight, and (3) transcription being attempted before Tinyscribe is ready. The failure presents as `TypeError: fetch failed` and inconsistent UX where the UI may show completion despite failed transcription. ## Environment - **Product:** AnythingLLM Desktop (Meeting Assistant) - **Platform:** macOS (arm64) — `mac-arm64/tinyscribe` - **Model:** parakeet-tdt-0.6b-v3.nemo - **Speaker identification:** Enabled (using `/inference` endpoint) - **RTT (Real-Time Transcription):** Disabled ## Root Cause Analysis ### Issue 1: Duplicate "Master recording file concluded" event When a recording ends, the event fires twice in quick succession, causing two transcription requests for the same `master-recording.wav`. **Evidence — `meeting-assistant-2026-02-11.log` (lines 347–349):** ``` 347| "Master recording file concluded." 348| "Speaker identification enabled - using /inference endpoint" 349| "Master recording file concluded." ← DUPLICATE ``` ### Issue 2: Tinyscribe killed while second request is waiting The first request completes successfully, then Tinyscribe is torn down. The second request (which was waiting on the concurrent-transcription lock) then tries to call the server and fails with `fetch failed` because the server is already gone. **Evidence — `meeting-assistant-2026-02-11.log` (lines 350–318):** | Line | Log message | Timestamp (from Tinyscribe stderr) | |------|-------------|-----------------------------------| | 350 | `A concurrent transcription is in progress. Waiting 500ms (1/30)...` | — | | 351 | `Running transcription: Transcribing Master Recording WAV file...` | — | | 355 | `[Tinyscribe] Running transcription and diarization in parallel!` | **2026-02-11 13:56:17,677** | | 356–363 | Further requests wait 2.2s, 9.1s, 60.2s, 60.1s (retries 3–6/30) | — | | 364 | `Transcription completed in 52.39 seconds` | ~13:57:10 | | 311 | `master-recording.wav - Transcription complete in 94531ms` | — | | 314 | `Tinyscribe server process killed.` | — | | 315 | `Tinyscribe process closed with code: 0` | — | | 317 | `master-recording.wav - Transcription failed! TypeError: fetch failed` | — | **Logical breadcrumb:** First request succeeds → Tinyscribe killed → second request (waiting in queue) calls Tinyscribe → server is gone → `fetch failed`. ### Issue 3: Transcription attempted before Tinyscribe is ready In another scenario, transcription is requested as soon as the WAV is written, while Tinyscribe is still starting (e.g. Matplotlib font cache). The first request fails immediately; a manual retranscription later succeeds. **Evidence — `meeting-assistant-2026-02-10.log` (lines 10–18):** | Line | Log message | |------|-------------| | 10 | `Wrote WAV buffer to: .../master-recording.wav` | | 11 | `Master recording file concluded.` | | 12 | `Speaker identification enabled - using /inference endpoint` | | 13 | `master-recording.wav - Transcription failed! TypeError: fetch failed` | | 14 | `Error transcribing WAV file: null` | | 15 | `Master recording transcription complete event sent to backend` ← **Sent even on failure** | | 16 | `Tinyscribe server process killed.` | **Contrast with retranscription (lines 22–31):** | Line | Log message | Tinyscribe timestamp | |------|-------------|----------------------| | 22 | `Checking server health (1/25)` through `(5/25)` | — | | 27 | `[Tinyscribe] Starting TinyScribe API server on 0.0.0.0:53974` | **2026-02-10 07:44:45,391** | | 30 | `Server health check passed - service is now online after 5 attempts!` | — | | 33 | `Running transcription and diarization in parallel!` | **2026-02-10 07:44:47,293** | | 41 | `master-recording.wav - Transcription complete in 50435ms` | — | ### Issue 4: Completion event sent on failure The backend receives "Master recording transcription complete" even when transcription fails, which can mislead the UI and state. **Evidence — `meeting-assistant-2026-02-11.log` (lines 313, 318):** ``` 313| "Master recording transcription complete event sent to backend: 44961d9b-0a4b-4297-b781-f41636143821" ← After SUCCESS ... 317| "master-recording.wav - Transcription failed! TypeError: fetch failed" 318| "Master recording transcription complete event sent to backend: 44961d9b-0a4b-4297-b781-f41636143821" ← After FAILURE ``` ## Timeline (2026-02-11 session) | Time | Event | |------|-------| | **13:00:29** | Tinyscribe starts (`Starting TinyScribe API server on 0.0.0.0:56781`) | | **13:00–13:56** | Recording in progress (338 partial WAV chunks skipped; RTT disabled) | | **~13:56:17** | Master recording concluded; duplicate event triggers two transcription requests | | **13:56:17** | First request starts; Tinyscribe begins transcription + diarization | | **13:56:17–13:57:10** | Second request waits on "concurrent transcription" lock (up to 6 retries, ~2.5 min total) | | **~13:57:10** | First transcription completes (~52 s processing for ~56 min audio) | | **~13:57:10** | Tinyscribe process killed | | **~13:57:10** | Second request runs its fetch → `TypeError: fetch failed` (server gone) | | **~13:57:10** | "Master recording transcription complete" sent again (on failure) | ## Log citations (verbatim) ### Citation 1: Duplicate event (2026-02-11) ```json {"level":"info","message":"Master recording file concluded.","service":"meeting-assistant"} {"level":"info","message":"Speaker identification enabled - using /inference endpoint","service":"meeting-assistant"} {"level":"info","message":"Master recording file concluded.","service":"meeting-assistant"} ``` ### Citation 2: Concurrent requests and failure (2026-02-11) ```json {"level":"info","message":"A concurrent transcription is in progress. Waiting 500ms (1/30)...","service":"meeting-assistant"} {"level":"info","message":"Running transcription: Transcribing Master Recording WAV file: /Users/jamieede/Library/Application Support/anythingllm-desktop/storage/meeting-assistant/44961d9b-0a4b-4297-b781-f41636143821/master-recording.wav","service":"meeting-assistant"} {"level":"info","message":"[Tinyscribe] stderr 2026-02-11 13:56:17,677 - api.server - INFO - Running transcription and diarization in parallel!\n","service":"meeting-assistant"} ``` ```json {"level":"info","message":"master-recording.wav - Transcription complete in 94531ms","service":"meeting-assistant"} {"level":"info","message":"Master recording transcription complete event sent to backend: 44961d9b-0a4b-4297-b781-f41636143821","service":"meeting-assistant"} {"level":"info","message":"Tinyscribe server process killed.","service":"meeting-assistant"} {"level":"info","message":"Tinyscribe process closed with code: 0","service":"meeting-assistant"} {"level":"info","message":"Speaker identification enabled - using /inference endpoint","service":"meeting-assistant"} {"level":"info","message":"master-recording.wav - Transcription failed! TypeError: fetch failed\n at node:internal/deps/undici/undici:13185:13\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)","service":"meeting-assistant"} {"level":"info","message":"Error transcribing WAV file: null","service":"meeting-assistant"} {"level":"info","message":"Master recording transcription complete event sent to backend: 44961d9b-0a4b-4297-b781-f41636143821","service":"meeting-assistant"} ``` ### Citation 3: Premature transcription (2026-02-10) ```json {"level":"info","message":"Wrote WAV buffer to: /Users/jamieede/Library/Application Support/anythingllm-desktop/storage/meeting-assistant/401ed309-0b9a-4a5d-a373-797c71015ac0/master-recording.wav","service":"meeting-assistant"} {"level":"info","message":"Master recording file concluded.","service":"meeting-assistant"} {"level":"info","message":"Speaker identification enabled - using /inference endpoint","service":"meeting-assistant"} {"level":"info","message":"master-recording.wav - Transcription failed! TypeError: fetch failed\n at node:internal/deps/undici/undici:13185:13\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)","service":"meeting-assistant"} ``` ## Suggested fixes 1. **Deduplicate "Master recording file concluded"** — Ensure transcription is triggered only once per recording (e.g. guard/debounce or single handler). 2. **Defer Tinyscribe shutdown** — Do not kill Tinyscribe until all in-flight and queued transcription requests for that recording have finished or timed out. 3. **Wait for Tinyscribe readiness** — Before starting transcription, wait for a health check (similar to retranscription flow: "Server health check passed - service is now online"). 4. **Avoid completion event on failure** — Only send "Master recording transcription complete" when transcription actually succeeds. ## Reproducibility - **Observed:** Most of the time (user reports "most of the time, not all") - **Session lengths:** Both short (~5.6 s) and long (~56 min) recordings - **Scenarios:** Live recording end and retranscription ## Additional context - First transcription can succeed while a duplicate request fails, so the raw JSON may exist (`master-recording.json`) even when the UI reports failure. - Retranscription via "Retranscribing existing file" works when Tinyscribe is started fresh and health-checked before use.
yindo changed title from [BUG]: Meeting Assistant Transcription Fails on Mac to [GH-ISSUE #4966] [BUG]: Meeting Assistant Transcription Fails on Mac 2026-06-05 14:50:22 -04:00
Author
Owner

@herkocoomans commented on GitHub (Mar 18, 2026):

I have the same issue on AnythingLLM desktop 1.11.1 MacMini M1, MacOS 26.3.1, using Ollama latest. Meeting recording set with speaker recognition. Meeting transcription works, summarizing gives me the same error. Logfile added. Please reopen bug.

meeting-assistant-2026-03-18.log

<!-- gh-comment-id:4083639642 --> @herkocoomans commented on GitHub (Mar 18, 2026): I have the same issue on AnythingLLM desktop 1.11.1 MacMini M1, MacOS 26.3.1, using Ollama latest. Meeting recording set with speaker recognition. Meeting transcription works, summarizing gives me the same error. Logfile added. Please reopen bug. [meeting-assistant-2026-03-18.log](https://github.com/user-attachments/files/26091901/meeting-assistant-2026-03-18.log)
Author
Owner

@timothycarambat commented on GitHub (Mar 18, 2026):

@herkocoomans @jamieede We just patched this (1.11.2), the likely culprit was partially downloaded models in the storage/models/meeting-assistant directory that would obviously fail for transcription since they are incomplete/corrupt.

We now verify the integrity of these files before processing and will download missing files as needed to repair them so transcription no longer fails.

<!-- gh-comment-id:4084483518 --> @timothycarambat commented on GitHub (Mar 18, 2026): @herkocoomans @jamieede We just patched this (1.11.2), the likely culprit was partially downloaded models in the `storage/models/meeting-assistant` directory that would obviously fail for transcription since they are incomplete/corrupt. We now verify the integrity of these files before processing and will download missing files as needed to repair them so transcription no longer fails.
Author
Owner

@treaz commented on GitHub (Mar 19, 2026):

@timothycarambat thank you for trying to fix this. Transcript seems to be working, but the summary tab says "It seems there is no meeting transcript provided." Attached logs again. Could you take a look?

backend-2026-03-19.log
meeting-assistant-2026-03-19.log

<!-- gh-comment-id:4087914167 --> @treaz commented on GitHub (Mar 19, 2026): @timothycarambat thank you for trying to fix this. Transcript seems to be working, but the summary tab says "It seems there is no meeting transcript provided." Attached logs again. Could you take a look? [backend-2026-03-19.log](https://github.com/user-attachments/files/26106739/backend-2026-03-19.log) [meeting-assistant-2026-03-19.log](https://github.com/user-attachments/files/26106740/meeting-assistant-2026-03-19.log)
Author
Owner

@stefanzilske commented on GitHub (Apr 11, 2026):

Hey I have similar issues on macOS 26.4.1 with AnythingLLM v1.12.0, here is a sample log:

{"level":"info","message":"Initialized & Registered","service":"meeting-assistant"}
{"level":"info","message":"FFMPEG bootstrapped successfully!","service":"meeting-assistant"}
{"level":"info","message":"Getting system performance rating...","service":"meeting-assistant"}
{"level":"info","message":"All recording data will be saved to: /Users/xxx/Library/Application Support/anythingllm-desktop/storage/meeting-assistant/b8258b45-cec3-437a-99e8-a7fec19fdeb9","service":"meeting-assistant"}
{"level":"info","message":"Expecting Tinyscribe server executable to be at: /Applications/AnythingLLM.app/Contents/Resources/meeting-assistant/mac-arm64/tinyscribe","service":"meeting-assistant"}
{"level":"info","message":"Running Tinyscribe with model: parakeet-tdt-0.6b-v3-onnx","service":"meeting-assistant"}
{"level":"info","message":"Tinyscribe starting with arguments: --ffmpeg /Users/xxx/Library/Application Support/anythingllm-desktop/storage/engines/ffmpeg/mac-arm64 -d /Users/xxx/Library/Application Support/anythingllm-desktop/storage/models/meeting-assistant --port 9090","service":"meeting-assistant"}
{"level":"info","message":"[Tinyscribe] stdout \u001b[2m2026-04-11T12:42:58.280115Z\u001b[0m \u001b[32m INFO\u001b[0m \u001b[2mtinyscribe_rs::config\u001b[0m\u001b[2m:\u001b[0m Transcription device: auto -> Cpu (platform default)\n\u001b[2m2026-04-11T12:42:58.280144Z\u001b[0m \u001b[32m INFO\u001b[0m \u001b[2mtinyscribe_rs::config\u001b[0m\u001b[2m:\u001b[0m Diarization device: auto -> Coreml (platform default)\n\u001b[2m2026-04-11T12:42:58.280157Z\u001b[0m \u001b[32m INFO\u001b[0m \u001b[2mtinyscribe_rs\u001b[0m\u001b[2m:\u001b[0m FFMPEG available at: \"/Users/xxx/Library/Application Support/anythingllm-desktop/storage/engines/ffmpeg/mac-arm64/ffmpeg\"\n","service":"meeting-assistant"}
{"level":"info","message":"[Tinyscribe] stdout \u001b[2m2026-04-11T12:42:58.280308Z\u001b[0m \u001b[32m INFO\u001b[0m \u001b[2mtinyscribe_rs::server\u001b[0m\u001b[2m:\u001b[0m Starting TinyScribe API server on 0.0.0.0:9090\n\u001b[2m2026-04-11T12:42:58.280310Z\u001b[0m \u001b[32m INFO\u001b[0m \u001b[2mtinyscribe_rs::server\u001b[0m\u001b[2m:\u001b[0m Model directory: \"/Users/xxx/Library/Application Support/anythingllm-desktop/storage/models/meeting-assistant\"\n","service":"meeting-assistant"}
{"level":"info","message":"[RTT: Disabled] Skipping transcription for partial WAV file: partial-1.wav","service":"meeting-assistant"}
{"level":"info","message":"[RTT: Disabled] Skipping transcription for partial WAV file: partial-2.wav","service":"meeting-assistant"}
{"level":"info","message":"Wrote WAV buffer to: /Users/xxx/Library/Application Support/anythingllm-desktop/storage/meeting-assistant/b8258b45-cec3-437a-99e8-a7fec19fdeb9/master-recording.wav","service":"meeting-assistant"}
{"level":"info","message":"Wrote WAV buffer to: /Users/xxx/Library/Application Support/anythingllm-desktop/storage/meeting-assistant/b8258b45-cec3-437a-99e8-a7fec19fdeb9/master-recording.wav","service":"meeting-assistant"}
{"level":"info","message":"Master recording file concluded.","service":"meeting-assistant"}
{"level":"info","message":"Speaker identification disabled - using /transcribe endpoint","service":"meeting-assistant"}
{"level":"info","message":"Master recording file concluded.","service":"meeting-assistant"}
{"level":"info","message":"A concurrent transcription is in progress. Waiting 500ms (1/30)...","service":"meeting-assistant"}
{"level":"info","message":"Running transcription: Transcribing Master Recording WAV file: /Users/xxx/Library/Application Support/anythingllm-desktop/storage/meeting-assistant/b8258b45-cec3-437a-99e8-a7fec19fdeb9/master-recording.wav","service":"meeting-assistant"}
{"level":"info","message":"[Tinyscribe] stdout \u001b[2m2026-04-11T12:43:06.617797Z\u001b[0m \u001b[32m INFO\u001b[0m \u001b[2mtinyscribe_rs::handlers::transcribe\u001b[0m\u001b[2m:\u001b[0m Transcribing file: /Users/xxx/Library/Application Support/anythingllm-desktop/storage/meeting-assistant/b8258b45-cec3-437a-99e8-a7fec19fdeb9/master-recording.wav (797228 bytes, persist_model=false)\n","service":"meeting-assistant"}
{"level":"info","message":"A concurrent transcription is in progress. Waiting 907ms (2/30)...","service":"meeting-assistant"}
{"level":"info","message":"Running transcription: Transcribing Master Recording WAV file: /Users/xxx/Library/Application Support/anythingllm-desktop/storage/meeting-assistant/b8258b45-cec3-437a-99e8-a7fec19fdeb9/master-recording.wav","service":"meeting-assistant"}
{"level":"info","message":"[Tinyscribe] stdout \u001b[2m2026-04-11T12:43:07.174248Z\u001b[0m \u001b[32m INFO\u001b[0m \u001b[2mtinyscribe_rs::transcriber::engine\u001b[0m\u001b[2m:\u001b[0m Converting audio to mono 16kHz: 1ch 48000Hz -> 1ch 16000Hz\n","service":"meeting-assistant"}
{"level":"info","message":"[Tinyscribe] stdout \u001b[2m2026-04-11T12:43:07.174839Z\u001b[0m \u001b[31mERROR\u001b[0m \u001b[2mtinyscribe_rs::handlers::transcribe\u001b[0m\u001b[2m:\u001b[0m Transcription failed: FFmpeg error: IO error: No such file or directory (os error 2)\n","service":"meeting-assistant"}
{"level":"info","message":"master-recording.wav - Transcription failed! TypeError: Cannot read properties of undefined (reading 'map')\n    at e.postProcessTranscriptionResponse (/Applications/AnythingLLM.app/Contents/Resources/app.asar/dist-electron/main/index.js:39:32699)\n    at /Applications/AnythingLLM.app/Contents/Resources/app.asar/dist-electron/main/index.js:39:29909\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)","service":"meeting-assistant"}
{"level":"info","message":"Error transcribing WAV file: TypeError: Cannot read properties of undefined (reading 'map')\n    at e.postProcessTranscriptionResponse (/Applications/AnythingLLM.app/Contents/Resources/app.asar/dist-electron/main/index.js:39:32699)\n    at /Applications/AnythingLLM.app/Contents/Resources/app.asar/dist-electron/main/index.js:39:29909\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)","service":"meeting-assistant"}
{"level":"info","message":"Master recording transcription complete event sent to backend: b8258b45-cec3-437a-99e8-a7fec19fdeb9","service":"meeting-assistant"}
{"level":"info","message":"Tinyscribe server process killed.","service":"meeting-assistant"}
{"level":"info","message":"[Tinyscribe] Process exited - code: null, signal: SIGTERM","service":"meeting-assistant"}
{"level":"info","message":"[Tinyscribe] Process closed - code: null, signal: SIGTERM","service":"meeting-assistant"}
{"level":"info","message":"[Tinyscribe] Killed by signal: SIGTERM (SIGTERM=graceful shutdown, SIGKILL=forced kill, SIGABRT=crash/abort, SIGSEGV=segfault)","service":"meeting-assistant"}
{"level":"info","message":"Speaker identification disabled - using /transcribe endpoint","service":"meeting-assistant"}
{"level":"info","message":"master-recording.wav - Transcription failed! TypeError: fetch failed\n    at node:internal/deps/undici/undici:13185:13\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)","service":"meeting-assistant"}
{"level":"info","message":"Error transcribing WAV file: TypeError: fetch failed\n    at node:internal/deps/undici/undici:13185:13\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)","service":"meeting-assistant"}
{"level":"info","message":"Master recording transcription complete event sent to backend: b8258b45-cec3-437a-99e8-a7fec19fdeb9","service":"meeting-assistant"}

Hope the helps! I never got a transcript nor a summary, pretty sad actually.

<!-- gh-comment-id:4229448605 --> @stefanzilske commented on GitHub (Apr 11, 2026): Hey I have similar issues on macOS 26.4.1 with AnythingLLM v1.12.0, here is a sample log: ``` {"level":"info","message":"Initialized & Registered","service":"meeting-assistant"} {"level":"info","message":"FFMPEG bootstrapped successfully!","service":"meeting-assistant"} {"level":"info","message":"Getting system performance rating...","service":"meeting-assistant"} {"level":"info","message":"All recording data will be saved to: /Users/xxx/Library/Application Support/anythingllm-desktop/storage/meeting-assistant/b8258b45-cec3-437a-99e8-a7fec19fdeb9","service":"meeting-assistant"} {"level":"info","message":"Expecting Tinyscribe server executable to be at: /Applications/AnythingLLM.app/Contents/Resources/meeting-assistant/mac-arm64/tinyscribe","service":"meeting-assistant"} {"level":"info","message":"Running Tinyscribe with model: parakeet-tdt-0.6b-v3-onnx","service":"meeting-assistant"} {"level":"info","message":"Tinyscribe starting with arguments: --ffmpeg /Users/xxx/Library/Application Support/anythingllm-desktop/storage/engines/ffmpeg/mac-arm64 -d /Users/xxx/Library/Application Support/anythingllm-desktop/storage/models/meeting-assistant --port 9090","service":"meeting-assistant"} {"level":"info","message":"[Tinyscribe] stdout \u001b[2m2026-04-11T12:42:58.280115Z\u001b[0m \u001b[32m INFO\u001b[0m \u001b[2mtinyscribe_rs::config\u001b[0m\u001b[2m:\u001b[0m Transcription device: auto -> Cpu (platform default)\n\u001b[2m2026-04-11T12:42:58.280144Z\u001b[0m \u001b[32m INFO\u001b[0m \u001b[2mtinyscribe_rs::config\u001b[0m\u001b[2m:\u001b[0m Diarization device: auto -> Coreml (platform default)\n\u001b[2m2026-04-11T12:42:58.280157Z\u001b[0m \u001b[32m INFO\u001b[0m \u001b[2mtinyscribe_rs\u001b[0m\u001b[2m:\u001b[0m FFMPEG available at: \"/Users/xxx/Library/Application Support/anythingllm-desktop/storage/engines/ffmpeg/mac-arm64/ffmpeg\"\n","service":"meeting-assistant"} {"level":"info","message":"[Tinyscribe] stdout \u001b[2m2026-04-11T12:42:58.280308Z\u001b[0m \u001b[32m INFO\u001b[0m \u001b[2mtinyscribe_rs::server\u001b[0m\u001b[2m:\u001b[0m Starting TinyScribe API server on 0.0.0.0:9090\n\u001b[2m2026-04-11T12:42:58.280310Z\u001b[0m \u001b[32m INFO\u001b[0m \u001b[2mtinyscribe_rs::server\u001b[0m\u001b[2m:\u001b[0m Model directory: \"/Users/xxx/Library/Application Support/anythingllm-desktop/storage/models/meeting-assistant\"\n","service":"meeting-assistant"} {"level":"info","message":"[RTT: Disabled] Skipping transcription for partial WAV file: partial-1.wav","service":"meeting-assistant"} {"level":"info","message":"[RTT: Disabled] Skipping transcription for partial WAV file: partial-2.wav","service":"meeting-assistant"} {"level":"info","message":"Wrote WAV buffer to: /Users/xxx/Library/Application Support/anythingllm-desktop/storage/meeting-assistant/b8258b45-cec3-437a-99e8-a7fec19fdeb9/master-recording.wav","service":"meeting-assistant"} {"level":"info","message":"Wrote WAV buffer to: /Users/xxx/Library/Application Support/anythingllm-desktop/storage/meeting-assistant/b8258b45-cec3-437a-99e8-a7fec19fdeb9/master-recording.wav","service":"meeting-assistant"} {"level":"info","message":"Master recording file concluded.","service":"meeting-assistant"} {"level":"info","message":"Speaker identification disabled - using /transcribe endpoint","service":"meeting-assistant"} {"level":"info","message":"Master recording file concluded.","service":"meeting-assistant"} {"level":"info","message":"A concurrent transcription is in progress. Waiting 500ms (1/30)...","service":"meeting-assistant"} {"level":"info","message":"Running transcription: Transcribing Master Recording WAV file: /Users/xxx/Library/Application Support/anythingllm-desktop/storage/meeting-assistant/b8258b45-cec3-437a-99e8-a7fec19fdeb9/master-recording.wav","service":"meeting-assistant"} {"level":"info","message":"[Tinyscribe] stdout \u001b[2m2026-04-11T12:43:06.617797Z\u001b[0m \u001b[32m INFO\u001b[0m \u001b[2mtinyscribe_rs::handlers::transcribe\u001b[0m\u001b[2m:\u001b[0m Transcribing file: /Users/xxx/Library/Application Support/anythingllm-desktop/storage/meeting-assistant/b8258b45-cec3-437a-99e8-a7fec19fdeb9/master-recording.wav (797228 bytes, persist_model=false)\n","service":"meeting-assistant"} {"level":"info","message":"A concurrent transcription is in progress. Waiting 907ms (2/30)...","service":"meeting-assistant"} {"level":"info","message":"Running transcription: Transcribing Master Recording WAV file: /Users/xxx/Library/Application Support/anythingllm-desktop/storage/meeting-assistant/b8258b45-cec3-437a-99e8-a7fec19fdeb9/master-recording.wav","service":"meeting-assistant"} {"level":"info","message":"[Tinyscribe] stdout \u001b[2m2026-04-11T12:43:07.174248Z\u001b[0m \u001b[32m INFO\u001b[0m \u001b[2mtinyscribe_rs::transcriber::engine\u001b[0m\u001b[2m:\u001b[0m Converting audio to mono 16kHz: 1ch 48000Hz -> 1ch 16000Hz\n","service":"meeting-assistant"} {"level":"info","message":"[Tinyscribe] stdout \u001b[2m2026-04-11T12:43:07.174839Z\u001b[0m \u001b[31mERROR\u001b[0m \u001b[2mtinyscribe_rs::handlers::transcribe\u001b[0m\u001b[2m:\u001b[0m Transcription failed: FFmpeg error: IO error: No such file or directory (os error 2)\n","service":"meeting-assistant"} {"level":"info","message":"master-recording.wav - Transcription failed! TypeError: Cannot read properties of undefined (reading 'map')\n at e.postProcessTranscriptionResponse (/Applications/AnythingLLM.app/Contents/Resources/app.asar/dist-electron/main/index.js:39:32699)\n at /Applications/AnythingLLM.app/Contents/Resources/app.asar/dist-electron/main/index.js:39:29909\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)","service":"meeting-assistant"} {"level":"info","message":"Error transcribing WAV file: TypeError: Cannot read properties of undefined (reading 'map')\n at e.postProcessTranscriptionResponse (/Applications/AnythingLLM.app/Contents/Resources/app.asar/dist-electron/main/index.js:39:32699)\n at /Applications/AnythingLLM.app/Contents/Resources/app.asar/dist-electron/main/index.js:39:29909\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)","service":"meeting-assistant"} {"level":"info","message":"Master recording transcription complete event sent to backend: b8258b45-cec3-437a-99e8-a7fec19fdeb9","service":"meeting-assistant"} {"level":"info","message":"Tinyscribe server process killed.","service":"meeting-assistant"} {"level":"info","message":"[Tinyscribe] Process exited - code: null, signal: SIGTERM","service":"meeting-assistant"} {"level":"info","message":"[Tinyscribe] Process closed - code: null, signal: SIGTERM","service":"meeting-assistant"} {"level":"info","message":"[Tinyscribe] Killed by signal: SIGTERM (SIGTERM=graceful shutdown, SIGKILL=forced kill, SIGABRT=crash/abort, SIGSEGV=segfault)","service":"meeting-assistant"} {"level":"info","message":"Speaker identification disabled - using /transcribe endpoint","service":"meeting-assistant"} {"level":"info","message":"master-recording.wav - Transcription failed! TypeError: fetch failed\n at node:internal/deps/undici/undici:13185:13\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)","service":"meeting-assistant"} {"level":"info","message":"Error transcribing WAV file: TypeError: fetch failed\n at node:internal/deps/undici/undici:13185:13\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)","service":"meeting-assistant"} {"level":"info","message":"Master recording transcription complete event sent to backend: b8258b45-cec3-437a-99e8-a7fec19fdeb9","service":"meeting-assistant"} ``` Hope the helps! I never got a transcript nor a summary, pretty sad actually.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Mintplex-Labs/anything-llm#3112