Skip to content

xdfnet/iSpeak

Repository files navigation

iSpeak

Swift 6.0 macOS 14+ Apple Silicon VoxCPM2 + MLX MIT

让 AI 开口说话 — 基于 MLXAudio 的高质量本地语音播报


写代码时懒得看屏幕?iSpeak 自动把你的 AI 助手的回复读给你听。
音色自然、响应快、只说最新那句,不打扰你正在播的音乐。

🗣️ 替我读 ⚡ 秒回 🧹 少噪音 🎵 不打断 🔌 开箱即用
AI 回复自动播报
不用盯着屏幕
开口不到半秒
听到的速度
跳过代码/表格
清掉路径和 URL
播报前暂停音乐
播完自动恢复
一条命令装好
自动注册自启动

特性

  • MLXAudio + VoxCPM2 原生 TTSmlx-audio-swift 加载 VoxCPM2 架构(4bit 量化),统一模型加载和生成 API
  • Apple Silicon MLX — 本地 GPU 推理,隐私安全,RTF > 1.0(快于实时)
  • 4 种预置音色 — 温暖、甜美、知性、沉稳,按来源自动匹配
  • 零样本合成 — 无需参考音频即可生成自然语音
  • Streaming — 边生成边播,不等待

安装

git clone https://github.com/xdfnet/iSpeak && cd iSpeak
./install.sh              # 编译 + 部署 + 初始化 + 模型下载,一条命令搞定

播报时通过 iDict 自动暂停/恢复音乐,
需同时安装 iDict 并保持运行。

使用

安装完成后,服务已经在后台运行,无需任何操作。AI 助手回复时会自动播报。

基本命令

ispeak status              # 查看服务是否在跑
ispeak version             # 版本信息
ispeak speak "你好"         # 手动播报一段文本
ispeak speak -s codex "文本" # 指定来源(匹配音色)
ispeak speak -v dayi "文本"  # 指定音色

管理命令

ispeak restart             # 重启服务
ispeak stop                # 停止服务
ispeak serve               # 前台启动(调试用)

音色

ispeak voice list          # 列出所有音色
ispeak voice add -i my -n "我的音色" --ref-audio voice.wav --ref-text "参考文本"
ispeak voice remove my     # 删除音色
音色 ID 名称 说明
mizai 米仔 温暖自然,默认音色
taozi 甜妹桃子 活泼甜美,Claude 默认
wanwan 湾湾小何 温柔知性,Codex 默认
dayi 大易 沉稳可靠,Pi 默认

音色匹配规则:显式指定 --voice > sourceVoices 映射 > defaultVoice

refAudio / refText 只作为音色参考使用,不会作为要续读或朗读的正文。iSpeak 每条播报都是独立合成,不向模型传 continuation prompt。

模型

make model                # 准备模型缓存目录(模型由 MLXAudio 自动下载)

默认模型:VoxCPM2(4bit 量化),托管于 Hugging Face — mlx-community/Qwen3-TTS-12Hz-0.6B-Base-4bit

Hook 集成

安装后自动接入三个 AI 工具:

  • Claude Code~/.claude/settings.json — Stop Hook
  • Codex~/.codex/hooks.json — Stop Hook(首次触发时授权即可)
  • Pi~/.pi/agent/settings.json — Extension 注册

Codex 用户注意:首次触发 Hook 时需要确认允许,之后自动生效。

文本过滤

iSpeak 会在播报前做两层清洗:

  • Markdown 结构过滤:跳过代码块、行内代码、HTML、图片、表格、分隔线
  • 行内噪音过滤:清掉 URL、常见绝对路径、commit hash、UUID、终端转义、下载速度和 ETA 等朗读噪音

版本号、API 名、百分比和普通语义文本会保留。

开发

make build                # 编译 release
make deploy               # 部署 runtime 文件
make run                  # 编译 + 前台启动(看日志)
make clean                # 清理 .build

架构

模块 文件 说明
VoxCPM2 TTS mlx-audio-swift VoxCPM2 模型加载、流式合成、三模式音色(design/reference/hifi)
TTS Engine TTS/TTSEngine.swift 配置接入、合成、重试
音频播放 Audio/ PCM 播放队列、媒体控制(iDict 联动)
守护进程 Daemon/Daemon.swift Unix Socket 服务,接收播报请求
命令行 Commands/ ArgumentParser 子命令
配置 iSpeakKit/Config.swift JSON 配置读写

配置

~/.config/ispeak/config.json

{
  "model": { "path": "mlx-community/Qwen3-TTS-12Hz-0.6B-Base-8bit" },
  "defaultVoice": "mizai",
  "sourceVoices": { "claude": "taozi", "codex": "wanwan", "pi": "dayi" },
  "voices": [
    { "id": "mizai", "name": "米仔", "refAudio": "voices/ref_mizai.wav", "refText": "大家好…" }
  ]
}

refText 应填写参考音频里真实说出的文本,用于帮助模型对齐音色;它不是播报内容,也不会被自动续读。

部署文件全部在 ~ 下,删掉项目目录不影响运行。

数据流

AI 助手回复
    ↓ (Stop Hook)
ispeak speak "文本"
    ↓ (Unix Socket)
守护进程 → TTS 合成 (MLXAudio on MLX GPU)
    ↓ (PCM int16,保持模型采样率)
音频播放器 → 暂停音乐 (iDict) → 扬声器 → 恢复音乐

依赖

  • macOS 14 Sonoma+
  • Apple Silicon (M1+)
  • Swift 6 / Xcode 15+
  • iDict — 媒体控制(保持运行即可,无需额外配置)

许可

MIT

About

让 AI 开口说话 — 基于 MLXAudio + VoxCPM2 的高质量本地语音播报

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors