日语语音识别:SenseVoice 一个模型搞定日语转写 + 标点 + 情感(附与 Whisper 的真实对比)

做日语语音识别,大多数人第一反应是 Whisper。但如果你要的是能在 CPU 上跑、又快又准、还自带标点和情感的开源方案,SenseVoice(FunAudioLLM 团队开源的多语种语音理解模型)是个被低估的选择:它原生支持日语(ja),自动识别语种,一次非自回归前向就输出带标点的文本,顺带还给出情感和音频事件。

下面是同一段日语音频上,SenseVoice 与同量级 Whisper-small 的真实输出对比(都在我们的服务器上实跑,未做任何挑选)。

真实对比:同一段日语音频

测试音频是一段口语化的日语发言。两个模型的真实输出:

模型识别语种输出
SenseVoice自动判 ja供給量が減る と ある程度は仕方ないんじゃね、転売の価格は論外だけど。
Whisper-smallja供給量が減るとある程度は仕方ないんじゃね天売の価格は論外だけど

关键差别在 転売 这个词:

说明一下口径:这里对比的是同量级的 Whisper-small(适合 CPU 部署的常见选择)。更大的 Whisper-large 通常能纠正这类同音字,但模型大得多、也慢得多;而 SenseVoice 在小模型体量下就把这个词写对了,还顺手给了标点和情感。

3 行代码跑通日语识别

pip install funasr

from funasr import AutoModel
from funasr.utils.postprocess_utils import rich_transcription_postprocess

model = AutoModel(model="iic/SenseVoiceSmall", disable_update=True)
res = model.generate(input="japanese.wav", language="auto", use_itn=True)

print(rich_transcription_postprocess(res[0]["text"]))
# 供給量が減る と ある程度は仕方ないんじゃね、転売の価格は論外だけど。

language 可以写 "ja" 明确指定,也可以像上面写 "auto" 让模型自动判语种——实测这段音频在 auto 下被正确判为 ja,结果与显式指定完全一致。

原始输出里还带了什么

SenseVoice 的原始输出每段开头有一串标签:

<|ja|><|NEUTRAL|><|Speech|><|withitn|>供給量が減る と ある程度は仕方ないんじゃね、転売の価格は論外だけど。

含义:<|ja|> = 语种是日语;<|NEUTRAL|> = 情感(中性);<|Speech|> = 音频事件(纯人声,可识别 BGM/笑声/掌声等);<|withitn|> = 已做逆文本归一化。也就是说,转写日语的同时,语种 / 情感 / 音频事件全都免费拿到了。用 rich_transcription_postprocess() 一行就能清洗成纯文本。

为什么日语识别值得试试 SenseVoice

SenseVoiceWhisper-small
日语同音字(転売)✅ 写对❌ 误为 天売
自动标点✅ 内置❌ 无
情感 / 音频事件✅ 一次出
逆文本归一化(ITN)✅ 内置部分
速度非自回归,实测 RTF≈0.04(GPU)自回归,更慢
多语种一个模型覆盖 50+ 语种(ja/ko/zh/yue/en…)多语种
许可证开源,可商用开源

如果你的场景是日语 + 中文 + 英文混合(跨境电商客服、字幕、会议),SenseVoice 一个模型就能全覆盖,还自带情感分析。想了解它的情感/事件检测能力,看 SenseVoice 情感与音频事件识别;不确定选哪个模型,看 FunASR 模型选型指南;中文准确率对比见 FunASR vs Whisper benchmark

FunASR 全家桶都是开源的——工业级 ASR / VAD / 标点 / 说话人 / 情感事件 / LLM-ASR,日语等 50+ 语种开箱即用。觉得有用就点个 Star 支持一下 👇

⭐ Star SenseVoice

也欢迎 Star:FunASR · Fun-ASR · FunClip

相关文章