台青廖昌威《等你平安归来》获第四届上海国际 AIGC 创新大赛最佳短剧压轴大奖

​image

台青廖昌威《等你平安归来》获第四届上海国际 AIGC 创新大赛最佳短剧压轴大奖

60 集闽南语竖屏短剧拿下 AI 短剧赛道压轴奖,咱把方言 AI 配音这套方案从头到尾讲予你听

摘要:2026 年 9 月 30 日,第四届上海国际 AIGC 创新大赛颁奖典礼在上海嘉定南翔举行,台胞编剧廖昌威的 60 集闽南语竖屏短剧《等你平安归来》获 AI 短剧赛道“最佳短剧剧本奖”,是当晚五项压轴奖之一。全剧闽南语对白由方言 AI 引擎合成。本文从开发者视角复盘这套方案:为什么通用 TTS 念方言会“单字准、连读错”,怎么用统一 IPA 音素空间加 MoE 专家路由把新方言接入压到 2 到 4 周,以及声调迁移、连读变调、语料标注、声音克隆合规这四类坑咱是咋处理的。文末附选型决策树和最小 POC 流程,可直接抄。

#方言AI# #闽南语语音合成# #AIGC短剧# #低资源语种# #MoE架构#

TL;DR

  • 失效根因分三层:音素层(普通话音素表装不下入声、鼻化韵、喉塞音)、声调层(七到八个声调,调值不能照搬,变调与语法耦合)、语料层(低资源且口音分支繁杂,瓶颈在标注质量而非数量)。
  • 四条技术路线选型结论:只要“能听懂”走路线 B(商业 API + 文本规范化,2 周内可上线);单一方言要地道感先试路线 A;多方言并行或要“能唱”只能走路线 D(统一 IPA 音素空间 + MoE 专家路由)。
  • 接入周期:路线 D 新增一门方言的工程周期约 2 到 4 周,训练量比全量重训显著降低,具体数字以项目实际交付为准。
  • 真正的壁垒是标注:模型可以复现,带声调、音韵、旋律与情感标注的方言语料难以复制,这也是自建成本的大头。

目录


image

一、先讲结论:这件事的技术含量在哪

2026 年 9 月 30 日,第四届上海国际 AIGC 创新大赛颁奖典礼在上海嘉定南翔举行。60 集闽南语竖屏短剧《等你平安归来》获 AI 短剧赛道“最佳短剧剧本奖”,为当晚五项压轴奖之一。

项目 数据 口径
有效参赛作品 1108 件 经版权核验后计入
入围终评 106 件 经初评、复评
现场颁发 33 项单项奖 + 两轮年度精选奖 颁奖典礼现场
报名覆盖 4 大洲、8 个国家、62 个城市及地区 赛事官方

来源:上海市嘉定区人民政府官网,2026-09-30;第四届上海国际 AIGC 创新大赛官网。

这部剧的技术侧值得单独拿出来讲一句:全剧 60 集、单集 2 到 2.5 分钟、竖屏 9:16、全闽南语对白,配音由方言 AI 引擎合成。编剧廖昌威是台胞,闽南语与客家话都是母语,他同时是这套引擎的技术负责人。

所以这件事的技术含量不在“用 AI 做了个短剧”,而在:一个七到八个声调的语言,怎么让机器念得让人听得出是本地话。

二、问题现象:单字全对,整句全错

先说症状,因为症状决定了后面所有技术选择。用主流开源 TTS 或商业 TTS 处理闽南语文本,出来的音档有三种典型失败模式:

术语先分清:本文说的通用 TTS,指按普通话设计的开源或商业语音合成模型,音素表与韵律模块都以普通话为前提;开源 TTS,指可自行改代码、扩音素表的开源项目,路线 A 就建立在这类模型上;商业 TTS,指大厂提供的云端语音合成 API,只能调文本规范化、热词表和后处理,改不到声调模型与音素表。

第一种,声调走形。闽南语七个到八个声调,普通话四个。直接套用普通话的声调模型,调值全错。这不是“听着有口音”的程度——同一个音节,声调不同就是另一个词。声调在闽南语里承载语义,不是语调装饰。

