
语音音频AI 应用【免费下载链接】argmax-oss-swiftOn-device Speech AI for Apple Silicon项目地址https://gitcode.com/GitHub_Trending/wh/argmax-oss-swift点击查看免费下载本指南以仓库根目录 BENCHMARKS.md 为骨架深入结合 Makefile、fastlane/Fastfile 与 Tests/WhisperKitTests/RegressionTests.swift 源码完整还原从环境准备、设备检测、模型配置、批量跑分到结果上传的端到端流程。读完本文你将掌握 WhisperKit 官方性能评测管线的全部操作细节并理解 TPS 吞吐、内存占用、WER 准确率等关键指标在代码中是如何被采集与度量的。一、Benchmark 评测体系概述argmax-oss-swiftOn-device Speech AI for Apple Silicon在BENCHMARKS.md中定义了一套可复现的 WhisperKit 端侧性能评测方案通过 Xcode 测试框架XCTest Fastlane 自动化在指定设备iPhone / iPad / Mac上批量加载不同 Whisper 模型对固定测试语料执行转写并采集延迟、内存、系统状态等数据最终输出为标准 JSON 结果文件。整套评测由三层协作完成层载体职责测试逻辑Tests/WhisperKitTests/RegressionTests.swift定义数据集、模型矩阵与测量逻辑自动化编排fastlane/Fastfile设备枚举、xcodebuild 扫描、结果提取与合并命令入口Makefile将上述能力封装为make命令评测结果按设备保存为 JSON可统一上传至公开评测数据集HuggingFace 上的 whisperkit-evals-dataset 数据集用于跨设备、跨模型、跨版本的横向对比与回归跟踪。二、源码获取与本地环境搭建2.1 获取源码评测脚本与测试代码位于本仓库内运行测试套件前需先克隆git clone https://gitcode.com/GitHub_Trending/wh/argmax-oss-swift.git2.2 一键初始化依赖仓库通过 Makefile 的setup目标完成环境自检与依赖安装make setup从 Makefile 的setup实现可以看到它会逐一校验以下工具缺失时通过 Homebrew 自动安装pip3/python3Homebrew缺失时直接报错退出提示先安装huggingface-cli后续上传评测结果必需git-lfs拉取大体积 CoreML 模型必需trash清理旧的 .xcresult 产物fastlane评测自动化核心xcbeautify美化 xcodebuild 日志setup 结束后还会调用generate-xcconfigs从 Xcode 的开发者账号中读取 Team ID写入Examples/WhisperAX/Debug.xcconfig与Examples/TTS/TTSKitExample/Debug.xcconfig。若未登录 Xcode / 未选择开发者团队此步会提示错误。更详细的协作环境说明可参阅 CONTRIBUTING.md。2.3 模型下载可选前置若需要在本地直接验证评测而非仅跑自动化可按需先拉取模型。仓库提供argmaxinc/whisperkit-coreml模型仓库的封装make download-models # 下载全部模型 make download-model MODELbase # 仅下载指定规格如 basedownload-model内部通过git lfs pull --includeopenai_whisper-$(MODEL)/*按目录精确拉取避免一次性下载全部模型占用磁盘。三、Xcode 环境变量注入评测的核心是WhisperAX示例工程中的回归测试被测模型通过环境变量传递给 Xcode由 Fastlane 注入打开示例工程xed Examples/WhisperAX在 Xcode 顶部选中WhisperAX点击底部Edit Scheme。在Environment Variables面板中确认存在名为MODEL_NAME、值为$(MODEL_NAME)的条目。这条$(MODEL_NAME)变量由 fastlane/Fastfile 的run_benchmark通过xcargs MODEL_NAME#{model}注入并在 Tests/WhisperKitTests/RegressionTests.swift 的testEnvConfigurations()中被读取if let modelSizeEnv ProcessInfo.processInfo.environment[MODEL_NAME], !modelSizeEnv.isEmpty { modelsToTest [modelSizeEnv] ... }即测试运行时以MODEL_NAME为准确定被测模型同时支持可选的MODEL_REPO环境变量指定模型仓库Fastlane 会以MODEL_REPOargmaxinc/whisperkit-coreml注入。四、测试设备准备[!IMPORTANT] 在物理设备上运行测试需要有效的开发者账号Apple Developer Account。运行前需要完成以下前置动作将所有外部设备通过数据线连接并配对到你的 Mac在开发者账号中注册这些设备确保设备已开启 Developer Mode开发者模式若连接后设备列表无显示按Command Shift 2打开设备列表窗口跟踪连接进度。Fastlane 侧通过xcrun devicectl list devices见 fastlane/Fastfile 的available_devices枚举所有已连接的真机并自动把当前 Mac通过system_profiler SPHardwareDataType与sw_vers读取芯片型号、机型与系统版本作为名为My Mac的评测目标一并纳入——这正是该评测体系能同时覆盖 iPhone / iPad / Apple Silicon Mac 的原因。五、数据集配置测试语料定义在 Tests/WhisperKitTests/RegressionTests.swift 顶部的全局数组datasets中默认预填了当前可用的数据集var datasets [librispeech-10mins, earnings22-10mins]full 模式使用上述两个数据集debug 模式testModelPerformanceWithDebugConfig仅使用debugDataset [earnings22-10mins]以加快排错速度。数据集本身托管在测试数据仓库中运行时会由downloadTestData(forDataset:)通过 Hub API 按\(dataset)/*通配符增量下载音频.mp3与参考转写元数据.json到临时目录。每个数据集对应一份含参考文本的元数据 JSON用于后续 WER词错误率计算。六、模型矩阵配置被测模型定义在 fastlane/Fastfile 的BENCHMARK_CONFIGS常量中。找到BENCHMARK_CONFIGS修改对应 benchmark 下的models数组即可定制测试矩阵。6.1 full 配置完整评测full: { test_identifier: WhisperAXTests/RegressionTests/testModelPerformance, name: full, models: [ openai_whisper-tiny, openai_whisper-tiny.en, openai_whisper-base, openai_whisper-base.en, openai_whisper-small, openai_whisper-small.en, openai_whisper-large-v2, openai_whisper-large-v2_949MB, openai_whisper-large-v2_turbo, openai_whisper-large-v2_turbo_955MB, openai_whisper-large-v3, openai_whisper-large-v3_947MB, openai_whisper-large-v3_turbo, openai_whisper-large-v3_turbo_954MB, distil-whisper_distil-large-v3, distil-whisper_distil-large-v3_594MB, distil-whisper_distil-large-v3_turbo, distil-whisper_distil-large-v3_turbo_600MB, openai_whisper-large-v3-v20240930, openai_whisper-large-v3-v20240930_turbo, openai_whisper-large-v3-v20240930_626MB, openai_whisper-large-v3-v20240930_turbo_632MB ], repo: argmaxinc/whisperkit-coreml }full 矩阵共 22 个模型条目覆盖 tiny / base / small / large-v2 / large-v3 / large-v3-turbo / distil-whisper 蒸馏版以及带量化体积后缀如_949MB、_955MB的变体。完整测试在testModelPerformance中执行其默认模型列表来自WhisperKit.recommendedModels().supported见 Sources/WhisperKit/Core/WhisperKit.swift即按当前设备硬件自动推荐的受支持模型集。6.2 debug 配置快速排错debug: { test_identifier: WhisperAXTests/RegressionTests/testModelPerformanceWithDebugConfig, name: debug, models: [tiny, crash_test, unknown_model, small.en], repo: argmaxinc/whisperkit-coreml }debug 矩阵刻意包含三个特殊条目用于验证管线健壮性tiny正常执行的最小模型crash_test在testEnvConfigurations()中命中后直接触发fatalError(Crash test triggered)用于验证失败路径与日志采集unknown_model非法模型名用于验证异常处理分支。两个配置共用WhisperAXTests/RegressionTests内的测试标识符并通过config[:debug]切换。6.3 设备-模型支持矩阵模型并非在所有设备上均可运行。Examples/WhisperAX/WhisperAXTests/WhisperKitTests/Resources/config-v03.json 与 config-v04.json 按芯片A12/A13/S9/S10、A14、A15/A16/A17 Pro/A18、M1、M2/M3/M4 等声明了每类设备的supported模型列表与default模型并附带model_checksums校验和。测试运行前会检查WhisperKit.recommendedModels().disabled若模型被标记为当前设备不可用则直接抛出modelsUnavailable跳过该条目。七、运行基准测试评测命令由 Makefile 封装底层委托给 Fastlane。7.1 列出已连接设备运行前先确认设备连接状态避免后续批量跑分因设备掉线而失败make list-devices输出为 Ruby 风格的设备字典数组每个条目形如{ :nameMy Mac, :typeApple M2 Pro, :platformmacOS, :os_version15.0.1, :productMac14,12, :idXXXXXXXX-1234-5678-9012-XXXXXXXXXXXX, :stateconnected }该输出来自 fastlane/Fastfile 的available_devices真机信息由xcrun devicectl list devices解析过滤掉状态为unavailable的条目Mac 信息则由system_profilersw_vers拼接。务必确认:state为connected后再继续。7.2 执行评测完成上述配置后即可运行。评测存在full与debug两种配置先用 debug 快速排错make benchmark-devices DEBUGtrue确认无误后运行 full 完整评测make benchmark-devices可选限定目标设备两种模式下均可通过DEVICES指定设备列表逗号分隔的设备名名称取自make list-devices的:name字段make benchmark-devices DEVICESiPhone 15 Pro Max,My MacMakefile 中对应逻辑为DEVICES ? DEBUG ? false benchmark-devices: generate-whisperax-xcconfig if [ -n $(DEVICES) ]; then \ fastlane benchmark devices:$(DEVICES) debug:$(DEBUG); \ else \ fastlane benchmark debug:$(DEBUG); \ fi可见benchmark-devices先依赖generate-whisperax-xcconfig保证 Team ID 就绪再将参数透传给fastlane benchmarklanefastlane benchmark内部按debug开关选择:debug或:full配置并对设备名做逗号切分与匹配benchmark_specific_devices中若找不到匹配设备会直接user_error!终止。7.3 背后发生了什么从 fastlane/Fastfile 的run_benchmark可以看到每次跑分的完整链路按 commit hash 与时间戳生成输出目录benchmark_data/{COMMIT_TIMESTAMP}_{COMMIT_HASH}/对models数组中每个模型依次执行scan等价于 xcodebuild test目标工程Examples/WhisperAX/WhisperAX.xcodeprojschemeWhisperAX仅运行only_testing指定的回归测试标识符注入MODEL_NAME、MODEL_REPO并附加-allowProvisioningUpdates、-allowProvisioningDeviceRegistration自动处理真机签名注册result_bundle输出 .xcresult 包每个模型独立打包为WhisperAX_{hash}_{config}.xcresult单个模型失败不会中断整体流程fail_build: false rescue 记录错误后继续下一个模型每个设备生成一份合并摘要 JSON。八、结果解析与指标说明8.1 产物位置运行完成后结果位于fastlane/benchmark_data/完整原始产物包括每台设备的.xcresult含日志与附件及各设备/模型的 JSONfastlane/upload_folder/benchmark_data/仅包含fastlane/benchmark_data中可直接用于分析的 JSON 结果由 fastlane/Fastfile 的prepare_upload在每次运行后同步刷新旧内容会被清理。8.2 JSON 数据模型单条评测记录对应 Tests/WhisperKitTests/RegressionTestUtils.swift 中的RegressionStatsstruct RegressionStats: JSONCodable { let testInfo: TestInfo // 设备、音频文件、数据集、模型、模型大小MB、日期、耗时、timings、prediction/reference、wer、diff let memoryStats: MemoryStats // 内存测量min/max/average、pre/post transcribe 内存 let latencyStats: LatencyStats // 延迟测量Tokens/Sec let staticAttributes: StaticAttributes // OS 版本、低电量模式、encoder/decoder compute、解码选项 let systemMeasurements: SystemMeasurements // 系统内存、磁盘空间、电池电量、热状态、时间序列 }各设备还会生成一份{device}_summary_{timestamp}.json的合并摘要TestReport包含设备模型、OS 类型/版本、测试过的模型、failureInfo与附件索引。8.3 关键指标采集原理转写吞吐Tokens/SecTranscriptionTestState在转写回调中累计 token 数按时间差实时计算 TPS每累计 100 个 token 打一次min/max/average测量点。Tests/WhisperKitTests/RegressionTests.swift 中设有tpsThreshold 4.0的断言——若 TPS 低于 4 且非 0测试将失败并提示潜在 CPU 回退说明模型未跑在神经网络引擎等加速单元上。内存AppMemoryChecker通过task_info读取phys_footprintSystemMemoryCheckerAdvanced通过host_statistics64读取系统级可用/活跃/有线/交换内存。测试在转写前后分别记录preTranscribeMemory与postTranscribeMemory。系统状态采样测试期间启动 1 秒周期的 DispatchSource 定时器持续记录系统内存、磁盘剩余空间、电池电量UIDevice.current.batteryLevel/ macOS 的 IOKit 电源信息与热状态ProcessInfo.processInfo.thermalState这些时间序列数据最终进入SystemMeasurements用于判断性能波动是否受降频、发热或磁盘压力影响。准确率WER参考文本与预测文本经 Tests/WhisperKitTests/Evaluate/WERUtils.swift 计算词错误率——先做英文文本归一化再按词编码为字符、用 Levenshtein 编辑距离得到替换/删除/插入次数最终 WER (S D I) / (H S D)。归一化与否会显著影响结果测试断言中未归一化的 WER 约为归一化值的 2 倍以上因此在跨版本对比时务必保持同一套归一化口径。8.4 模型初始化防护评测对模型加载也做了三重保护createWithMemoryCheck见 Tests/WhisperKitTests/RegressionTests.swift后台监控可用内存剩余不足 0.1 GB 时判定 OOM 并取消初始化5 分钟超时保护timedOut初始化异常统一转换为WhisperError.modelsUnavailable并记入failureInfo。九、结果上传官方会定期在多种设备上运行本套评测并将结果上传至公开评测数据集HuggingFace 的whisperkit-evals-dataset供基准对比空间引用。如果你也希望把本地结果贡献回去可执行make upload-benchmark-results其内部调用 fastlane/Fastfile 的upload_resultslane先校验fastlane/upload_folder存在再以时间戳生成分支名benchmark_results_{timestamp}最终执行huggingface-cli upload argmaxinc/whisperkit-evals-dataset fastlane/upload_folder --repo-type dataset --create-pr即以创建 Pull Request的方式上传而非直接写入主分支——这样既能贡献数据又保留了数据集维护者的审核权。注意此步依赖make setup阶段安装的huggingface-cli与有效的 HuggingFace 登录态huggingface-cli whoami可通过 Makefile 的setup-huggingface-cli完成登录支持HF_TOKEN环境变量。十、故障排查TroubleshootingBenchmarks.md 提供了三级排错策略实测优先级如下直接在 Xcode 中运行测试xed Examples/WhisperAX在测试导航器中运行RegressionTests/testModelPerformanceWithDebugConfig。若成功可排除设备或模型本身的问题若失败Xcode 会给出更详细的报错信息签名、模型加载、内存等。收敛到单台设备先make list-devices确认设备名再指定单设备运行便于聚焦日志make benchmark-devices DEVICESMy Mac联系社区若仍无法解决可在仓库创建 issue附上完整日志与设备信息或到官方 Discord 求助。此外根据 fastlane/Fastfile 的实现还有几个容易踩的坑值得注意设备名必须与list-devices输出完全一致区分大小写、含空格写法否则benchmark_specific_devices会直接报No matching devices found物理设备必须已开启开发者模式并完成配对注册否则devicectl无法列出旧 .xcresult 冲突run_benchmarks会按device[:product]通配清理旧产物若手工遗留同名 .xcresult 需确保trash可用Xcode 版本兼容extract_xcresult_attachments会根据xcodebuild -version自动为 Xcode 16 追加--legacy参数旧版 Xcode 无需此参数。十一、从 Benchmark 到开发闭环这套评测体系的价值不止于发布基准数据它同时是仓库内建的回归保护full配置的 22 个模型 × 2 个数据集在每台目标设备上全量跑通意味着任何对 Sources/WhisperKit 核心AudioEncoder、TextDecoder、TokenSampler 等的改动都能通过 TPS 阈值断言、WER 精确断言如testLargeWER中 WER 需等于 0.1852080123266564 ± 0.001和内存断言testInMemoryAndDiskUsage要求模型内存占用 1000 MB、磁盘占用 5000 MB快速暴露退化。将make benchmark-devices纳入 CI即可获得面向真实硬件的持续性能监控——这正是端侧 AI 应用迭代中不可或缺的一环。赞分享语音音频AI 应用【免费下载链接】argmax-oss-swiftOn-device Speech AI for Apple Silicon项目地址https://gitcode.com/GitHub_Trending/wh/argmax-oss-swift点击查看免费下载相关推荐系统盘越用越小这款免费开源驱动管理工具帮你找回好几个GB系统盘越用越小这款免费开源驱动管理工具帮你找回好几个GB 有没有过这样的经历电脑刚买时飞快用了两三年后开机越来越慢C盘空间也一天天见底。你删掉不少软件语音音频AI 应用Newton 视觉化插件3 步做出自定义渲染效果完整指南Newton 视觉化插件3 步做出自定义渲染效果完整指南 你手里有一段 Newton 物理模拟屏幕上却只有默认那套几何体看不到你想强调的力、接触或自定物理引擎机器人探索Swift性能基准测试利器Google的swift-benchmark探索Swift性能基准测试利器Google的 swift benchmark 在软件开发领域尤其是对于高性能应用了解代码性能是至关重要的。Google推出上一篇Natter源码解析STUN协议实现与端口转发机制下一篇Super Mario 64 构建缓存清理时间定期维护创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考