首页 > 开源 > mica-voice 1.0.2 发布:Java 生态的声音 AI 全家桶,一行代码接入 ASR / TTS / 声纹 / VAD / 说话人分离 / KWS / 降噪

mica-voice 1.0.2 发布:Java 生态的声音 AI 全家桶,一行代码接入 ASR / TTS / 声纹 / VAD / 说话人分离 / KWS / 降噪

OSChina资讯 2026-09-20 10:25 12 阅读 查看原文

一、项目简介

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-startermica.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