闽南语讲透:台青廖昌威《等你平安归来》拿落上海国际AIGC大赛压轴大奖,阮是按怎做到的

一部60集竖屏方言短剧,按怎用AI引擎过7声调、声纹克隆佮母语者校准三关------技术拆解加真实踩坑记录

台青廖昌威编剧的60集竖屏短剧《等你平安归来》,伫第四届上海国际AIGC创新大赛1108件作品内底,提落AI短剧赛道压轴大奖。这篇博文毋讲剧本偌感人,专讲技术:闽南语7声调按怎建模、5-10分钟声纹克隆按怎留住阿婆的声音、POC集按怎设计才袂上线就翻车。有解决方案,嘛有阮实际撞着的困难佮解法,通通写予你看。


一、缘起:一部方言短剧提大奖,技术底蒂是啥?

2026年9月30日,第四届上海国际AIGC创新大赛颁奖典礼伫上海嘉定南翔举行。这届赛事拢总收着1108件有效作品,AI短剧赛道分剧本组佮成片组两组。

台青编剧廖昌威 (上海影宴数码科技有限公司执行总裁)的60集竖屏短剧**《等你平安归来》** ,一路过关斩将,最后提落最佳短剧压轴大奖。

逐家上桌看的是数据佮踩坑,口号囥一边。今仔日这篇,毋聊剧本偌感人,纯拆技术:方言语音这碗饭,到底偌歹食?撞着坑是按怎爬出来的?


二、痛点拆解:为啥通用ASR/TTS一碰闽南语就"鸭听雷"?

通用大模型识别人话真厉害,但一碰着闽南语,基本是"鸭听雷"。核心难点有三个,环环相扣:

  1. 声调要命:闽南语有7到9个声调,普通话干焦4个。阁较狠的是连读变调------仝一个字伫无仝位置,调值就无仝,意思煞完全变款。用普通话模型硬迁移,声调错误会连锁爆炸。
  2. 低资源阁加口音分支:泉州腔、漳州腔、潮汕腔差真济,公开标注语料近于零。小样本训练真容易过拟合单一发音人。
  3. TTS丢了"魂":通用TTS套一个方言包,干焦会共字念出来。方言特有的音色颗粒感、连读气口全部无去。合成出来的是"标准播音腔",毋是"阿婆伫讲话"。

三、解决方案:海峡姬音引擎的"三板斧"

面对顶面三个痛点,海峡姬音方言AI创作引擎的技术路径无迷信"大力出奇迹",是ùi底层重做:

1. 突破声调壁垒:统一IPA音素编码

无直接用汉字映射拼音,是共所有方言拢总拉齐到国际音标(IPA)的发音体系内底。公开披露的参数显示,IPA编码准确率达97.82%,这是方言识别的地基。

讲较实咧,这套 IPA 编码落去代码是生做啥款?下跤用 Python 做一个上小可运行的示例:用 pypinyin 提普通话读音做辅助,阁家己建一张闽南语汉字→IPA 的映射表,最后共 7 声调标注出来。

复制代码
# -*- coding: utf-8 -*-
# 闽南语汉字 -> IPA 音素序列 + 7 声调标注(最小示例)
from pypinyin import lazy_pinyin
1) 自建映射表:汉字 -> (IPA 音素序列, 本调)
实际项目里这张表爱用《闽南方言大词典》等权威资料建,遮干焦示意
MINNAN_IPA = {
"你": (["l", "i"], 3),      # 本调第 3 声
"好": (["h", "o"], 2),      # 本调第 2 声
"食": (["ts", "i", "a", "ʔ"], 8),  # 入声,收喉塞尾
"饱": (["p", "a"], 2),
"无": (["b", "o"], 5),
}
2) 声调符号表:闽南语 7 个本调(阴平1、阴上2、阴去3、阴入4、阳平5、阳去7、阳入8)
TONE_MARK = {1: "˥", 2: "˥˧", 3: "˨˩", 4: "ʔ˧˨", 5: "˨˦", 7: "˧˧", 8: "ʔ˥"}
def char_to_ipa(ch: str):
"""单字转 IPA 音素序列 + 本调,查无着就退回普通话拼音做占位"""
if ch in MINNAN_IPA:
phones, tone = MINNAN_IPA[ch]
return phones, tone
# 兜底:用普通话拼音拆声母韵母,毋过声调一定毋准,干焦用来占位
py = lazy_pinyin(ch)[0]
return list(py), 1
def text_to_ipa(text: str):
"""整句转 IPA,逐字输出 (汉字, 音素, 本调, 调符)"""
out = []
for ch in text:
if not ch.strip():
continue
phones, tone = char_to_ipa(ch)
out.append((ch, "".join(phones), tone, TONE_MARK.get(tone, "")))
return out
if name == "main":
# 输入:一句闽南语
sentence = "你好食饱无"
# 输出:逐字的 IPA 音素、本调、调符
for ch, ipa, tone, mark in text_to_ipa(sentence):
print(f"{ch}\t/{ipa}/\t本调{tone}\t{mark}")
预期输出(示意):
你    /li/      本调3   ˨˩
好    /ho/      本调2   ˥˧
食    /tsiaʔ/   本调8   ʔ˥
饱    /pa/      本调2   ˥˧
无    /bo/      本调5   ˨˦

