Voice activity analysis (for Auto Sync Subtitles) not working

Server Version#: 1.41.8.9834
Player Version#: 1.109.0.329-ea562b95

My subtitles aren’t auto-syncing. It used to work a long time ago, but now it’s not. Doing “Analyze” on any episode/movie finishes very quickly (under a second) and voice analysis doesn’t seem to work. All players have “Auto Sync Subtitles” checkbox grayed out.

If I go to “More Info” on any item that’ supposed to have it on, the “Has Voice Activity” field that’s supposed to be at the bottom is not there:

Plex Dash shows it but as a blank box:

I have the “Generate voice activity” setting enabled in the server settings and in the individual library advanced settings:
image
image

Manually doing “Analyze” on items does nothing. I am using SRT files, downloaded through Plex from OpenSubtitles. Here are the debug logs when I do “Analyze” on any episode/movie:

Jun 03, 2025 16:13:20.139 [139894986742584] DEBUG - [Req#5d07] LongRunningJobManager [VoiceActivityDetection]: scheduling job for item 22954, 0 pending.
Jun 03, 2025 16:13:20.140 [139895045167928] DEBUG - Completed: [127.0.0.1:41102] 202 PUT /library/metadata/22954/voiceActivity?force=0&manual=1 (5 live) #5d07 GZIP 3ms 377 bytes (pipelined: 11)
Jun 03, 2025 16:13:20.142 [139894888332088] DEBUG - [Req#5d07/VoiceActivityDetectionManager] Running voice activity detection for 'The XXXX S01 E11' (id: 22954)
Jun 03, 2025 16:13:20.143 [139894888332088] DEBUG - [Req#5d07/VoiceActivityDetectionManager] Activity: registered new activity 36694eae-8943-466a-97d8-ab2259f953a5 - "Detecting Voice Activity"
Jun 03, 2025 16:13:20.143 [139894888332088] DEBUG - [Req#5d07/VoiceActivityDetectionManager] Activity: updated activity 36694eae-8943-466a-97d8-ab2259f953a5 - completed 99.0% - Detecting Voice Activity
Jun 03, 2025 16:13:20.143 [139894888332088] DEBUG - [Req#5d07/VoiceActivityDetectionManager] Activity: Ended activity 36694eae-8943-466a-97d8-ab2259f953a5.

I’ve found that only media I’ve added to my server after turning on the option gets analyzed even though I have the setting turned on to “as a scheduled task and when new media is added”. Any media I have from before I turned it on is not analyzed.

Have exactly the same issue. If i manually analyze an item, I can see it complete in the logs, but it never actually does anything. Tried on several different files I have with the same result every time. I do not get any errors, but it just doesn’t work and all the files have hasVoiceActivity=“0” in the xml.

Has there been any solution to this?

An error related to this was fixed in the server 1.43.x branch.
Though it is not recommended to switch to this just yet, because it also brings a transcoder update which still needs a few wrinkles to be ironed out. Wait until the 1.43.x server is available in the public release channel.

I’ve found that the voice activity detection has problems in general recognizing Japanese in Anime.

1 Like

Thanks for the info. I gave the beta a quick spin but unfortunately it still doesn’t work even on version 1.43.0.10231. My media has audio tracks in either german, english or both and it doesn’t work on any of them.

Tried again on v.1.43.0.10389 but its still not working. Still same entries in debug log as before and mentioned in the OP.

Is there anything else I can do to troubleshoot?

Problem still exists on 1.43.0.10467. Neither scheduled nor manual voice activity detection does anything. It seemingly doesn’t work on all of my media. Here is the log entries for a manual detection. It finishes in less than 1s.

Feb 11, 2026 10:39:53.689 [140272011848504] Debug — [Req#aa0451/JobRunner] Job running: FFMPEG_EXTERNAL_LIBS=‘/config/Library/Application\ Support/Plex\ Media\ Server/Codecs/74455c4-a119aa85fdef32b7dbfbf8a2-linux-x86_64/’ X_PLEX_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx “/usr/lib/plexmediaserver/Plex Media Scanner” --analyze --manual --server-action credits,voiceActivity,addetect --item 423028 --log-file-suffix " Analysis" 
Feb 11, 2026 10:39:54.009 [140271818582840] Debug — Request: [127.0.0.1:47962 (Loopback)] PUT /library/metadata/423028/voiceActivity?force=0&manual=1 (17 live) #aa049a GZIP Signed-in Token (Fuechslein) 
Feb 11, 2026 10:39:54.011 [140271818582840] Debug — [Req#aa049a] LongRunningJobManager [VoiceActivityDetection]: scheduling job for item 423028, 0 pending. 
Feb 11, 2026 10:39:54.011 [140272472218424] Debug — Completed: [127.0.0.1:47962] 202 PUT /library/metadata/423028/voiceActivity?force=0&manual=1 (17 live) #aa049a GZIP 2ms 377 bytes (pipelined: 6) 
Feb 11, 2026 10:39:54.089 [140271893236536] Debug — [Req#aa049a/VoiceActivityDetectionManager] Running voice activity detection for ‘The Kite (2025)’ (id: 423028) 
Feb 11, 2026 10:39:54.090 [140271893236536] Debug — [Req#aa049a/VoiceActivityDetectionManager] Activity: registered new activity 85ed1ab6-33ee-44e6-bf50-137b2c440e12 - “Detecting Voice Activity” 
Feb 11, 2026 10:39:54.090 [140271893236536] Debug — [Req#aa049a/VoiceActivityDetectionManager] Activity: updated activity 85ed1ab6-33ee-44e6-bf50-137b2c440e12 - completed 99.0% - Detecting Voice Activity 
Feb 11, 2026 10:39:54.091 [140271893236536] Debug — [Req#aa049a/VoiceActivityDetectionManager] Activity: Ended activity 85ed1ab6-33ee-44e6-bf50-137b2c440e12.

Sorry about the formatting, couldn’t figure out how to have it display properly.

Check your Docker configuration. The /tmp folder must be defined and pointing to a folder on a real storage device. Not just to /shm.

Is /tmp supposed to be the transcoding directory? Because I have the default /transcode for that and thats mounted to the host. I also quickly tried mounting /tmp on the host and that also didnt help.

No. But it’s the location where the various analysis features are storing the decoded audio (in WAV format) before it is handed over to the actual analysation code. If it is not defined in the container, /dev/shm is used instead, which is in RAM and is easily filled up with lots/large files.

Another common source of analysis failing is insufficient memory in the OS kernel’s inode tables: Linux Tips - #9 by ChuckPa
(IIRC in the case of Docker, it’s the kernel of the host OS)

Just checked and I am only around 4000 folders, so nowhere close to the limit.

root@TRUENAS-TAE[/mnt/HDD/shares]# sudo find multimedia  -type d -print | wc -l
4368
root@TRUENAS-TAE[/mnt/HDD/shares]# cat /proc/sys/fs/inotify/max_user_watches
246083

Voice activity detection does use the location you have “Transcoder temporary directory” set to as its temporary storage. For my own container, using the official Plex image, I have /trancode set as mine. Here’s a relevant VAD taking place (note the last path in the command, /transcode/Transcode/Detection):

Feb 11, 2026 06:20:06.225 [140567066274616] DEBUG - 
[VoiceActivityDetectionManager/JobRunner] Job running: FFMPEG_EXTERNAL_LIBS=
'/config/Library/Application\ Support/Plex\ Media\ Server/Codecs/
ca90ef9-9a65c18385d96de09023e106-linux-x86_64/'
X_PLEX_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
"/usr/lib/plexmediaserver/Plex Transcoder" "-codec:#0x74" ac3 
-analyzeduration 20000000 -probesize 20000000 -i "/csmedia/dvr/tv/Star Trek Deep 
Space Nine/Season 01/Star Trek Deep 
Space Nine.S01E05.Captive Pursuit.ts" -y -nostats -loglevel quiet -loglevel_plex 
error -progressurl http://127.0.0.1:32400/video/:/transcode/session/636b103b-dc23
-4c7e-8790-655cd0f37e65/85aec260-e5b8-4f4e-a109-55a562fdd180/progress 
-filter_complex "[0:#0x74] aresample=async=1:ochl='mono'
:rematrix_maxval=0.000000dB:first_pts=0:min_hard_comp=0.01:osr=8000[0]" 
-map "[0]" -metadata:s:0 language=eng -codec:0 flac -b:0 4096k -f flac 
-map_metadata -1 -map_chapters -1 
/transcode/Transcode/Detection/e4ffb780-5ab2-49ae-b829-8eaef96e90c8

So you do have control over this. Specify a transcoder temp directory. If you followed the directions here (or whomever developed the container for TrueNAS did), you should be good:

Just ensure it points to a location with a good amount of available storage (I’d say at least 64 GB, preferable more).

I am using the official Plex image that you linked and no built in version/app of truenas. Just double checked and transcoding works as intended. I can see the temp files in the mapped folder on the host during the transcoding session. The files don’t ever seem to make it there for VAD though.

I am really out of ideas where the problem could be.

How do you have this setting configured:
Settings -> [Select Server] -> Library -> Generate voice activity data

This determines when VAD is triggered. You can’t manually trigger it via the “Analyze” function of a library.

If you want to trigger VAD, then either Plex Dance some media (assuming you have the above set such that new media triggers it) or change your scheduled tasks start/stop times.

You can trigger it manually, if you “analyze” a single movie/episode.

image

That’s what I have been doing to test and to gather the log entries.

Mea culpa. But it does use the transcoder temporary directory, not /tmp.

OK I just made a random observation. If i rename the file on the filesystem after it has been already added to plex, then VAD immediately and successfully runs.

No idea what to make of this but I don’t feel like renaming all my media….

Did you try the Plex Dance I mentioned above? This can be done on individual/multiple files, seasons, or entire series.

Not yet but that wouldn’t fix the problem for future additions for my library. It would probably fix all current media though.

Also, wouldn’t the full Plex Dance delete all Metadata? I have manually fixed quite a few matches and Metadata within Plex that would be a pain to do all over again.