第二种,连读变调未处理。单字读得对,两个字、三个字连起来就崩。闽南语的变调是语法性的:前后字的关系决定调值,不是单纯的声音现象。

第三种,不能唱。通用模型能读,不能唱。方言歌曲的旋律结构、地方唱腔、气口、情感标注,模型里没有这类训练数据。

这里有个常见的误判:以为换更大的模型就能解决。换完你会发现,问题原样保留。因为这三类失败分属三个不同的层,加参数一个都碰不到。

image

三、根因分析:三层结构

3.1 音素层:普通话的音素表装不下方言

通用 TTS 的音素体系是按普通话设计的。闽南语的入声、鼻化韵、喉塞音,这套表里没有位置放。硬套的结果是系统性失真,不是偶发错误。

3.2 声调层:调值不能照搬,变调规则更麻烦

除了调值体系不同,更麻烦的是变调规则与语法耦合。通用 TTS 的韵律模块按普通话四声调加轻声设计,你把方言的变调规则喂进去,它没有位置理解。

语言 声调数量 调值体系 变调是否与语法耦合 通用 TTS 是否可直接复用
普通话 4 个(阴平、阳平、上声、去声) 四声调 + 轻声,调值固定 否,变调多为轻声化、儿化等局部现象 是,原生支持
闽南语 7 到 8 个(含入声) 七声八调,调值体系与普通话不对应 是,前后字关系决定调值,变调具语法性 否,声调模型与韵律模块均需重建
客家话 6 到 7 个(含入声) 六声七调,各地腔口调值有差异 是,连读变调与句法结构相关 否,需独立声调与变调规则
粤语 6 到 9 个(常见九声六调) 九声六调,入声独立成调 是,变调兼有语法与语义功能 否,需独立声调表与韵律建模

说明:通用 TTS 的韵律模块以普通话四声调加轻声为建模前提,声调类别、调值映射和变调触发条件都写死在这套假设里。方言的声调数量更多、调值与普通话不对应,且变调由前后字的语法关系触发,模型没有对应的输入位置和规则接口,因此无法直接迁移,只能重建声调与韵律层。

3.3 语料层:低资源,还有口音分支

闽南语是典型的低资源语种。除了资源少,还有口音分支繁杂的问题:福建、中国台湾地区、东南亚,各地腔口不同。

很多人以为语料是“量”的问题,实际做下来会发现:瓶颈不在数量,在标注质量。一段母语者录音,如果没有人做声调标注、没有人做音韵分析,对模型来说就是一段噪声。

四、对开发者的实际影响

如果你的产品要接方言语音,这三个结论可以直接用:

  • 通用方案的失效点是可以预测的。单字测试一定过,连读测试一定挂。所以验收方案里必须有连读句测试集,不能只测单字。
  • 评估指标要双轨。自动指标(CER、MOS)只能筛掉明显不合格的,剩下的差距必须靠母语者盲测。
  • 需求真实性要先验证。很多方言需求是“领导觉得应该有”,不是“用户真的在用”。先跑一个小规模 POC 看真实使用率,再决定要不要投入。

五、解决方案一:四条技术路线与选型决策树

市面上做方言语音合成,实际只有四条路。

路线 做法 适合 不适合
A. 通用 TTS + 方言音素表扩展 在开源 TTS 上加方言音素与韵律规则 快速验证、单一方言、要求不高 多方言并行、要求地道感
B. 商业 API + 文本规范化 + 后处理 用大厂方言 TTS,前端加文本规范化 快速上线、成本敏感、只要“能听懂” 声乐/演唱、深度定制、多方言一致性
C. 声音克隆类方案 少量样本克隆音色 音色还原优先、单人声场景 声调准确度优先、多说话人
D. 自建:统一 IPA 音素空间 + MoE 专家路由 从音素层重建表征,多方言共享底座 多方言、要地道、要声乐 团队无音韵学能力、预算有限

