一、项目简介
mica-voice 是一款基于 mica-sherpa-onnx(已发布 Maven Central 的 sherpa-onnx 全平台 fat jar)的 Java 声音 AI 全家桶,统一封装 ASR(语音识别)/ TTS(语音合成)/ 声纹识别 / VAD(语音活动检测)/ 说话人分离 / 关键词唤醒 KWS / 音频降噪 7 大能力,提供纯 Java 门面、Spring Boot Starter、Solon Plugin 与配套示例工程,兼容 JDK 8 / 17 / 21 / 25,模型按需下载、即开即用。Apache2.0 开源协议。
二、本次更新:v1.0.2(2026-09-03)
新功能
-
流式 TTS 接入实战:
mica-voice-example-spring-web新增流式 TTS WebSocket 示例,前端订阅/mica/voice/ws/streaming-tts,服务端按 100ms 切片推送 PCM,配合callback-sample-step实现边合成边播放,降低首字延迟。
构建 / 依赖 -
底层 native 依赖
mica-sherpa-onnx升级至 1.13.7,同步修复若干 JNI 兼容性问题。
三、历史更新
v1.0.1(2026-08-21)
新功能
-
mica-voice-core新增窗口移动比例(window-shift-ratio)配置,集成到说话人分离服务,提升音频窗口滑动灵活性。 -
补充各 Service Bean 与配置类的 JavaDoc 注释,IDE 提示与可维护性更友好。
问题修复 -
关键词唤醒 KWS:优化关键词识别结果处理逻辑,避免空结果或异常输出(感谢社区
@yaochao反馈,Gitee Issue#IK9TAJ)。 -
关键词唤醒 KWS:修正 KWS 模型目录名为
sherpa-onnx-kws-zipformer-wenetspeech-3.3M-2024-01-01,与 sherpa-onnx 官方命名对齐。
文档 -
重写主 README,优化
mica-voice-examples子模块描述,删除 starter 自动装配类的重复说明。
构建 / 依赖 -
底层 native 依赖
mica-sherpa-onnx升级至 1.13.6。
v1.0.0(2026-08-15)首发
-
mica-voice-core核心 SDK:统一的语音 AI 门面MicaVoice,一行调用即可获取离线 ASR、在线流式 ASR、TTS、声纹、VAD、说话人分离、KWS、音频降噪等服务(均实现AutoCloseable)。 -
离线 ASR:支持 Paraformer / SenseVoice / Whisper / Moonshine / Zipformer / NeMo CTC 等模型家族;SenseVoice 支持中 / 英 / 日 / 韩 / 粤多语言识别与逆文本规范化(数字、标点还原)。
-
在线流式 ASR:支持 Streaming Paraformer 与 X-ASR(Zipformer Transducer,960ms 分块),可配置端点检测规则(句尾静音自动结束)。
-
语音合成 TTS:基于 VITS,支持多说话人模型与中英混合模型(
vits-melo-tts-zh_en)。 -
声纹识别:注册 / 验证 / 搜索,支持 3D-Speaker / eres2net 等嵌入模型,相似度阈值可调。
-
说话人分离 + 转写组合服务:自动输出"谁在什么时间说了什么"。
-
mica-voice-spring-boot-starter:mica.voice.*配置开箱即用,自动装配 9 个 Service Bean(OfflineAsrService/OnlineAsrService/TtsService/SpeakerService/VadService/DiarizationService/KwsService/DenoiseService/OfflineDiarizationTranscribeService),应用关闭时统一释放 native 资源。 -
mica-voice-solon-plugin:与 Spring Boot 完全相同的配置树,一行接入 Solon 应用(JDK 8 ~ 26)。 -
mica-voice-examples集成示例:纯 Java 控制台、Spring Boot Web(REST + 浏览器麦克风 → WebSocket 流式 ASR)、Solon Web。 -
模型下载脚本:覆盖 Linux / macOS / Windows,多段并行下载 + Range 断点续传。
-
基于
mica-sherpa-onnx1.13.5(全平台 native fat jar),兼容 JDK 8 / 17 / 21 / 25。
四、模块结构
|
模块 |
作用 |
|---|---|
|
|
核心 SDK(纯 Java),统一 ASR / TTS / 声纹 / VAD 等 API,强依赖 |
|
|
Spring Boot 自动装配, |
|
|
Solon 自动装配插件,同样的配置树,一行接入 Solon 应用 |
|
|
集成示例聚合,含 console / spring-web / solon-web 三套工程 |
五、30 秒上手
Maven 依赖
net.dreamlu
mica-voice-core
1.0.2
Spring Boot 项目换成 mica-voice-spring-boot-starter,Solon 项目换成 mica-voice-solon-plugin,版本一致。
一行 ASR
MicaVoiceConfig props = MicaVoiceConfig.builder().modelsDir("models").threads(2).build();
AsrConfig config = AsrConfig.builder()
.modelDirName("sherpa-onnx-paraformer-zh-small-2024-03-09")
.modelType(AsrConfig.ModelType.PARAFORMER)
.build();
try (AsrService svc = MicaVoice.asr(props, config)) {
System.out.println(svc.recognize(new File("test.wav")).getText());
}
Spring Boot 注入
mica:
voice:
asr:
offline:
model-dir-name: sherpa-onnx-paraformer-zh-small-2024-03-09
model-type: PARAFORMER
@RestController
public class AsrController {
private final OfflineAsrService offlineAsrService;
public AsrController(OfflineAsrService offlineAsrService) {
this.offlineAsrService = offlineAsrService;
}
@PostMapping("/asr")
public String asr(@RequestParam("file") MultipartFile file) throws IOException {
File tmp = File.createTempFile("asr", ".wav");
file.transferTo(tmp);
try { return offlineAsrService.recognize(tmp).getText(); }
finally { tmp.delete(); }
}
}
六、模型准备
模型不随 jar 分发(体积大),按需下载到 models/ 目录(也可用 -Dmica.voice.models-dir=E:/.../models 指定绝对路径):
# Linux / macOS
bash models/scripts/download-models.sh asr # 按需换 tts / speaker / asr-online / x-asr / all
bash models/scripts/parallel-download.sh all # 并行下载,适合全量时加速
# Windows
models\scripts\download-models.bat asr # CMD
powershell -ExecutionPolicy Bypass -File models\scripts\download-models.ps1 asr # PowerShell
-
模型也上传到了夸克网盘: https://pan.quark.cn/s/d2da0116a472?pwd=kc5e 提取码:kc5e