The AI inside AutoScript Sync
An AI funscript comes from several parts working together, all running on your PC. A motion heatmap finds where the action is, optical flow measures how it moves, optional pose and depth models add body keypoints and a toward-or-away reading, a small classifier labels each 2-second window by motion type, and a smoother fuses it all into one position curve. It learns from your labels and edits, and a label you set always outranks its own guess.
Checked against the app's code on 21 September 2026. Describes version 2.121.1, the current release.
What each part contributes
Every sampled frame is first shrunk to 320 px wide (VR footage is first unwarped to a flat view of one eye). Region finding, flow, pose and depth all work on that small frame.
Finding the action: a motion-saliency heatmap
Without a region from you, the engine keeps a heatmap of where motion happens, fading older motion as it goes, then takes the hottest connected area and pads it by 15%. That area is what gets measured. You can override it with one box (Set Motion Region…) or a moving box you drag while the video plays (Live Track). The app also records which body keypoint your boxes follow, so it can propose regions on new videos.
Measuring movement: DIS optical flow
Optical flow estimates how every pixel moved between two frames. The default engine uses OpenCV's DIS dense flow, plus a faster half-resolution pass that checks whether the flow can be trusted. On High it also measures the tracked region at 640 px, for flat video at least that wide. Both run on the CPU. The flow velocity is what the position trace is integrated from. Optical flow in detail.
Following people: YOLOv8-pose and the person tracker
If a pose model is installed (the default download is YOLOv8 small-pose, about 45 MB), it finds each person above 0.35 confidence with 17 body keypoints. A tracker matches people from frame to frame by box position and size, builds candidate motion signals from pairs of body regions, and keeps the one with the clearest rhythm in each scene. Pose is optional: without it the engine runs on flow alone and says so in its Inference status line. Pose estimation in detail.
Seeing toward and away: MiDaS depth
Flat optical flow cannot see movement toward or away from the camera. MiDaS v2.1 depth models (small, about 64 MB, is the default; large, about 397 MB, is meant for a GPU) estimate relative depth on every second sampled frame, averaged over the moving pixels in the region. That becomes one more candidate position signal. If the model takes over 3 seconds a frame, depth is switched off for that run. Depth estimation in detail.
Background witnesses: motion vectors and audio
On a background thread, the app reads the video's own compressed-motion vectors and a 50 Hz loudness envelope of the soundtrack, each within a time budget, so on long films they may cover only part. They help decide which spans deserve a closer look, and the audio keeps gap-filled motion in step with the beat.
Labelling the motion: the motion-type classifier
The timeline is cut into 2-second windows. Each window is described by six motion features and sorted into one of four coarse scene types by a small logistic-regression model that trains as you use the app. Evidence from pose-keypoint geometry and face position, on by default, can override or adjust its call. A Viterbi pass then smooths the labels across neighbouring windows, so the type does not flicker back and forth.
The label decides how that window's motion is shaped. Each type has a shaping profile, which starts neutral and changes the output only after you teach it through your edits.
Your labels always win. A label you set that covers at least half a window replaces the classifier's answer for that window, and the smoothing pass leaves taught windows alone.
Fusing it into one curve
Flow says how fast things move; the other signals say where things are. The engine integrates the flow velocity into a position trace and fuses it with an anchor in a Kalman filter with a Rauch-Tung-Striebel (RTS) smoother, which runs forwards and then backwards over the whole video so each point benefits from what came after it.
The anchor is chosen per video. The region's centre, pose and depth each compete, and the pose signal can win only if it covers at least a quarter of the video and scores well enough. By default the winner is then replaced by a blend of every readable signal, sample by sample, but only if the blend scores at least as well. The scores from this contest are written into the script's metadata, where Report Studio can chart them.
Where tracking drops out, the gap is filled with rhythmic motion carried on from the strokes around it, and the share of the timeline filled rather than measured is recorded. Points are then placed at each change of direction, with stroke size following on-screen speed through the intensity curve (Smoothed by default).
How it learns
- From your edits
- When you save an edited AI-generated script (Ctrl+S or Save As), the app learns a stroke-depth scale and position offset for each motion type from the windows you changed.
- From your labels
- Teach class on a selected timeline span labels it. Your label replaces the classifier's answer for those windows.
- Across videos (corpus learning)
- On by default. Each AI generation can keep up to 40 examples from that video, and later runs use them to pick up tracking again. So output depends partly on what you have analysed before.
- Within a run (self-teach)
- On by default in automatic mode: the engine also teaches itself during each run.
- AI Bulk Learn
- In the File menu. It scans a folder without making scripts, samples short windows (by default 30 windows of 4 seconds per video) and queues the ones the classifier cannot decide, for you to label with the keyboard. Check my labels flags labels that look wrong against the motion evidence, and teaching uses only human labels.
Regenerating the same video with the same analysis settings reuses the motion analysis from earlier in the session (the last three videos, in memory), then only re-labels and rebuilds the script, so trying again after teaching is nearly instant.
Where it runs
On your PC. The pose and depth models run through ONNX Runtime or PyTorch, on an NVIDIA graphics card through CUDA when one is available, otherwise on the CPU. If you ask for the GPU and it cannot be used, they fall back to the CPU and the app reports which one is really in use; the Check GPU button tells you whether analysis is on the graphics card. Optical flow always runs on the CPU. There is no AMD or Intel acceleration for the AI models, and TensorRT is not used.
By default the app turns off a GPU auto-tuning feature so that the models give the same numbers run to run, at some cost in speed. Scripts can still differ between runs because the app keeps learning. GPU, CPU and installing on Windows covers requirements.
What the AI still gets wrong
The developer compares the engine against scripts written by hand. On a small set of clips, that comparison shows where it falls short. It is an internal check, not a benchmark, so we give no score from it.
- Missed direction changes. Some reversals a person scripts are not in the AI's output, on every film tested.
- Strokes too small on fast scenes. Stroke size is about right on slower films and much too small on fast ones. Fewer sampled frames make it worse.
- Motion where there is none. Inside the action, the engine often keeps producing strokes through stretches a person would leave still. A gate that would hold those spans exists but is off by default.
- Scene-type mistakes. The classifier's calls are limited in accuracy. Label the windows it gets wrong; your labels override it.
- Filled, not measured. Where tracking is lost, the curve is filled with rhythm rather than read from the video. The quality report shows how much.
We do not publish a timing or accuracy figure because none has yet been measured against independent hand-made scripts at a scale we would stand behind. The benchmarks page sets out what has and has not been measured.
Questions
Does the AI send my videos to a server to process them?
No. Every model runs on your PC and the analysis code makes no network calls. The internet is used for downloading models, checking for updates, licensing, and the Autoblow AI Ultra's cloud, which receives the script but never the video.
Which models are downloaded?
By default YOLOv8 small-pose and MiDaS small, about 109 MB together. The in-app Download best button offers larger pose models (up to YOLOv8 large, about 168 MB) and recommends one to suit a GPU or CPU.
Can I turn the AI off?
Unticking "Use adaptive AI engine" switches the Generate button to a basic engine that follows the main vertical motion with Farneback optical flow on full-resolution frames. The box is ticked again at every launch, and Batch Generate Folder and Generate + Play always use the AI engine.
Does it get better the more I use it?
It changes with use: your labels, saved edits and the examples it keeps from earlier videos all feed later runs. We have not measured how much that improves results, so we do not claim a number.
Read next
- The technology sectionEngineering detail on pose, flow, depth and drift correction.
- From video to script, step by stepWhat happens to your file and where the result is saved.
- The AutoScript Sync funscript generatorWhat you get, how to use it, devices, price and trial.
- The model guide on the home pagePose and depth tiers side by side.
Watch the AI work on your own videos
The free trial unlocks every feature for one day; a licence is £14.99 once and is not tied to a version.