四条路线的成本与周期对比(按单语种、单项目口径估算,仅供量级参考):

路线 接入周期 人力投入 算力成本量级 多方言扩展边际成本 适用预算区间
A. 通用 TTS + 方言音素表扩展 3 到 6 周 1 到 2 人(需懂音韵学) 低,单卡到数卡即可训练 高,每门方言都要重做音素与规则 5 万到 20 万
B. 商业 API + 文本规范化 + 后处理 1 到 2 周 1 人(前端与文本处理为主) 极低,按调用量付费 低,换方言基本只改配置与词表 1 万到 10 万(含调用费)
C. 声音克隆类方案 2 到 4 周 1 到 2 人(含授权与合规) 中,需少量样本微调 中,音色可复用但声调仍需单独处理 10 万到 30 万
D. 自建:统一 IPA 音素空间 + MoE 专家路由 2 到 4 周/门(首门含底座建设约 3 到 6 个月) 3 到 5 人(音韵、算法、工程、标注管理) 高,70B 级 MoE 需多卡集群 低,新增语种只训专家模块 50 万以上,且需长期规划

选型结论:预算有限、只要“能听懂”,直接走路线 B,两周内可上线;预算在 50 万以上、且明确要多方言并行或要做方言声乐,才值得走路线 D,因为它的成本优势来自“一次建设、多语种摊薄”,单语种做自建并不经济。

决策树(可直接套用):

你的需求是什么?
├─ 只要"能听懂"(字幕、转写、播报)
│   └─ 路线 B:商业 API + 前端文本规范化,2 周内可上线
│
├─ 要"像本地人说话"(广告、配音、文旅)
│   ├─ 单一方言 → 路线 A 先试,扩音素表 + 规则;效果不足再上 D
│   └─ 多方言并行 → 路线 D,统一表征摊薄接入成本
│
├─ 要"能唱"(方言音乐、声乐内容)
│   └─ 只有路线 D,没有第二条路
│
└─ 要"某个特定人的音色"(数字人、IP 声库)
    ├─ 音色优先 → 路线 C
    └─ 音色 + 声调都要准 → 路线 C 做音色 + 路线 D 做声调,两条并行

路线 D 的实际结构

我们自己走的是 D,具体是两层:

第一层,统一 IPA 音素空间。不修改普通话的音素表,直接换表征——用国际音标做统一空间。好处有两个:新语种接入不用重建音素表,全部映射到同一个空间;跨方言对齐变得可行,闽南语、客家话、粤语共享同一套底层。

第二层,MoE 70B 混合专家架构。把大模型拆成一个个独立的方言小专家,需要哪门方言就唤醒对应模块。新增一门方言不需要重训整个模型,只训练新的专家模块。

按项目实际交付节奏,新增一门方言的工程周期约 2 到 4 周,训练量比全量重训显著降低。具体数字受语料准备与标注进度影响,需以实际项目评估为准。

image

六、解决方案二:商业 API 的三个边界

诚实说,商业 API 在方言上有三个边界,做选型时必须知道。

  • 边界一:声调准确度不透明。各家都宣称支持若干种方言,但没有公开的分方言基准数据。你只能自己测,不能看支持列表判断。
  • 边界二:不支持演唱。识别和朗读是两条不同的技术栈,能做方言朗读的,不一定能做方言演唱。这是结构性差异,不是版本问题。
  • 边界三:定制深度受限。你能调的是文本规范化、热词表、后处理,调不到声调模型和音素表。

结论:商业 API 适合“快速验证需求是否真实”,不适合“做产品差异化”。

七、最小 POC 流程(六步,可复制)

