阿里通义实验室于近期开源了新一代语音识别模型Fun-ASR-Nano-2512,官方称其基于数千万小时数据训练,支持国内七大方言及多种口音的识别。本文将对其进行深度测评,重点测试其对客家话、四川话的识别能力,并在带有环境噪音的真实通话录音场景下,对比其与Paraformer、SenseVoiceSmall模型在转写准确率、推理速度及资源占用方面的表现。所有测试均在同一服务器环境下进行。
测试环境配置:
- CPU: Intel(R) Xeon(R) Platinum 8470Q (25核心)
- GPU: NVIDIA RTX 5090 (32GB显存)
- 内存: 90 GB
- 硬盘: 80 GB
以下为本次测评所使用的核心测试代码。
Fun-ASR-Nano 测试代码:
#!/usr/bin/env python
# _*_ coding utf-8 _*_
# @Time: 2025/12/15 20:18
from model import FunASRNano
import time
def main():
model_dir = "FunAudioLLM/Fun-ASR-Nano-2512"
start_model = time.time()
m, kwargs = FunASRNano.from_pretrained(model=model_dir, device="cuda")
end_model = time.time()
load_time_ms = (end_model - start_model) * 1000
print(f'加载模型Fun-ASR-Nano-2512耗时 {load_time_ms:.2f} 毫秒')
m.eval()
while True:
wav_path = input(f'输入音频路径')
if wav_path == 'exit':
break
start = time.time()
res = m.inference([wav_path], **kwargs)
end = time.time()
inference_time_ms = (end - start) * 1000
print(f'转写耗时:{inference_time_ms:.2f} 毫秒')
text = res[0][0]["text"]
print(text)
print(50*"-")
if __name__ == "__main__":
main()
SenseVoiceSmall 测试代码:
#!/usr/bin/env python
# _*_ coding utf-8 _*_
# @Time: 2025/11/8 23:53
from funasr import AutoModel
from funasr.utils.postprocess_utils import rich_transcription_postprocess
import time
model_dir = "iic/SenseVoiceSmall"
start_model = time.time()
model = AutoModel(
model=model_dir,
device="cuda",
disable_update=True,
disable_log=True,
disable_pbar=True,
)
end_model = time.time()
load_time_ms = (end_model - start_model) * 1000
print(f'加载模型SenseVoiceSmall耗时 {load_time_ms:.2f} 毫秒')
while True:
audio = input("请输入要处理的音频:")
if audio == 'exit':
exit(0)
else:
start = time.time()
res = model.generate(
input=audio,
cache={},
language="auto",
use_itn=True,
batch_size_s=60,
)
end = time.time()
inference_time_ms = (end - start) * 1000
print(f'转写耗时:{inference_time_ms:.2f} 毫秒')
text = rich_transcription_postprocess(res[0]["text"])
print(text)
print(50*"-")
Paraformer 测试代码:
#!/usr/bin/env python
# _*_ coding utf-8 _*_
# @Time: 2025/12/10 21:51
from funasr import AutoModel
import time
start_model = time.time()
model = AutoModel(model="paraformer-zh", disable_update=True, disable_log=True, disable_pbar=True, device="cuda")
end_model = time.time()
load_time_ms = (end_model - start_model) * 1000
print(f'加载模型paraformer-zh耗时 {load_time_ms:.2f} 毫秒')
while True:
wav_path = input(f'输入音频路径')
if wav_path == 'exit':
exit(0)
start = time.time()
res = model.generate(input=wav_path, batch_size_s=300, hotword='魔搭')
end = time.time()
inference_time_ms = (end - start) * 1000
print(f'转写耗时:{inference_time_ms:.2f} 毫秒')
print(res)
print(50*"-")
方言识别能力测试
客家话识别测试
- Paraformer:作为普通话通用模型,其转写结果基本错误,无法有效识别客家话。
- SenseVoiceSmall:识别效果略优于Paraformer,但准确率仍不理想。通过使用客家话数据集进行微调可显著提升能力,相关微调模型已开源。
- Fun-ASR-Nano:在三个模型中表现最佳,但其转写结果与标注文本仍有较大差距。对于生产环境应用,仍需使用大量客家话数据进行微调。实践表明,即使仅有几小时数据(如2000余条样本)进行微调,效果亦有明显提升。
四川话识别测试
测试表明,三个模型均具备一定的四川话识别能力。其中,Fun-ASR-Nano的准确率相对更高。若需进一步提升,同样建议进行针对性微调。例如,基于Paraformer模型使用205小时四川话数据微调后,识别效果得到改善(部分训练权重已开源)。
莆田话识别测试
三个模型对莆田话的识别效果均不理想。若需准确识别,需自行收集数据训练专用的ASR模型。
性能对比小结
- 推理速度:SenseVoiceSmall最快,Fun-ASR-Nano次之,Paraformer最慢。
- 资源占用:Fun-ASR-Nano因模型结构原因,资源占用最大,需6GB以上显存的显卡运行(显存占用约3.1GB)。在人工智能项目的模型选型中,需权衡精度与资源消耗。
- CPU推理:速度排序不变,但整体远慢于GPU推理。例如Fun-ASR-Nano在CPU上转写耗时约为GPU的7倍以上,对实时性要求高的场景推荐使用GPU。
真实通话录音转写测试(带强烈环境噪音)
测试选取了具有强烈环境噪音、音质较差(如8kHz采样率)的真实外呼录音。官方宣称Fun-ASR-Nano具备优秀的抗干扰能力。
测试结果显示,Fun-ASR-Nano对此类噪音音频的转写效果与SenseVoiceSmall相差不大,但明显优于Paraformer。对于更精确的量化评估,可编写自动化测试脚本进行批量测试与指标计算。
长音频处理问题
当输入长音频(如超过10分钟)时,发现以下问题:
- Fun-ASR-Nano:显存占用会显著增长,且在转写结束后不会释放回初始水平,同时输出结果可能出现完全错误的情况。
- SenseVoiceSmall:会对长音频进行自动截断处理,避免出现灾难性错误结果。
- Paraformer:输出中容易出现大量重复字词。
总结与建议
Fun-ASR-Nano在方言识别和抗噪能力上相比前代模型有进步,尤其在四川话识别上表现较好。但其资源消耗较大,长音频处理存在显存问题。对于特定方言(如客家话、莆田话)或极端噪音场景,若要投入生产使用,进行领域数据微调仍是提升准确率最有效的路径。开发者可根据实际业务场景在识别精度、推理速度与资源成本之间做出选择,并利用Python等工具进行快速的原型验证与效果评估。
相关资源参考:
- 基于205小时四川话数据微调的Paraformer模型:
https://modelscope.cn/models/lukeewin01/paraformer-large-sichuan-offline
- 基于2231条客家话数据微调的SenseVoiceSmall模型:
https://modelscope.cn/models/lukeewin01/SenseVoiceSmall_Hakka