|
|
一、项目简介
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-onnx 1.13.5(全平台 native fat jar),兼容 JDK 8 / 17 / 21 / 25。
四、模块结构
模块
作用
mica-voice-core
核心 SDK(纯 Java),统一 ASR / TTS / 声纹 / VAD 等 API,强依赖 mica-sherpa-onnx
mica-voice-spring-boot-starter
Spring Boot 自动装配,mica.voice.* 配置即开箱即用
mica-voice-solon-plugin
Solon 自动装配插件,同样的配置树,一行接入 Solon 应用
mica-voice-examples
集成示例聚合,含 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
原文链接 |
|