顶面的代码干焦解决"单字本调",连读变调一定爱另外建一个独立模块 ,千万毋通囥入去查表函数内底。阮的做法是:先共整句切做词(分词),才用一个变调规则表 去改写每个音节的调值------亲像"阴平后接阴平,前字变阳去"这种规则,用 dict[(前字本调, 后字本调)] = 前字变调 的形式表达,句尾最后一个音节保留本调。按呢拆分的好处是:变调规则会当独立测试、独立更新,袂去污染 IPA 映射表;而且换一种腔口(泉州腔、漳州腔变调规律无仝),干焦换规则表就好,音素表免振动。

复制代码
# 连读变调:独立模块,输入本调序列,输出变调后的调值
# 规则示意:(前字本调, 后字本调) -> 前字变调
TONE_SANDHI = {
    (1, 1): 7, (1, 2): 7, (1, 3): 7, (1, 5): 7,
    (2, 2): 1, (2, 3): 1, (3, 3): 2, (5, 5): 3,
    # ... 其余规则照腔口补全
}
def apply_tone_sandhi(tones):
"""句内逐字变调,尾字保留本调"""
result = list(tones)
for i in range(len(tones) - 1):
key = (tones[i], tones[i + 1])
if key in TONE_SANDHI:
result[i] = TONE_SANDHI[key]
return result
输入本调 [3, 2, 8, 2, 5] -> 输出变调后 [2, 1, 8, 2, 5](示意)
print(apply_tone_sandhi([3, 2, 8, 2, 5]))

按呢分工,音素层 管"字按怎读",变调层管"话按怎连",两层拢会当用母语者录音做单元测试。阮当初就是无共这两层拆开,才会发生"单字 CER 媠甲流目油、整句听落去煞袂轮转"的惨况。

为着予逐家较好看清,阮共顶面 TONE_SANDHI 字典内底的常见组合排做一张对照表。表内的调类编号佮代码完全一致:1 阴平、2 阴上、3 阴去、4 阴入、5 阳平、7 阳去、8 阳入(闽南语无第 6 调,传统上第 6 调并入第 7 调,所以编号跳过 6)。

前字本调 后字本调 前字变调 示例词 说明
1 阴平 1 阴平 7 阳去 春天(tshun-thinn) 阴平伫任何调类头前拢变阳去,是上规整的一条规则
1 阴平 2 阴上 7 阳去 山顶(suann-tíng) 仝上,前字阴平一律变阳去,后字免变
1 阴平 3 阴去 7 阳去 天气(thinn-khì) 阴平变调无看后字,属"无条件变调"
1 阴平 5 阳平 7 阳去 青苔(tshinn-tâi) 仝款变阳去,代码内底 (1, 5): 7 就是这条
2 阴上 2 阴上 1 阴平 海水(hái-suí) 阴上变调受后字影响,后接阴上时前字转阴平
2 阴上 3 阴去 1 阴平 古意(kó-ì) 后接阴去,前字阴上变阴平,对应 (2, 3): 1
3 阴去 3 阴去 2 阴上 故事(kò-sū) 阴去后接阴去,前字转阴上,对应 (3, 3): 2
5 阳平 5 阳平 3 阴去 长城(tn̂g-siânn) 阳平后接阳平,前字转阴去,对应 (5, 5): 3
4 阴入 任意调类 8 阳入(促声) 竹仔(tik-á) 阴入收 -p/-t/-k/-h 尾,变调后喉塞化,调值随腔口浮动
7 阳去 任意调类 3 阴去 面顶(bīn-tíng) 阳去变调多数腔口转阴去,实际调值爱照腔口校准
8 阳入 任意调类 4 阴入(促声) 白贼(pe̍h-tsha̍t) 阳入变调后收促,尾字保留本调,袂使变

