AI完全离线的ASR语音识别+TTS语音合成+大模型对话

说明

完全离线的 语音识别 + 语音合成 + 大模型对话 一体化桌面应用。

说话 🎙️ → 识别成文字 → 大模型回答 → 语音朗读 🔊,全流程本地运行,隐私安全。

源码地址: https://github.com/dowhere/AI-offline-voice-ASR-TTS

功能

  • 🎙️ 语音识别 --- 浏览器实时录音识别 / 上传音频文件识别,支持中/英/粤/日/韩,自动语种检测 + 情感识别
  • 📝 识别记录 --- 自动保存识别历史,支持复制、导出文本
  • 💬 AI 对话 --- 本地或在线大模型对话,支持语音输入、流式回复、多会话管理
  • 🔊 语音合成 --- AI 回复自动朗读,多发音人(Kokoro TTS),构成完整语音对话闭环
  • ⚙️ 模型管理 --- 默认接入本地 Ollama,也可添加任意 OpenAI 兼容的在线大模型(URL + API Key + 模型)
  • 🔒 完全离线 --- ASR 用 SenseVoice ONNX,TTS 用 Kokoro,LLM 默认走本地 Ollama

界面预览

语音识别

录音或上传音频,实时转写为文字,并显示语种、情感、时长。

识别记录

所有识别结果自动入库,可复制、导出、清空。

AI 对话

语音或文字提问,大模型流式回答,回复可自动 / 手动语音朗读;左侧多会话管理,顶栏可切换模型与发音人。

模型管理

默认内置本地 Ollama(127.0.0.1:11434),可添加在线大模型并设为默认。

快速开始

方式一:直接运行打包版(推荐给最终用户)

dist/AI语音助手/ 目录双击 AI语音助手.exe 即可,界面秒开,模型在后台加载(左下角实时显示加载状态)。

分发时发送整个 dist/AI语音助手/ 文件夹,并确保 models/ 文件夹在该目录下(见下方"打包与分发")。

对话功能需本机运行 Ollama;语音识别、语音合成完全独立、无需 Ollama。

方式二:源码运行(开发者)

