提交一份模型信息,10 项检查里 5 项不过:硬错 2 项(名称带空格、没勾授权声明)会当场被拦;
另外 3 项不报错——语言写 zh-cn 而平台只认 zh(检索不到)、标签 6 个被截成 5 个、
素材只有 8 分钟(训出来发虚)。
上一节认了平台、算了数据量。 这一节填模型信息——它决定了这个模型以后能不能被搜到、能不能被信任。
一、元信息不是表格,是检索入口
模型训练完,别人(或者半年后的你)怎么找到它? 靠名称、语言、标签这三样。它们不是装饰,是平台内部检索的索引键。 所以填元信息的目标不是「填完能提交」, 是「搜的时候能搜到、看到名字能信」。这两个目标经常和「快点提交」冲突。 📋 实操清单:四栏必填——名称(英文小写加下划线)、语言(从下拉里选,别手打)、 标签(不超过 5 个)、描述(20 到 200 字,写清音色和使用场景)。 再加一个授权声明的勾选框。 名称、语言、标签、描述、可见性、授权——这六样加上训练素材和标签数,就是下面那 10 项检查的全部。
二、10 项检查,5 项不过
Demo 拿一份「看起来没问题」的信息过了一遍:
| 不通过的项 | 实际值 | 性质 |
|---|---|---|
| 名称只用字母数字下划线 | Alice Voice | 硬错,当场拦 |
| 已声明声音授权 | 未勾选 | 硬错,当场拦 |
| 语言代码在允许表 | zh-cn | 不报错,检索不到 |
| 标签不超过 5 个 | 6 个 | 不报错,多的被截掉 |
| 训练素材不少于 10 分钟 | 8 分钟 | 不报错,训出来发虚 |
| 两项硬错平台一定查:名称里有空格、授权声明没勾。这两条会直接把你挡在提交按钮外面。 | ||
| 另外三项它不查,因为平台不知道「8 分钟够不够」——它只检查字段格式,不检查字段值合不合理。 | ||
| 这个缝隙和上一章配置校验里的缝隙是同一个。 |
三、语言代码这条坑最深
zh-cn 看起来对,但允许表里只有 zh。
多出来的那截是「地区」,平台按词表精确匹配,于是匹配不上。
后果不是报错,是「这个模型在中文筛选下搜不到」。
它照样能训、照样能用,只是永远不会出现在别人按语言筛的结果里。
同类坑还有:en-US 对 en、Japanese 对 ja、中文 对 zh。
统一规律是「用 ISO 639-1 的两个字母码」。
所以这一栏的正确做法是从下拉框里选,永远不要手打。
手打的那一刻,你就在赌平台的匹配逻辑足够宽容。
四、命名与版本:三个月后还能认出来吗
Demo 里额外加了一项自定检查:
名称小写后不能是 voice/music/singer 这种通用词。这不是平台规则,是工程习惯。
理由很实际:你会有第二个、第三个模型。voice、voice2、voice_new 这种命名,
三个月后你自己都分不清哪个是最终版。
推荐写法:用途_音色_版本,比如 narrator_female_v3、ad_soft_male_v1。
加日期更稳:narrator_female_20261025。
还有一条:描述里写清「用什么素材训的、多少分钟、什么场景用过」。这段话不参与训练,
但它是这个模型唯一的「说明书」。别人接手时,先看的就是它。
五、动手 Demo:模型信息校验:10 项里 5 项不过,语言代码和授权最要命
造一份「看起来正常」的模型信息(名称带空格、语言写 zh-cn、标签 6 个、素材 8 分钟、授权没勾), 跑 10 项校验:名称长度与字符集、重名、语言码、标签数、描述长度、可见性、素材时长、授权声明、 通用词冲突,并区分哪些是平台会当场拦的硬错。
def chk(name, ok, msg, hard):
rows.append([name, u"通过" if ok else u"不对", msg])
if not ok:
probs.append((name, hard))
nm = meta["name"]
chk(u"名称只用字母数字下划线",
bool(re.match(r"^[A-Za-z0-9_]+$", nm)),
u"有空格" if u" " in nm else u"合法", True)
chk(u"语言代码在允许表", meta["lang"] in allow_lang,
u"%s 不在表里" % meta["lang"], False)
实跑输出:
--------------------------------------------------------------------
模型信息校验:10 项里 5 项不过,语言代码和授权最要命
--------------------------------------------------------------------
提交的模型名 Alice Voice
平台已有模型 4 个
检查项 结果 说明
------------------------------------------------------------------
名称长度 2 到 32 通过 11 个字符
名称只用字母数字下划线 不对 有空格
名称不与已有重名 通过 与已有 4 个比对
语言代码在允许表 不对 zh-cn 不在 en/ja/ko/yue/zh 里
标签不超过 5 个 不对 6 个
描述 20 到 200 字 通过 24 字
可见性取值合法 通过 public
训练素材不少于 10 分钟 不对 8 分钟
已声明声音授权 不对 未勾选授权声明
名称小写后不与常见词冲突 通过 不冲突
**10 项里 5 项不过,其中硬错 2 项。**
「名称带空格」和「没勾授权声明」当场被拦——**这两项平台一定查。**
「素材只有 8 分钟」不拦,但**训练出来一定发虚、尾音发散**:十分钟以下的数据量撑不住一个音色。
「标签 6 个」也不拦,只是超出的会被截掉——**你以为标了六个,实际只生效五个。**
「语言写 zh-cn」这条最值得说:允许表里只有 `zh`。
**多写的那截是「地区」,平台按词表精确匹配,于是检索不到。**
最后一项不是平台规则,是我自己加的:
**模型名别用 voice/music 这种通用词**,否则半年后自己都分不清。
10 项里 5 项不过,硬错 2 项:名称带空格、授权没勾。这两项是平台一定会拦的。
「语言不在允许表」那一行写得很直白:zh-cn 不在 en/ja/ko/yue/zh 里。
注意 yue(粤语)是单独的码,别指望 zh 能覆盖它。
「标签 6 个」不报错,
但超出的会被截掉——你以为标了六个,实际只生效五个。所以标签要按重要性排序,
前五个才是真正起作用的。
「素材 8 分钟」不拦,但这条影响的是结果质量:十分钟以下的数据量撑不住一个音色,
表现是尾音发散、长句走调。平台不会替你判断这件事。
「名称不与已有重名」这一项我特意真跑了一遍——拿提交的名字和 4 个已有名字比对。
真实平台上重名通常直接被拒,但本地先查一遍能省一次来回。
30 秒实验
- 把名称的
Alice Voice改成alice_voice,重跑,看「不过」从 5 项降到 4 项。 命名规则是唯一「改一下就好」的一项。 - 把语言从
zh-cn改成zh,看那行通过。 但请想一想:如果平台不报错、只是搜不到,你怎么发现这个问题? - 把标签从 6 个减到 5 个,并调整顺序,看前五个是哪些。顺序决定取舍——最想被搜到的放最前。
常见误区
- 「语言栏手打就行」。平台按词表精确匹配,
zh-cn对不上zh,结果是永远搜不到,还不报错。 - 「标签多标几个更容易被找到」。超出的会被截掉,按顺序取前五个——所以要按重要性排。
- 「名称随便起」。三个月后五个模型放一起,
voice2和voice_new你分不清哪个是最终版。
自测三问(点开对答案)
1. 元信息里哪三样是检索键? —— 名称、语言、标签。它们不是装饰,是平台内部检索用的索引。 2. 为什么 `zh-cn` 会导致搜不到? —— 允许表里只有 ISO 639-1 的两字母码 `zh`。多出来的地区码让精确匹配失败,而且不报错。 3. 素材不足 10 分钟会怎样? —— 平台不拦,但训出来的音色撑不住——尾音发散、长句走调。这类问题只能靠听样音发现。信息填对了,接下来把素材传上去开训。但在上传之前,那 40 段音频得先过一遍体检。
- ☐ (本节完,下一节 8.1.3 上传音频数据集并训练模型)