本地离线语音方案一直是开发者的痛点。云端语音服务虽然方便,但在电梯、地下车库、飞机上等无网场景完全失效。本文对比并推荐了"SenseVoiceSmall(语音识别)+ MeloTTS(语音合成)"组合,两个模型加起来不到 500MB,在普通 CPU 上即可实时运行。
一、模型选型对比
语音识别(ASR)
SenseVoiceSmall 是最优解:242MB 的 ONNX 量化版,中文准确率 95%+,非自回归架构比 Whisper 快 15 倍,支持中/英/粤/日/韩,且完全不需要 GPU。
语音合成(TTS)
MeloTTS 日常全覆盖:192MB 纯 ONNX,CPU 秒级合成,中英混读自然流畅。需要克隆特定人声时可换 CosyVoice2。
二、为什么小模型比大模型更好用?
1. 速度才是硬道理
Whisper-large-v3 是自回归模型,1 分钟音频可能要 30 秒。SenseVoiceSmall 是非自回归模型,同样音频 不到 2 秒 完成。差了 15 倍。
2. 中文场景更优
SenseVoice 和 Paraformer 是阿里达摩院出品,针对中文优化。AISHELL 测试集上,Paraformer 的字符错误率(CER)仅 1-2%。
3. 量化无损
SenseVoiceSmall 的 ONNX 量化版(242MB)与原始 funasr 版(940MB)准确率几乎无差别,推理速度提升 30% 以上。
三、跑通本地语音识别
1. 安装依赖
pip install funasr
pip install onnxruntime
pip install modelscope
2. 下载模型
from modelscope import snapshot_download
model_dir = snapshot_download(
"FunAudioLLM/SenseVoiceSmall",
cache_dir="./models"
)
3. 转写脚本
from funasr import AutoModel
model = AutoModel(
model="./models/SenseVoiceSmall",
vad_model="fsmn-vad",
vad_kwargs={"max_single_segment_time": 30000},
)
result = model.generate(
input="test_audio.wav",
language="auto",
use_itn=True,
)
print(result[0]["text"])
4. 实时麦克风识别
使用 pyaudio 采集 16kHz 音频,每累积 2 秒调用 model.generate 即可实现实时转写。
四、跑通本地语音合成
pip install melotts
from melo.api import TTS
model = TTS(language='ZH_MIX_EN')
text = "你好世界!This is a test. 效果真的很不错!"
model.tts_to_file(text=text, speaker_id=0, output_path="output.wav", speed=1.0)
MeloTTS 支持 ZH / ZH_MIX_EN / EN / JP / KR / ES / FR。
五、ASR + TTS 串联
将识别与合成串联,即可构建完整的语音助手。结合 sounddevice 录音播放,实现"听-处理-说"闭环。
六、多模型切换
如需更高准确率,可切换到 Paraformer,只需改一行代码:
model = AutoModel(
model="paraformer-zh",
vad_model="fsmn-vad",
vad_kwargs={"max_single_segment_time": 30000},
)
七、避坑指南
- 音频采样率:SenseVoice 要求 16kHz 单声道,需用 librosa 或 ffmpeg 重采样。
- 长音频切分:启用 VAD 自动切分,避免 OOM。
- TTS 语速:speed 参数建议保持在 0.8-1.2 之间,过快会导致中文部分模糊。
八、方案总结
| 场景 | ASR | TTS | 大小 |
|---|---|---|---|
| 日常语音助手 | SenseVoiceSmall | MeloTTS | ~434MB |
| 高精度转写 | Paraformer-zh | MeloTTS | ~1.1GB |
| 极致轻量 | sherpa-onnx-small | MeloTTS | ~300MB |
| 声音克隆 | SenseVoiceSmall | CosyVoice2 | ~1.2GB |
核心优势:完全离线、中英混合、CPU 实时、模型小巧、开源免费。