PotPlayer Anime TTS Cleaner creates a speech-friendly subtitle track for anime whose styled subtitles overlap on screen. This prevents PotPlayer's text-to-speech feature from reading an older line again when a new line appears.
The original video and subtitle tracks are never modified. The app writes a separate file beside the source:
Episode 01.mkv
Episode 01.tts.srt
Anime subtitles often keep one character's line at the top of the screen while another character begins speaking at the bottom. PotPlayer can treat the full active subtitle block as new text and repeat the first line through TTS.
This tool:
- detects old-plus-new subtitle timing overlaps;
- recommends whether conversion is likely to help;
- ends older cues just before the next line begins;
- combines lines that begin at nearly the same time;
- removes ASS styling and drawing commands from spoken text;
- supports embedded subtitle-track selection;
- opens the video in PotPlayer with the cleaned subtitle loaded.
| Type | Formats |
|---|---|
| Subtitles | ASS, SSA, SRT |
| Video containers | MKV, MP4, M4V, MOV, WEBM, AVI |
Only text-based embedded subtitles can be processed. Image subtitles such as PGS, VobSub, and DVB subtitles are not supported.
- Windows 10 or 11
- Python 3.10 or newer
- FFmpeg and ffprobe on PATH for video input
- PotPlayer for the one-click playback action
Standalone ASS, SSA, and SRT files do not require FFmpeg.
git clone https://github.com/BindingOx/PotPlayer-Anime-TTS-Cleaner.git
cd PotPlayer-Anime-TTS-Cleaner
python -m pip install -r requirements.txtDouble-click Launch.bat, then:
- Drop a video or subtitle onto the window.
- For a video, select the embedded subtitle track.
- Review the overlap analysis:
- Green: no double-text timing pattern was detected.
- Yellow: a few overlaps were found; conversion may help.
- Red: repeated overlaps were found; conversion is recommended.
- Click Create TTS Subtitle.
- Allow the app to open the video in PotPlayer, or load the generated .tts.srt file manually.
The interface includes a persistent light/dark theme setting.
python potplayer_tts_fix.py "Episode 01.mkv"
python potplayer_tts_fix.py "Episode 01.ass"
python potplayer_tts_fix.py --stream 3 "Episode 01.mkv"
python potplayer_tts_fix.py --merge-window-ms 80 "Episode 01.ass"Without --stream, the converter prefers an English, non-signs-only, non-hearing-impaired subtitle track.
At every subtitle start time, the converter writes only newly starting text. If older text is still active, its generated cue ends one millisecond before the new cue. Lines starting within the merge window are spoken together once.
The overlap diagnosis is a timing-based heuristic. A detected overlap does not always mean PotPlayer will repeat speech, but it identifies the subtitle structure that commonly causes the issue.
app_icon.svg Application icon
Launch.bat Windows launcher
potplayer_tts_fix.py Parsing, analysis, and conversion engine
potplayer_tts_gui.py PySide6 desktop interface
requirements.txt Python dependency
- Source files are read only.
- Output uses a distinct .tts.srt filename.
- Conversion does not remux or rewrite the video.