环境要求

  • Python 3.10 ~ 3.12
  • Ollama(如需本地对话),并已拉取模型(推荐 qwen3:8b / qwen3.5:9b

安装依赖

bash 复制代码
uv venv .venv --python 3.12          # 或 python -m venv .venv
.venv\Scripts\python.exe -m pip install -r requirements.txt

启动(三选一)

bash 复制代码
# 桌面 GUI(推荐)
双击 启动.bat            # 带日志窗口
双击 启动-无黑窗.bat     # 仅应用窗口
.venv\Scripts\python.exe gui.py

# 浏览器模式(仅后端)
.venv\Scripts\python.exe server.py   # 然后访问 http://127.0.0.1:8000

模型管理

进入「⚙️ 模型管理」页:

  • 本地 Ollama (默认):无需配置,自动读取 127.0.0.1:11434 已安装的模型。
  • 在线大模型 :点「+ 添加模型」,填写
    • 类型:OpenAI 兼容
    • 接口地址:如 https://api.deepseek.com/v1
    • API Key:如 sk-...
    • 模型:可点「拉取」自动获取列表,或手动填写
  • 支持测试连接、设为默认、编辑、删除;配置持久化到本地 data.db(API Key 不回传前端明文)。
  • 对话页顶栏的模型下拉按来源分组,本地与在线模型可随时切换。

语音合成 (TTS)

  • 模型:Kokoro v1.0(24kHz,多语言多发音人)
  • 中文 G2P:misakizh(jieba);英文 G2P:espeak-ng
  • 发音人:中文 8 个(小晓 / 小妮 / 小北 / 小艺 / 云希 / 云健 / 云扬 / 云夏),另有多个英文发音人
  • 对话页顶栏可选发音人、开关「自动朗读」;每条 AI 回复也有 🔊 手动朗读按钮

首次英文合成需 spaCy 英文小模型 en_core_web_sm(纯中文对话不需要)。

离线安装:下载 en_core_web_sm-3.8.0-py3-none-any.whlpip install

打包与分发

双击 打包exe.bat(或运行 pyinstaller AI语音助手.spec --noconfirm),

dist\AI语音助手\ 生成 onedir 免解压 应用目录(约 1.2GB,主 exe 约 90MB)。

采用 onedir 模式是为了 秒开界面------onefile 单文件每次启动需解压上千兆依赖(约 2~3 分钟),onedir 免解压,双击后约 1 秒即出界面。

分发结构(模型体积大,不打进 exe,需放在应用目录下):

bash 复制代码
AI语音助手/
├── AI语音助手.exe
├── _internal/           # PyInstaller 依赖 (自动生成)
└── models/              # 手动放到此处
    ├── Sensevoice-Small-ONNX/
    └── KokoroTTS/

运行时会在应用目录生成 data.db 保存识别记录、对话历史与模型配置。

启动流程(为何秒开)

  1. 双击 exe → onedir 免解压,后端仅初始化数据库,界面立即弹出
  2. 界面加载完成后,才在后台异步加载 ASR / LLM / TTS 三个引擎
  3. 左下角「模型状态」实时显示各引擎:🟡 加载中 → 🟢 就绪 / 🔴 失败
  4. 哪个引擎亮绿灯,对应功能即可使用(ASR 最快,TTS 因 torch 稍慢)

项目结构

bash 复制代码
.
├── gui.py              # 桌面 GUI 启动器 (pywebview 原生窗口)
├── server.py           # FastAPI 后端 (ASR/TTS/LLM/模型管理 接口)
├── asr_engine.py       # SenseVoice ONNX 语音识别引擎
├── llm_engine.py       # LLM 对话引擎 (Ollama + OpenAI 兼容)
├── tts_engine.py       # Kokoro TTS 语音合成引擎
├── db.py               # SQLite 存储层 (记录/会话/消息/模型配置)
├── frontend.html       # 单页 Web 前端
├── paths.py            # 源码/打包 路径适配
├── AI语音助手.spec     # PyInstaller 打包配置 (onedir)
├── VoiceRecorderApp.png / app.ico   # 应用图标
├── requirements.txt    # Python 依赖
├── 启动.bat / 启动-无黑窗.bat / 打包exe.bat
├── imgs/               # 界面截图
└── models/
    ├── Sensevoice-Small-ONNX/   # ASR 模型
    └── KokoroTTS/               # TTS 模型 (含多发音人)

技术栈

组件 技术
语音识别 SenseVoice-Small ONNX (kaldi-fbank + LFR → Encoder → CTC → SentencePiece)
语音合成 Kokoro v1.0 (misaki 中文 G2P + espeak-ng 英文 G2P)
大模型 本地 Ollama / 任意 OpenAI 兼容在线接口
后端 FastAPI + Uvicorn
桌面外壳 pywebview (WebView2)
存储 SQLite
前端 单页 HTML + Web Audio API
打包 PyInstaller (onedir)
相关推荐
海兰1 小时前
【高速缓存】 RedisVL MCP 运行指南(下)
人工智能·redis·哈希算法·高速缓存
aneasystone本尊1 小时前
Headroom 上手:wrap 与 proxy 两种接入方式实战
人工智能
老猿AI洞察1 小时前
智能视觉检测平台——完整商业化项目全功能详解
人工智能·yolo·计算机视觉·视觉检测
小和尚同志1 小时前
超级慢讯:推推 Vercel 出的 skills.sh
人工智能·aigc
wechat_Neal1 小时前
BERT 家族
人工智能·产品运营
LaughingZhu1 小时前
Product Hunt 每日热榜 | 2026-07-26
人工智能·深度学习·神经网络·搜索引擎·百度
m0_626535201 小时前
图搜相关损失 softmax 相关
人工智能
rain_sxr1 小时前
从压缩行列号到源码定位:前端错误监控的 Source Map 解析与聚合
人工智能
怪奇云呼军2 小时前
闪电智能 Voice Agent 怎样根据语速、停顿和追问方式切换话术?策略引擎拆解
开发语言·人工智能·网络协议·算法·语音识别·web app