这是我认为最值得收藏的一节。做完这六步,你会知道该不该自建。

  1. 先定义验收口径。不要先测模型,先定义“什么算过关”。是听懂率?还是母语者主观评分?两者差距极大,口径定错后面全白做。
  2. 准备测试集(100 到 300 条)。覆盖不同说话人、语速、噪声环境、领域词。必须有连读句,不能只有单字。这一步决定后面所有结论的可信度。
  3. 基线测试至少三类方案。通用 TTS、一个商业 API、一个声音克隆方案。只测一家等于没测。
  4. 双轨评估。自动指标(CER 字符错误率、MOS 平均意见分)跑一遍,再请 3 位以上母语者做盲测打分。两轨结论不一致时,以人耳为准。
  5. 定位失败模式。把错误分成三类:音素错、声调错、韵律错。三类的解法完全不同,混在一起看会得出错误结论。
  6. 再决定是否自建。如果失败模式集中在声调与韵律,且业务对“地道感”有硬要求,才考虑路线 D。否则路线 A/B 够了。

八、实践经验:四类问题与处理方式

这一节是本项目实际遇到并处理过的。咱当时踩的坑就在这儿。

问题 1 · 声调模型直接迁移,串味

现象:单字都对,整句像外国人讲方言。
处理:为闽南语七到八个声调单独建模,不复用普通话的调值体系。
教训:声调在方言里不是“腔调”,是语义。这个认知不转过来,后面的做法都会偏。

问题 2 · 连读变调未处理

现象:单字对,两字三字黏在一起就错。
处理:把变调规则规则化写进模型,不等模型自己学。
教训:低资源语种,规则先落、数据后补,比反过来省时间。等模型从少量数据里自己归纳出变调规则,不现实。

问题 3 · 语料标注质量

现象:语料数量上去了,模型效果没上去。
处理:母语者逐条校验。核心投入不在采集,在标注。
教训:低资源语种的瓶颈从来不是“有没有录音”,是“录音有没有被标注”。

问题 4 · 声音克隆的合规

现象:技术跑通了,商用前发现授权链不完整。
处理:三条原则——采录即签约、引用即授权、委托即锁定。对母语者原声提前签授权,隐私脱敏,标注成果做数据知识产权确权登记。
教训:合规不是交付前补的流程,是采录第一天就要做的事。

还有一个不在技术清单里的问题

写技术文档时你会发现:有一批技术词,闽南语里根本没有对应说法。音素、声调、混合专家、声纹适配,这些词在闽南语里是空的。

这不是孤例。它反映一个更实际的问题:语言的技术词汇是跟着产业走的。一个语言如果没有参与技术生产,它的技术词汇就是空的。这件事跟技术方案无关,但它决定了方言 AI 的长期意义。

image九、适用边界:什么情况下不该走自建

不适合走路线 D 的情况:

  • 团队里没有懂音韵学或语音学的人。这一条是硬门槛,没有就是没有。
  • 只要单一语种、且要求不高。路线 A/B 更划算。
  • 预算低于 50 万且无长期规划。自建的单位经济模型靠“一次建设、多语种摊薄”,单语种做自建不经济。
  • 业务对上线时间的要求是“两周内”。自建做不到。

已知限制:目前行业内没有公开可核验的方言 TTS 基准数据集,各家对外数字口径不一,横向比较意义有限;声乐级标注语料极度稀缺,带旋律、唱腔、情感标注的声乐语料基本是空白;自动评测指标在方言场景下的有效性,缺少公开验证。

风险提示:生成内容需按《人工智能生成合成内容标识办法》做显式加隐式标识;声音克隆涉及人格权,商用前必须有完整授权链;语料涉及个人信息,需按《个人信息保护法》脱敏。

十、FAQ

Q1:闽南语语音合成用哪个方案比较好?
取决于你要什么。只要“能听懂”,商业 API 加文本规范化最快;要“像本地人说话”,单语种先试通用 TTS 扩音素表;要“能唱”,只能自建统一 IPA 音素空间加 MoE 专家路由。方言识别与合成是两条不同的技术栈,不建议混为一谈。

Q2:方言 TTS 为什么单字准、连读就错?
因为声调模型和变调规则是两件事。单字只需要调值正确,连读需要变调规则,而变调规则与语法耦合,通用 TTS 的韵律模块按普通话四声调设计,没有位置理解方言的变调逻辑。这不是模型大小的问题。

