找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1352

积分

0

好友

189

主题
发表于 3 天前 | 查看: 10| 回复: 0

阿里通义实验室于近期开源了新一代语音识别模型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分钟)时,发现以下问题:

  1. Fun-ASR-Nano:显存占用会显著增长,且在转写结束后不会释放回初始水平,同时输出结果可能出现完全错误的情况。
  2. SenseVoiceSmall:会对长音频进行自动截断处理,避免出现灾难性错误结果。
  3. 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



上一篇:利用TTL值精准溯源:判断TCP RST报文是否来自真实服务器的实战技巧
下一篇:嵌入式异步日志模块设计与实现:从printf到Crash Dump的完整方案
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-24 19:15 , Processed in 0.368803 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表