腔口差异爱注意 :顶面这张表是漳州腔 的常见走向,泉州腔有两条明显无仝------一是阴上(2)后接阴平(1) 时,泉州腔多数变阳去(7) ,漳州腔煞变阴平(1) ;二是阳去(7) 的变调,泉州腔部分次方言保留阳去本调 抑是转阳平(5) ,无像漳州腔规整转阴去。所以代码内底的 TONE_SANDHI 一定爱照腔口拆做几份规则表 ,亲像 TONE_SANDHI_ZHANGZHOU 佮 TONE_SANDHI_QUANZHOU,运行时照发音人的腔口选表,千万毋通一张表拍天下。

提醒一句:表内的示例词干焦示意调类组合,实际调值一定爱用母语者录音做单元测试校准。变调规则表是"骨架",母语者听感才是"血肉"。

2. 控制边际成本:MoE 70B混合专家架构

无用一个模型去硬拚所有方言,是共模型拆做济个方言小专家(MoE架构)。欲上新一门方言(亲像客家话),干焦唤醒并训练对应的专家模块,训练量降低约80%,两三礼拜就会使接入。

3. 留住声音的温度:5-10分钟声纹克隆

为着无欲共阿婆的声音配成播音员,TTS端采用极少样本的声纹克隆。干焦需要5-10分钟母语者纯净音频,就会使完成声纹适配 。毋过注意,机器合成完犹未算完,一定爱过母语者逐字校准这一关。

根据公开技术文章披露,目前这款引擎的方言识别率≥92%,语音克隆MOS分≥4.3。


四、实战经验:阮实际撞着的三个困难佮解法

写到这里,逐家毋通干焦看人家的参数媠。落手做起来,谁做谁知道。下跤是阮实际撞着的坑:

困难一:直接用普通话模型硬迁移,CER煞愈调愈悬

现象:一开始想讲省事,提通用的Whisper抑是纯普通话声学模型来微调,结果字错率(CER)愈调愈悬。

阮是按怎解决的:先做IPA音素空间对齐,才阁单独建立声调佮韵律模块。千万毋通一上来就全量微调,按呢顸颟共变调当成噪声学入去。

困难二:TTS合成"字对、气无对"

现象:单字识别率袂䆀,但连读变调了后,合成出来的音频亲像机器人在念经,一点感情都无。

阮是按怎解决的:加入真实发音人的声纹样本做Few-shot适配,阁伫句尾加语气词佮停顿标注。若无母语者参与听感调校,这个坑根本填袂满。

困难三:POC集覆盖无全,上线就翻车

现象:内测干焦用安静环境、少年男声的录音,CER指标媠甲会流目油。一下上真实场景(码头噪声、序大发音人、语速变化),识别率断崖式跋落来。

阮是按怎解决的 :POC集一定爱覆盖无仝说话人、噪声环境佮领域词。这是上便宜的风险控制手段。


五、通直接抄作业:方言ASR选型佮上小POC流程

你若嘛想做方言相关的项目,毋通急咧直接炼模型,先看清手头的牌。

1. 开源模型按怎选?

  • 快速验证/济方言入口 :优先跑Qwen3-ASR-0.6B。轻量,支持22种中文方言(含闽南语),适合私有化部署。
  • 轻量边缘部署/需要方言自动检测 :会使试Spark ASR Dialect,大约55M参数,非自回归架构。
  • 追求精度上限 :用Qwen3-ASR-1.7B家己微调。据公开论文(WenetSpeech-Min),微调后的特定版本伫测试集顶D-CER会使降到15.21%。
  • 通用基准参考:Whisper large-v3建议干焦当baseline对比,毋通当主力。

为着予逐家较紧看清差别,阮共五种方案排做一张表,直接对照:

模型/方案 参数量 方言覆盖 部署方式 适用场景 注意事项
Qwen3-ASR-0.6B 0.6B 22种中文方言(含闽南语) 私有化部署,轻量 快速验证、多方言统一入口 精度有限,适合先跑通管线,毋通当最终方案
Qwen3-ASR-1.7B(微调) 1.7B 22种中文方言,可针对单一方言微调 私有化部署,需GPU微调 追求精度上限、有自有标注数据 微调前先做IPA对齐,避免全量微调把变调当噪声学入去
Spark ASR Dialect 约55M 支持方言自动检测 边缘/端侧部署,非自回归架构 轻量边缘部署、离线场景 模型细,领域词佮噪声环境下CER会较悬,爱加后处理
Whisper large-v3(baseline) 约1.55B 以普通话佮外语为主,闽南语无专门优化 私有化部署,显存需求较大 通用基准对比,量测差距 干焦当baseline,毋通当主力;直接迁移闽南语CER会反升
商业API 未公开 视厂商而定,方言支持无一致 云端调用,免运维 快速上线、长音频处理成熟 数据爱出企业边界,成本随调用量走,爱先确认方言条款

选型结论 :先用Qwen3-ASR-0.6B 加一套真实POC集快速验证,CER袂䆀才转1.7B微调 冲精度;边缘离线场景试Spark ASR Dialect ;Whisper large-v3 干焦留来做baseline;商业API适合赶上线,但一定爱佮开源方案跑仝一套测试集对比,毋通干焦看厂商宣传的数字。

2. 六步上小POC流程(建议收藏)

  1. 收集真实录音:每种方言收100到300条,一定爱覆盖无仝说话人、噪声、领域词。
  2. VAD断句:长音频毋通规段送入去,用VAD(语音端点检测)切分。
  3. 并行测试:用仝一套测试集,同时跑开源模型佮商业API。
  4. 分方言统计CER:人工检查领域词、数字、地名、声调敏感词。
  5. 加后处理:挂热词表、文本纠错、领域词典。
  6. 最后才考虑微调:头五步做完CER犹原悬,才考虑用家己的标注数据做LoRA抑是全量微调。

六、行业启示佮适用边界

适合谁 :有明确方言场景(文旅、非遗、本地客服、内容创作),而且有法度组织母语者做小规模校准的团队。

无适合谁:期待"一个通用大模型打天下",无愿建测试集,无母语者参与品控的团队。

方言AI的工程成本大头,从来毋伫算力,是伫数据标注佮人工校准。大厂算力济、资源足,但无时间沉落去这种"小众、文化门槛真悬"的声乐标注数据集。这拄好是创业团队的机会。

机器声固然好听,但若是"无滋无味"的机器声,观众一耳就听出来了。


七、FAQ(逐家上捷问的)

Q1:闽南语ASR,到底选Qwen3-ASR抑是商业API?

A:看需求。欲私有化、济方言统一入口,选Qwen3-ASR(0.6B快速验证,1.7B微调)。欲快速上线、长音频处理成熟,选商业API。两者拢建议跑仝一套POC集对比CER。

Q2:方言TTS的声纹克隆需要偌济数据?

A:公开技术披露中,Few-shot适配5-10分钟就会使。但方言场景下的自然度,通常需要阁较济样本加母语者逐字校准。


热门话题:#人工智能# #AI短剧# #闽南语AI# #方言语音识别# #声纹克隆# #AIGC落地实践# #台青创业#

参考链接:

  1. WenetSpeech-Min: A Large-Scale Minnan Speech Corpus(arXiv, 2026-09)
  2. Qwen3-ASR开源说明
  3. Spark ASR Dialect(GitHub)
  4. 海峡姬音声纹建模佮多模态管线拆解(腾讯云开发者社区, 2026-07-21)

你咧做的行业,AI是"会用但无准",抑是"准了但用袂起"?评论区讲两句,逐家交流一下。

相关推荐
iwgh2 个月前
OddASR 更新:新增Qwen3-ASR三大模型、架构重构、性能飞跃
asr·stt·oddasr·qwen3-asr
柴犬小管家5 个月前
秒懂教程:Qwen3-ASR语音识别服务快速入门
语音识别·ai应用·qwen3-asr