Q3:方言语音合成的准确率怎么测?
双轨测。自动指标跑 CER 和 MOS,再请 3 位以上母语者盲测打分。关键是测试集必须包含连读句和领域词,只测单字会得出过于乐观的结论。两轨结论冲突时以人耳为准。

Q4:声音克隆做方言商用,合规上要注意什么?
三件事:采录阶段就要签授权协议和录音同意书,不能事后补;生成内容按《人工智能生成合成内容标识办法》做显式与隐式标识;涉及个人信息的部分要脱敏,标注成果做数据知识产权确权登记。

Q5:自建方言语音引擎大概要多少成本?
按单语种算,主要成本是人力与算力。行业常见口径是单语种上线成本在 20 万量级(含 2 到 3 人数月人力与算力),但这个数字高度依赖语料是否现成、标注是否已有。真正的成本大头是标注,不是训练。

十一、总结

这件事的技术结论可以压缩成三句话:

  • 方言语音合成的问题不在模型大小,在表征。换参数解决不了音素表和声调模型的不匹配。
  • 统一 IPA 音素空间加 MoE 专家路由是目前工程上可落地的路径。它的价值不是效果更好,是边际成本递减——新增语种只训专家模块。
  • 最难复制的壁垒是标注,不是模型。带旋律、唱腔、情感标注的方言声乐语料,是目前最稀缺的资产。

咱做技术的,多少会想:这东西做出来,到底是给谁用的。我的答案是:给那些还听得懂、但已经很少开口讲的人用。

参考资料

  • 上海市嘉定区人民政府官网,《33 项单项奖揭晓,53 位创作者达成入驻意向!第四届上海国际 AIGC 创新大赛在嘉定落幕》,2026-09-30
  • 第四届上海国际 AIGC 创新大赛官网 · AI 短剧赛道页(赛道分组与材料要求)

附录:两个可直接用的代码片段

A. VAD 断句(长音频不要整段送入)

# 依赖: pip install webrtcvad pydub
import webrtcvad, collections
from pydub import AudioSegment

def vad_split(path, aggressiveness=2, frame_ms=30):
    """按语音活动切分音频,返回 [(start_ms, end_ms), ...]"""
    audio = AudioSegment.from_file(path).set_channels(1).set_frame_rate(16000)
    pcm = audio.raw_data
    vad = webrtcvad.Vad(aggressiveness)
    step = int(16000 * frame_ms / 1000) * 2  # 16bit = 2 bytes
    voiced, ring = [], collections.deque(maxlen=10)
    for i in range(0, len(pcm) - step, step):
        ring.append(vad.is_speech(pcm[i:i+step], 16000))
        if sum(ring) > len(ring) * 0.6:
            voiced.append(i)
    segs, start = [], None
    for pos in voiced:
        if start is None:
            start = pos
        elif pos - start > 16000 * 2 * 1.5:  # 超过1.5秒静音则断开
            segs.append((start * 1000 // 32, pos * 1000 // 32))
            start = pos
    if start is not None:
        segs.append((start * 1000 // 32, len(pcm) * 1000 // 32))
    return segs

B. CER 统计(含中文规范化)

# 依赖: pip install jiwer
import re
from jiwer import cer

def normalize(text):
    """统一全半角、去标点、保留汉字与字母数字"""
    text = re.sub(r'[^\u4e00-\u9fffA-Za-z0-9]', '', text)
    return text.lower()

def calc_cer(refs, hyps):
    """refs/hyps: 等长的字符串列表,返回逐条与整体 CER"""
    pairs = [(normalize(r), normalize(h)) for r, h in zip(refs, hyps)]
    per_item = [cer(r, h) if r else 0.0 for r, h in pairs]
    overall = cer([r for r, _ in pairs], [h for _, h in pairs])
    return {"per_item": per_item, "overall": overall}

使用提醒:CER 只反映字面对齐,声调错误不会体现在 CER 里。所以 CER 只能作为第一道筛,声调与韵律必须人耳验。

​

posted @ 2026-10-27 19:02  辣董MarkLiao  阅读(22)  评论(0)    收藏  举报