SubtitleEdit/subtitleedit · error · PlatformNotSupportedException

MacOS not supported.

Error message

MacOS not supported.

What it means

Thrown by DownloadWhisperPurfviewFasterWhisperXxl when the process runs on macOS. The Purfview Faster-Whisper-XXL standalone tool has no macOS build at all (the project is named whisper-standalone-win), so the download is rejected up front. The check runs after the Linux branch, so only an unsupplied macOS path reaches it.

Source

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

    }

    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);
    }
    
    public async Task DownloadWhisperCTranslate2(Stream stream,  Progress<float> progress, CancellationToken cancellationToken)
    {
        await DownloadHelper.DownloadFileAsync(_httpClient, GetUrlTranslate2(), stream, progress, cancellationToken);
    }

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

View on GitHub (pinned to 17a9f07487)

Solutions

  1. On macOS use whisper.cpp (GetUrl returns MacArmUrl/MacX64Url) or CTranslate2 (MacArmCTranslate2 is available for Apple Silicon).
  2. Hide the Faster-Whisper-XXL engine option in the UI when OperatingSystem.IsMacOS() is true.
  3. If the binary is required, run Subtitle Edit inside a Windows/Linux VM on the Mac.

Example fix

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

// after
if (OperatingSystem.IsMacOS())
{
    showUser("Faster-Whisper-XXL has no macOS build; use whisper.cpp or CTranslate2.");
}
else
{
    await _whisperDownload.DownloadWhisperPurfviewFasterWhisperXxl(dest, progress, ct);
}
Defensive patterns

Strategy: validation

Validate before calling

if (OperatingSystem.IsMacOS()) { /* do not call DownloadWhisperPurfviewFasterWhisperXxl */ }

Type guard

static bool FasterWhisperXxlSupportsCurrentOs() =>
    OperatingSystem.IsWindows() || OperatingSystem.IsLinux();

Try / catch

try { await svc.DownloadWhisperPurfviewFasterWhisperXxl(dest, progress, ct); }
catch (PlatformNotSupportedException ex) when (ex.Message == "MacOS not supported.")
{ /* offer whisper.cpp or CTranslate2 on macOS */ }

Prevention

When it happens

Trigger: Calling DownloadWhisperPurfviewFasterWhisperXxl on any macOS host (Intel or Apple Silicon), because the only supported branches are Linux x64 and Windows.

Common situations: A macOS user (M1/M2/M3/M4 or Intel Mac) opens Audio-to-Text and picks Faster-Whisper-XXL. The error surfaces immediately because no macOS binary is published.

Related errors


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