在语音识别领域,通用多语言模型已经能够支持越来越多的语言和方言。SenseVoice、Whisper、Qwen3-ASR 等模型都具备粤语识别能力,开发者也可以通过开源框架快速搭建本地语音转写服务。
但在真实业务中,经常会遇到一个问题:模型虽然支持粤语,却不一定能准确处理粤语口语、英文混说、专业词汇以及不同声学环境下的录音。
尤其是在会议、客服和行业语音应用中,同样一套模型可能在干净的单人语音上表现不错,到了多人对话或长音频场景却出现明显的识别偏差。
这就引出了一个值得研究的问题:
对于已经具备粤语识别能力的多语言模型,是否还有必要使用专门的粤语语料进行微调?
2026 年 AAAI 会议发表的 WenetSpeech-Yue 研究,为这个问题提供了一个比较有价值的答案。
研究团队构建了约 21,800 小时粤语语音数据,并使用这套数据训练和适配多种 ASR 模型。其中,基于 SenseVoiceSmall 微调得到的 SenseVoice-s-Yue,在专门设计的粤语评测基准上取得了明显改善。
这项研究的意义并不只是提供了更多粤语录音,而是展示了如何将大规模语音数据清洗、自动标注、置信度筛选与模型训练结合起来。
一、SenseVoice 已经支持粤语,为什么还要微调?
SenseVoiceSmall 是一个非自回归语音模型,公开版本支持普通话、粤语、英语、日语和韩语,同时提供语言识别、情感识别和声音事件检测等功能。
与自回归语音模型相比,SenseVoiceSmall 不需要按照传统文本生成方式逐个输出 token,在短语音批量识别任务中具有一定的推理效率优势。
其语音识别过程可以简化为:
text
音频输入
↓
声学特征提取
↓
SenseVoice Encoder
↓
非自回归文本预测
↓
识别结果
但模型在多语言数据上进行训练时,需要同时学习不同语言的声学与文本映射关系。
即使训练数据中已经包含粤语,也不意味着模型能够充分覆盖所有粤语使用场景。
以真实粤语交流为例,至少存在三类值得关注的问题。
第一,粤语口语与书面中文的差异。
例如:
原始粤语:
佢哋听日会过嚟开会。
标准书面中文:
他们明天会过来开会。
两种表达在语义上接近,但对于 ASR 任务,输出结果并不等价。
如果测试集要求保留粤语口语,而模型倾向于将其转换成标准中文,就可能出现较高的字符错误率。
第二,语言混用。
粤语语音中经常夹杂普通话和英文。
例如:
呢个 project 我哋下星期再 review。
模型需要在保留粤语表达的同时,正确识别 project 和 review 等英语词汇。
第三,训练数据与实际场景存在分布差异。
新闻播报、影视对白、日常聊天和客服通话,在语速、噪声、专业词汇和说话方式上都存在差别。
如果模型主要学习某些领域的音频,就可能对其他场景产生适应性问题。
因此,粤语专项微调的目标并不是让模型从零学习粤语,而是进一步调整模型对粤语声学特征、口语词汇和转写规范的适应能力。
二、WenetSpeech-Yue:21,800 小时语料解决了什么问题?
WenetSpeech-Yue 由西北工业大学等机构的研究团队发布,论文发表于 AAAI 2026。
项目构建了约 21,800 小时粤语语音数据,覆盖十个内容领域,包括故事、娱乐、影视剧、文化、Vlog、评论、教育、播客和新闻等。
与只提供音频和文本的数据集不同,WenetSpeech-Yue 还提供了多维度元数据。
例如:
| 数据字段 | 作用 |
|---|---|
| Audio Path | 定位语音文件 |
| Duration | 音频长度 |
| Text Confidence | 转写文本置信度 |
| Speaker ID | 说话人标识 |
| SNR | 信噪比 |
| DNSMOS | 语音质量评估 |
| Age / Gender | 说话人属性 |
| Timestamp | 音频与文本的时间对应关系 |
这些信息为后续的数据筛选提供了条件。
例如,进行高准确率 ASR 微调时,可以优先使用文本置信度较高、音频质量较好的样本。
如果目标是提升嘈杂环境下的识别鲁棒性,则不能简单把低信噪比音频全部删除,而需要根据训练目标保留一定比例的困难样本。
WenetSpeech-Yue 还建立了 WSYue-ASR-eval 评测基准。
其主要包括两组音频:
| 测试集 | 音频长度 | 总时长 | 说话人数量 |
|---|---|---|---|
| Short | 0---10 秒 | 9.46 小时 | 2861 |
| Long | 10---30 秒 | 1.97 小时 | 838 |
这两组数据用于研究不同音频长度下的识别效果,同时覆盖粤英混说及多种声学条件。
这里的 Long 指 10---30 秒语音,而不是一小时以上的完整会议录音。这一点在分析结果时需要区分。
从工程角度看,WenetSpeech-Yue 的重要价值在于:它让开发者能够从单纯增加数据量,转向根据语音质量、文本可靠性和业务场景选择训练样本。
三、真实实验结果:SenseVoice 专项微调之后改善了多少?
研究团队在 WenetSpeech-Yue 数据上构建了 SenseVoice-s-Yue,即针对粤语进行适配的 SenseVoiceSmall 模型。
为了比较适配前后的效果,可以直接观察官方 WSYue-ASR-eval 结果。
| 模型 | Short MER | Long MER |
|---|---|---|
| SenseVoiceSmall | 6.69% | 9.95% |
| SenseVoice-s-Yue | 5.23% | 8.63% |
| Whisper-medium | 80.82% | 50.96% |
| Whisper-m-Yue | 5.05% | 8.05% |
数据来自 WenetSpeech-Yue 官方发布的 ASR 基准结果。
其中使用的是 MER(Mixed Error Rate,混合错误率),中文部分按字符、英文部分按单词统计,而不是单纯的中文 CER。
从结果可以看出:
SenseVoiceSmall 在 Short 数据集上的 MER 从 6.69% 降低到 5.23%,相对下降约 21.8%。
在 Long 数据集上,MER 从 9.95% 降低到 8.63%,相对下降约 13.3%。
Whisper-medium 的变化更加明显,但这也与原始模型在该评测配置下的表现有关,不能据此推断所有 Whisper 版本的粤语识别能力都很差。
这组实验至少说明一个问题:
模型参数量不变的情况下,通过针对性数据训练,仍然有机会改善粤语识别效果。
SenseVoiceSmall 和 SenseVoice-s-Yue 都是约 234M 参数规模,改善并不是来自简单增加模型参数量。
不过,研究结果还有一个比较容易被忽略的细节。
在其他公开测试集上,专项微调并不总能带来提升。
例如:
| 测试集 | 原始 SenseVoiceSmall | SenseVoice-s-Yue |
|---|---|---|
| Common Voice yue | 8.05% | 6.87% |
| Common Voice zh-HK | 7.34% | 8.68% |
| Reading | 6.52% | 6.71% |
| WSYue Short | 6.69% | 5.23% |
| WSYue Long | 9.95% | 8.63% |
这意味着,粤语专项微调不一定能让模型在所有数据集上同步进步。
如果训练数据更接近某一种语言风格,模型就可能更适应该场景,却在另一类语音中出现性能退化。
因此,评价方言模型微调效果时,不应该只比较一个测试集的结果。
四、关键不是直接微调,而是先解决训练数据质量
WenetSpeech-Yue 的另一项技术重点,是它并没有简单依赖单一模型生成所有训练标签。
研究团队设计了 WenetSpeech-Pipe 数据处理流程,使用多个 ASR 模型进行自动转写,并通过文本规范化、候选结果对齐和投票形成更加可靠的训练标注。
主要流程如下:
text
原始粤语语音
↓
音频采集与 VAD 切分
↓
说话人属性与语音质量分析
↓
┌────────┬────────┬────────┐
↓ ↓ ↓
SenseVoice TeleASR Whisper
│ │ │
└────────┼────────┘
↓
文本规范化
↓
ROVER 对齐投票
↓
文本置信度评估
↓
高质量训练数据
↓
模型微调
这里面比较重要的是 ROVER(Recognizer Output Voting Error Reduction)。
它的基本思想是将多个 ASR 系统输出的文本进行对齐,并根据候选结果进行投票。
如果三个模型在某个位置都输出相同词语,说明该位置具有较高的一致性。
如果三个结果差别很大,则说明需要进一步检查。
WenetSpeech-Yue 还结合编辑距离过滤异常候选,并使用语言模型进行有限的上下文修正。
但模型之间的一致性并不等于真实准确率。
如果多个识别模型都犯了相同错误,投票也不能发现问题。
因此,ROVER 更适合作为构建高质量训练数据的辅助方法,而不是完全替代人工标注。
两阶段训练:先利用规模,再强调质量
论文采用了一种两阶段训练策略。
第一阶段使用中等及高置信度数据进行训练,充分利用较大规模的粤语语料,使模型适应目标语言和声学分布。
第二阶段则使用高置信度数据继续微调,进一步减少错误标注对模型的影响。
可以理解为:
text
预训练 SenseVoiceSmall
↓
第一阶段:
中等 + 高置信度粤语语料
↓
获得粤语适配模型
↓
第二阶段:
高置信度粤语语料
↓
优化文本预测质量
↓
SenseVoice-s-Yue
这种思路与直接把所有语料混合训练不同。
对于大规模自动标注数据,错误标签不可避免。训练初期可以适当利用较多样本,后期再通过高质量数据改善模型表现。
当然,两阶段训练也需要控制学习率、训练轮数及数据分布,避免高置信度数据过度集中于少数容易识别的场景。
五、实践:如何准备 SenseVoice 的粤语微调数据?
如果希望在已有 SenseVoiceSmall 模型上进一步适配企业自己的粤语语音,可以从小规模、已人工校对的数据开始。
例如,准备以下三类音频:
- 日常粤语交流;
- 粤语与普通话、英语混说;
- 包含企业专业词汇的业务录音。
不一定要从头训练数万小时数据。
对于具有明确场景的企业,几百小时高质量领域数据,有时比继续增加大量与目标场景无关的数据更有研究价值。但具体收益仍需要实测。
1. 准备音频与转写文件
FunASR 的 SenseVoice 微调流程支持使用 wav.scp 与文本文件构建训练数据。
例如:
train_wav.scp
text
utt_0001 /data/yue/audio/0001.wav
utt_0002 /data/yue/audio/0002.wav
utt_0003 /data/yue/audio/0003.wav
train_text.txt
text
utt_0001 呢个项目听日再讨论
utt_0002 我哋下星期review个proposal
utt_0003 客户话个系统仲未恢复正常
如果已经知道音频使用粤语,还可以准备语言标签文件:
train_text_language.txt
text
utt_0001 <|yue|>
utt_0002 <|yue|>
utt_0003 <|yue|>
其中 <|yue|> 对应粤语语言标记。
对于包含英语单词的音频,不建议随意将英文词汇全部转换成中文。
例如:
text
我哋下星期review个proposal
如果原始音频确实使用了英语 review 和 proposal,那么保留这两个单词能够使训练标注更加接近实际输入。
2. 转换成训练 JSONL
首先安装 FunASR 开发版本:
bash
git clone https://github.com/modelscope/FunASR.git
cd FunASR
pip install -e ./
随后可以使用 SenseVoice 提供的数据转换工具:
bash
sensevoice2jsonl \
++scp_file_list='["train_wav.scp","train_text.txt","train_text_language.txt"]' \
++data_type_list='["source","target","text_language"]' \
++jsonl_file_out="train.jsonl" \
++model_dir='iic/SenseVoiceSmall'
处理后的训练样本会包含音频路径、转写文本、语言标签以及训练所需的其他字段。
正式训练之前,还需要用同样方式生成验证集,并检查路径、音频格式、标签与模型配置是否一致。
这里建议特别注意说话人划分。
如果同一位说话人的音频同时出现在训练集和测试集,模型可能因为熟悉其声音特征而取得偏高的测试成绩。
因此,最好按照 Speaker ID 划分训练集、验证集和测试集,而不只是随机拆分音频文件。
3. 运行微调
SenseVoice 官方仓库已经提供 finetune.sh 及相应训练配置。
可以先克隆仓库:
bash
git clone https://github.com/QwenAudio/SenseVoice.git
cd SenseVoice
根据实际环境修改 finetune.sh 中的训练数据路径、预训练模型目录、训练输出目录及分布式训练配置,并确保 train_tool 指向当前 FunASR 安装目录中的 funasr/bin/train_ds.py。
配置完成后执行:
bash
bash finetune.sh
对于粤语专项适配,可以参考 WenetSpeech-Yue 的两阶段训练思路:
第一阶段使用规模较大的粤语训练集,第二阶段使用经过更严格筛选的高质量样本继续训练。
如果采用这种方式,需要分别记录两阶段的训练配置及验证结果,避免只保留最终模型而无法追踪性能变化来源。
对于实际业务,建议保留原始 SenseVoiceSmall 作为对照模型,同时保存第一阶段和第二阶段的检查点。
这样才可以判断性能改善来自哪一步,而不是只看最终结果。
六、如何验证微调是否真的有效?
完成训练以后,最简单的错误是只选择几段听起来不错的粤语录音,对比微调前后的识别文本,然后宣布模型效果提升。
这种方法只能用于初步观察,无法作为可靠评测依据。
更合理的方式是使用统一测试集,比较不同模型版本。
1. 加载原始模型与粤语适配模型
例如可以使用 FunASR 同时加载两个模型:
python
from funasr import AutoModel
from funasr.utils.postprocess_utils import (
rich_transcription_postprocess
)
base_model = AutoModel(
model="iic/SenseVoiceSmall",
device="cuda:0"
)
yue_model = AutoModel(
model="./models/sensevoice_small_yue",
device="cuda:0"
)
audio = "test_yue.wav"
def transcribe(model, audio_path):
result = model.generate(
input=audio_path,
cache={},
language="yue",
use_itn=True,
batch_size=1
)
return rich_transcription_postprocess(
result[0]["text"]
)
print("Base:", transcribe(base_model, audio))
print("Yue :", transcribe(yue_model, audio))
其中 ./models/sensevoice_small_yue 可以指向已经下载的官方粤语适配模型,也可以替换为自己训练得到的兼容检查点目录。
为了进行有效比较,两个模型应该采用一致的音频输入和文本后处理规则。
如果测试包含长音频,还应统一 VAD 切分方式,否则不同的音频片段边界也可能影响识别结果。
2. 不要只看 CER
对于纯粤语转写,可以统计字符错误率:
CER = (S + D + I) / N
其中 S 为替换错误数,D 为删除错误数,I 为插入错误数,N 为参考文本字符数。
但对于粤英混说,更适合增加 MER。
例如:
text
Reference:
我哋下星期review个proposal
Hypothesis:
我哋下星期review个project
按照中文逐字、英语逐词的评测方式,可以把 proposal 和 project 分别视为一个 token,再计算编辑距离。
这样不会因为一个英文单词包含多个字母而夸大其错误权重。
此外,企业测试还应该记录专业词汇、数字和否定词的准确性。
例如,系统将"唔使退款"识别成"需要退款",可能只产生少量字符错误,但对业务语义的影响非常明显。
3. 建议保留四类测试集
| 测试集 | 主要目标 |
|---|---|
| 日常粤语 | 基础方言识别能力 |
| 粤语 + 英语混说 | 语言切换能力 |
| 企业专业词汇 | 领域适配能力 |
| 普通话及其他原有语言 | 检查微调后的性能退化 |
如果微调后的模型只在企业粤语数据上表现更好,却明显降低了普通话识别能力,那么在多语言业务中未必适合直接替换原始模型。
可以考虑保留多语言基础模型,并针对不同场景选择适配模型,或者在训练中引入一定比例的原始多语言数据,降低灾难性遗忘的风险。
这也是为什么方言专项微调不仅需要关注最高准确率,还需要关注跨场景稳定性。
七、从粤语微调模型到企业语音能力,还需要什么?
开源模型研究解决的是如何提升识别质量,而企业实际使用时,还需要把模型转化成稳定的服务。
例如,一家企业可能已经拥有自己的客服系统、会议平台或行业软件,只是希望增加粤语识别功能。
这种情况下,并不一定需要重新建设完整应用,而可以通过独立 ASR 接口或本地推理模块提供能力。
比较常见的处理链路是:
text
企业业务系统
↓
音频文件 / 实时语音流
↓
VAD / 音频预处理
↓
粤语 ASR 服务
↓
文本规整与专业词处理
↓
结构化识别结果
↓
原有业务系统
但将微调后的模型真正投入使用,还需要考虑几项工程问题。
首先是模型的运行资源。SenseVoiceSmall 虽然属于相对轻量的语音模型,但不同推理框架、精度和计算平台下,内存占用与处理速度仍然可能不同。
其次是长音频处理。普通的分段识别不等于完整的长音频服务,还需要处理 VAD、片段拼接、重复文本和异常恢复等问题。
最后是部署方式。一些企业希望通过云端 API 使用语音识别,也有企业要求模型直接运行在内部网络或终端设备中。
在实际语音能力供应市场中,熙瑾信息提供的 ASR 技术已经覆盖包括广东粤语在内的 25 种方言,相关能力经过 CNAS 认可实验室检测,并支持端侧、离线以及独立模块集成等交付方式。
对于已有业务系统的企业,可以将方言语音识别作为底层能力接入,而不必改变现有的软件入口。
这里需要区分算法研究与产品工程:WenetSpeech-Yue 的公开结果展示了粤语专项训练的潜力,但不能直接作为其他 ASR 产品的实测成绩。模型是否适合某个企业项目,仍需要在目标音频、硬件和部署环境中验证。
对于真正的语音能力交付而言,除了识别质量,接口稳定性、运行效率和系统集成能力也会影响最终使用效果。
八、总结:粤语 ASR 的下一步,不只是增加训练数据
WenetSpeech-Yue 的研究展示了一种值得关注的技术路线:通过大规模粤语语料、自动标注、置信度筛选和分阶段训练,进一步提升已有语音模型对粤语的适应能力。
SenseVoice-s-Yue 在 WSYue 专项评测中的表现说明,即使不增加模型参数量,针对性训练仍然可能带来明显改善。
但研究结果也揭示了另一个问题:模型在某些粤语测试集上提升,并不意味着它已经能够在所有粤语场景中取得相同效果。
不同地区的口语习惯、语言混说方式、音频质量和业务词汇,都会影响最终识别表现。
因此,对于希望将粤语 ASR 用于实际业务的开发者来说,后续优化可以分成三个层次:
首先,通过 WenetSpeech-Yue 等公开资源提升模型对粤语的基础识别能力。
其次,结合具体行业语料完成领域适配,尤其关注专有名词、数字、否定表达和语言混说。
最后,将模型封装成能够独立部署、持续运行并接入现有业务系统的语音服务。
专项微调真正有价值的地方,不是让模型在某个基准上多提高几个百分点,而是让它能够更稳定地处理目标业务中实际出现的声音。
随着大规模方言语料和开源 ASR 模型不断完善,未来方言语音识别的优化重点,也会逐渐从"是否支持某种方言",转向数据质量、场景适配和工程化能力的综合提升。
参考资料
-
Li, L., et al. (2026). WenetSpeech-Yue: A Large-Scale Cantonese Speech Corpus with Multi-dimensional Annotation . AAAI 2026.
-
WenetSpeech-Yue 官方开源项目,包含数据集、处理流程与评测基准。
-
WenetSpeech-Yue ASR 模型权重及官方评测结果。
-
SenseVoice 官方项目,包含模型推理、微调配置与部署说明。
-
FunASR 语音识别框架。