SpeechTranscriber supported Devices

I have the new iOS 26 SpeechTranscriber working in my application. The issue I am facing is how to determine if the device I am running on supports SpeechTranscriber. I was able to create code that tests if the device supports transcription but it takes a bit of time to run and thus the results are not available when the app launches. What I am looking for is a list of what iOS 26 devices it doesn't run on. I think its safe to assume any new devices will support it so if we can just have a list of what devices that can run iOS 26 and not able to do transcription it would be much faster for the app. I have determined it doesn't work on a SE 2nd Gen, it works on iPhone 12, SE 3rd Gen, iPhone 14 Pro, 15 Pro. As the SpeechTranscriber doesn't work in the simulator I can't determine that way. I have checked the docs and it doesn't list the devices it doesn't work on.

This class below is my first attempt at determining if a device supports speech transcription. Any feedback on devices it works or doesn't work on would be appreciated!

import Foundation import UIKit

final class SpeechTranscriberSupportChecker {

static let shared = SpeechTranscriberSupportChecker()

private var cachedSupportsSpeechTranscriber: Bool?

private init() {}

func supportsSpeechTranscriber() -> Bool {
    if let cached = cachedSupportsSpeechTranscriber {
        return cached
    }
    
    let result: Bool
    
    if !isRealDevice() {
        result = false
    } else if !isRunningOS26orLater() {
        result = false
    } else {
        result = !isOnUnsupportedHardware()
    }
    
    cachedSupportsSpeechTranscriber = result
    return result
}

// MARK: - Checks

private func isRealDevice() -> Bool {
    #if targetEnvironment(simulator)
    return false
    #else
    return true
    #endif
}

private func isRunningOS26orLater() -> Bool {
    let major = ProcessInfo.processInfo.operatingSystemVersion.majorVersion
    return major >= 26
}

/// Devices that CAN run iOS/iPadOS 26 but DO NOT support Speech Transcriber
private func isOnUnsupportedHardware() -> Bool {
    let model = deviceModelIdentifier()
    
    let unsupportedModels: Set<String> = [
        
        // MARK: - iPhone (A13 – Not Supported)
        "iPhone12,1", // iPhone 11
        "iPhone12,3", // iPhone 11 Pro
        "iPhone12,5", // iPhone 11 Pro Max
        "iPhone12,8", // iPhone SE 2nd Gen
        
        // MARK: - iPad (A12/A13/A14 Devices)
        "iPad11,6", "iPad11,7",   // iPad 8th Gen (A12)
        "iPad12,1", "iPad12,2",   // iPad 9th Gen (A13)
        "iPad11,3", "iPad11,4",   // iPad Air 3rd Gen (A12)
        "iPad11,1", "iPad11,2"    // iPad mini 5th Gen (A12)
    ]
    
    return unsupportedModels.contains(model)
}

private func deviceModelIdentifier() -> String {
    var systemInfo = utsname()
    uname(&systemInfo)

    return withUnsafeBytes(of: systemInfo.machine) { rawPtr in
        rawPtr.compactMap { c in
            c != 0 ? String(UnicodeScalar(UInt8(c))) : nil
        }.joined()
    }
}

}

// To use: //if SpeechTranscriberSupportChecker.shared.supportsSpeechTranscriber() { // print("Speech Transcriber supported.") //} else { // print("Speech Transcriber NOT supported.") //}

SpeechTranscriber supported Devices
 
 
Q