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
- Re-download the model from a verified faster-whisper source (e.g. HuggingFace 'Systran/faster-whisper-*') so model.bin is hundreds of MB.
- Confirm sourceDir is the leaf model directory that directly contains model.bin, not a parent folder.
- If you cloned a HF repo, run `git lfs pull` in it, or download a zip release instead of cloning.
- 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
- Only offer folders for import whose model.bin is >= 10 MB.
- Prefer downloading a verified zip release over git-cloning a model repo.
- Run `git lfs pull` after cloning any HuggingFace model repo before importing.
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
- DashScope transcription timed out after {_settings.TimeoutSe
- DashScope upload-policy request failed ({(int)policyResponse
- DashScope upload-policy response could not be parsed. Respon
- DashScope OSS upload failed ({(int)uploadResponse.StatusCode
- DashScope async submit failed ({(int)response.StatusCode}).
AI-assisted analysis of SubtitleEdit/subtitleedit@17a9f07487 (2026-08-13).
Data as JSON: /api/errors/c8dba0460558f695.
Report an issue: GitHub.