You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Speech框架自定义语言模型数据导出失败问题求助

Apple Speech自定义语言模型导出错误原因及解决方案

错误核心原因

你遇到的错误是iOS沙盒权限限制导致的:

  • iOS应用被严格限制在自身沙盒目录内运行,无法直接访问系统级的/var/tmp路径,应用没有该目录的写入权限,因此无法创建目标文件TestCustomModel.bin。
  • 后续的归档写入错误都是初始文件无法打开引发的连锁问题。

修复步骤

将导出路径替换为应用沙盒内的可写目录,比如应用临时目录或文档目录:

  1. 通过FileManager获取应用合法的可写目录URL
  2. 拼接目标文件名生成有效路径

修改后的代码示例:

import Speech

class DataHandler { // 避免使用系统类名Data作为自定义类名,防止命名冲突
    func export() async throws {
        let data = SFCustomLanguageModelData(
            locale: Locale(identifier: "en_US"),
            identifier: "personal.TestCustomModel",
            version: "1.0"
        ) {
            SFCustomLanguageModelData.PhraseCount(
                phrase: "Play the Albin counter gambit",
                count: 10
            )
            
            SFCustomLanguageModelData.PhraseCountsFromTemplates(
                classes: [
                    "piece" : ["pawn", "rook", "knight", "bishop", "queen", "king"],
                    "royal" : ["queen", "king"],
                    "rank" : Array(1...8).map({String($0)})
                ]
            ) {
                SFCustomLanguageModelData.TemplatePhraseCountGenerator.Template(
                    "<piece> to <royal> <piece> <rank>", // 修正原代码中的全角符号‹为半角<
                    count: 10000
                )
            }
        }
        
        // 获取应用临时目录(沙盒内可写)
        let tempDir = FileManager.default.temporaryDirectory
        let exportURL = tempDir.appending(path: "TestCustomModel.bin")
        
        try await data.export(to: exportURL)
    }
}

额外提示:

  • 原代码模板字符串中的‹是全角符号,建议替换为半角<,避免可能的模板解析问题
  • 不要使用系统类名(如Data)作为自定义类名,避免潜在的命名冲突

内容的提问来源于stack exchange,提问作者Goran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 04:11:03