SubtitleEdit/subtitleedit · error · Exception

The 'model.bin' file is too small (must be at least 10 MB) -

Error message

The 'model.bin' file is too small (must be at least 10 MB) - is it really a faster-whisper model?

What it means

Validates that a folder selected as a faster-whisper (CTranslate2) model contains a 'model.bin' of at least 10 MB. A real faster-whisper export's model.bin is typically hundreds of MB; anything smaller almost always means the folder is not a genuine CTranslate2 model. The check runs after confirming the file exists but before copying the folder into the managed models directory.

Source

Thrown at src/ui/Features/Video/SpeechToText/Engines/WhisperEnginePurfviewFasterWhisperXxl.cs:167

    /// both this engine and the CTranslate2 engine (which builds its --model path as
    /// "_models/faster-whisper-<name>") resolve it. Returns the display name (without prefix).
    /// </summary>
    internal static string ImportFasterWhisperFolderModel(string sourceDir, string modelsFolder)
    {
        if (!Directory.Exists(sourceDir))
        {
            throw new DirectoryNotFoundException("Model folder not found: " + sourceDir);
        }

        var modelBin = Path.Combine(sourceDir, "model.bin");
        if (!File.Exists(modelBin))
        {
            throw new Exception("A faster-whisper model folder must contain a 'model.bin' file.");
        }

        if (new FileInfo(modelBin).Length < 10_000_000)
        {
            throw new Exception("The 'model.bin' file is too small (must be at least 10 MB) - is it really a faster-whisper model?");
        }

        var sourceName = Path.GetFileName(sourceDir.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar));
        var baseName = sourceName;
        if (baseName.StartsWith("faster-whisper-", StringComparison.OrdinalIgnoreCase))
        {
            baseName = baseName.Substring("faster-whisper-".Length);
        }

        var destFolder = Path.Combine(modelsFolder, "faster-whisper-" + baseName);
        CopyDirectory(sourceDir, destFolder);

        return baseName;
    }

    private static void CopyDirectory(string sourceDir, string destDir)
    {
        Directory.CreateDirectory(destDir);

View on GitHub (pinned to 17a9f07487)

Solutions

  1. Re-download the model from a verified faster-whisper source (e.g. HuggingFace 'Systran/faster-whisper-*') so model.bin is hundreds of MB.
  2. Confirm sourceDir is the leaf model directory that directly contains model.bin, not a parent folder.
  3. If you cloned a HF repo, run `git lfs pull` in it, or download a zip release instead of cloning.
  4. Pre-check the size: `new FileInfo(modelBin).Length` before selecting the folder.

Example fix

// before: select any folder with a tiny model.bin -> throws
// after: validate before offering the folder to the engine
var modelBin = Path.Combine(sourceDir, "model.bin");
if (!File.Exists(modelBin) || new FileInfo(modelBin).Length < 10_000_000)
{
    // do not list this folder as an importable model
    continue;
}
Defensive patterns

Strategy: validation

Validate before calling

var modelBin = Path.Combine(sourceDir, "model.bin");
if (!File.Exists(modelBin)) return Invalid("model.bin missing");
if (new FileInfo(modelBin).Length < 10_000_000) return Invalid("model.bin too small");
return Ok();

Try / catch

try { engine.ImportModel(sourceDir); }
catch (Exception ex) when (ex.Message.Contains("too small"))
{ /* prompt user to pick a complete faster-whisper folder */ }

Prevention

When it happens

Trigger: Selecting a sourceDir whose model.bin is < 10_000_000 bytes during faster-whisper model import/copy. Triggered by CopyDirectory flow when the user picks an invalid model folder.

Common situations: Git LFS pointer file left in place of model.bin (cloned a HF repo without `git lfs pull`); interrupted/partial download; user pointed at a folder of original OpenAI Whisper weights (model.pt) instead of a CTranslate2 conversion; selected a parent directory holding multiple models rather than a single leaf model.

Related errors


AI-assisted analysis of SubtitleEdit/subtitleedit@17a9f07487 (2026-08-13). Data as JSON: /api/errors/c8dba0460558f695. Report an issue: GitHub.