SubtitleEdit/subtitleedit · error · PlatformNotSupportedException

Faster-Whisper-XXL is not available for Linux ARM64.

Error message

Faster-Whisper-XXL is not available for Linux ARM64.

What it means

Thrown by WhisperDownloadService.DownloadWhisperPurfviewFasterWhisperXxl when the process runs on Linux with an ARM64 CPU. The upstream Faster-Whisper-XXL release (Purfview/whisper-standalone-win) only publishes an x64 Linux binary and a Windows binary, so there is no artifact to download for aarch64. The guard fires before any network call, so the download never starts.

Source

Thrown at src/ui/Logic/Download/WhisperDownloadService.cs:81

    public async Task DownloadWhisperCppCuBlas(Stream stream, IProgress<float>? progress, CancellationToken cancellationToken)
    {
        await DownloadHelper.DownloadFileAsync(_httpClient, GetUrlCuBlas(), stream, progress, cancellationToken);
    }

    public async Task DownloadWhisperConstMe(Stream stream, IProgress<float>? progress, CancellationToken cancellationToken)
    {
        await DownloadHelper.DownloadFileAsync(_httpClient, DownloadUrlConstMe, stream, progress, cancellationToken);
    }

    public async Task DownloadWhisperPurfviewFasterWhisperXxl(string destinationFileName, IProgress<float>? progress, CancellationToken cancellationToken)
    {
        var url = DownloadUrlPurfviewFasterWhisperXxl;

        if (OperatingSystem.IsLinux())
        {
            if (RuntimeInformation.ProcessArchitecture == Architecture.Arm64)
            {
                throw new PlatformNotSupportedException("Faster-Whisper-XXL is not available for Linux ARM64.");
            }

            url = DownloadUrlPurfviewFasterWhisperXxlLinux;
        }

        if (OperatingSystem.IsMacOS())
        {
            throw new PlatformNotSupportedException("MacOS not supported.");
        }

        await DownloadHelper.DownloadFileAsync(_httpClient, url, destinationFileName, progress, cancellationToken);
    }

    public async Task DownloadWhisperCppVulkan(Stream stream,  Progress<float> progress, CancellationToken cancellationToken)
    {
        await DownloadHelper.DownloadFileAsync(_httpClient, GetUrlCppVulkan(), stream, progress, cancellationToken);
    }
    

View on GitHub (pinned to 17a9f07487)

Solutions

  1. Switch the Whisper engine to one with an ARM64 or universal build (whisper.cpp via GetUrl, which serves a macOS ARM build, or use CTranslate2 on macOS ARM).
  2. Run Subtitle Edit on an x86_64 Linux host or VM where DownloadUrlPurfviewFasterWhisperXxlLinux applies.
  3. If you must use aarch64 Linux, build Faster-Whisper-XXL from source and place the binary in SE's expected location instead of triggering this downloader.
  4. Gate the UI option that exposes Faster-Whisper-XXL behind an architecture check so users on ARM64 Linux never reach this call.

Example fix

// before
await _whisperDownload.DownloadWhisperPurfviewFasterWhisperXxl(dest, progress, ct);

// after: guard before invoking so the engine picker never offers it
if (OperatingSystem.IsLinux() && RuntimeInformation.ProcessArchitecture == Architecture.Arm64)
{
    disableEngineOption(WhisperEngine.FasterWhisperXxl);
}
else
{
    await _whisperDownload.DownloadWhisperPurfviewFasterWhisperXxl(dest, progress, ct);
}
Defensive patterns

Strategy: validation

Validate before calling

bool CanDownloadFasterWhisperXxl() =>
    !OperatingSystem.IsMacOS() &&
    !(OperatingSystem.IsLinux() && RuntimeInformation.ProcessArchitecture == Architecture.Arm64);

if (!CanDownloadFasterWhisperXxl()) { /* pick another engine */ }

Type guard

static bool IsFasterWhisperXxlSupported() =>
    OperatingSystem.IsWindows() ||
    (OperatingSystem.IsLinux() && RuntimeInformation.ProcessArchitecture != Architecture.Arm64);

Try / catch

try { await svc.DownloadWhisperPurfviewFasterWhisperXxl(dest, progress, ct); }
catch (PlatformNotSupportedException ex) when (ex.Message.Contains("Faster-Whisper-XXL"))
{ /* prompt user to choose whisper.cpp/CTranslate2 */ }

Prevention

When it happens

Trigger: Calling DownloadWhisperPurfviewFasterWhisperXxl while OperatingSystem.IsLinux() is true AND RuntimeInformation.ProcessArchitecture == Architecture.Arm64 (e.g. Raspberry Pi 4/5, Ampere Altra, Graviton EC2, Apple Silicon Linux VM).

Common situations: Running Subtitle Edit natively on an ARM64 Linux SBC or cloud instance and selecting the Faster-Whisper-XXL engine in the Audio-to-Text dialog. Also hit when a distribution reports aarch64 even on an x64 host through a container/QEMU build.

Related errors


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