Home
Softono

Anki TTS Edge

Open source Python
12
Stars
0
Forks
0
Issues
2
Watchers
4 months
Last Commit

 About Anki TTS Edge

A modern text-to-speech tool powered by Microsoft Edge TTS. Creates Anki audio instantly and serves as an immersive reader with real-time highlighting, click-to-play, and smart navigation. 现代化 Edge TTS 语音工具。既是 Anki 快速制卡神器,也是支持高亮跟随、即点即读与智能导航的沉浸式阅读器。

Platforms

Web Self-hosted Windows

Languages

Python

Links

Need Help Installing Anki TTS Edge?

We provide expert installation service for this software. Our team will install, configure, and secure Anki TTS Edge on your server. plans start at just $30.

Anki TTS Edge

View on GitHub

Anki-TTS-Edge

English Documentation

Anki-TTS-Edge 是一个基于微软 Edge TTS 技术的免费、高质量语音生成工具,它能快速的通过划选后生成音频,开启双音频(双点)模式后能选择两种不同的语音生成音频,生成音频后能自动复制到剪贴板,快速的粘贴到 Anki 之类的软件使用。也能作为语言学习、文章阅读的便捷朗读工具使用。 全新 v2.0 版本已使用 Flet (Flutter) 框架完全重构,带来更现代化的 UI、更流畅的动画和更强大的功能体验。

GitHub release (latest by date) GitHub last commit GitHub All Releases Downloads

🔄 最新稳定化更新(v2.9.2)

  • 修复换声音后仍播放旧音频:播放/朗读的缓存判定现在会包含 引擎 + 声音/音色(sid) + 语速/音量/音高 + 文本,切换声音后再次播放会自动重新生成。
  • 离线点读恢复(通过重新合成):离线 Kokoro 无时间戳时仍会显示可点击文本层;点击某字/词会停止当前播放并从该位置开始重新生成后朗读(不写入历史、不复制剪贴板)。
  • 离线模式 V1 说明:timestamps 仍为空(不支持逐词高亮跟随/毫秒级跳播与跳句 seek),但点读可用(通过重新合成实现);长文本会自动禁用点读层以保证性能。
  • 离线模式下的“声音列表”使用 Kokoro 官方音色目录(sid 分组:中(男/女)、英(女)、美(女)),并提供“离线语音音效听”跳转到官方试听页。
  • 引擎切换时会停止播放并清空当前音频状态,避免“切在线但还在播离线旧音频”的错觉;切换后提示需重新生成。
  • Edge 在线生成失败时界面会显示更具体的失败原因(便于定位网络/voice/服务端问题),并对常见“文本语言与 voice locale 不匹配”给出中文可理解提示。
  • 划词/复制触发生成加入忙时断路器,避免反复触发造成卡死和高占用。

✨ 核心特性

  • 全新现代化 UI:基于 Flet (Flutter) 重构,界面美观、响应迅速,支持深色/浅色主题切换。
  • 海量语音库:免费集成 300+ 个微软 Edge 神经网络语音,覆盖数十种语言和地区口音。
  • 高亮跟随朗读:朗读时单词实时高亮,精确同步,支持 "1"->"one" 等复杂符号映射。
  • 即点即读:朗读模式下,点击文段中任意单词/字符,立即从该位置精确播放。
  • 智能导航:支持"上一句/下一句"跳转,方便逐句校对学习。
  • 双语音模式:稳定的双声音槽位配置,可快速在两种不同声音(如一男一女、英音美音)间切换或生成。
  • 历史记录管理:自动保存生成历史,支持随时回听、删除与清空;深度清理回收孤立文件。
  • 智能监控
    • 复制后生成音频:复制文本后即可自动生成,并可按设置直接朗读。
    • 划词单/双语音模式:(Windows) 划词后通过 GO / A / B 快速决定生成方式。
  • 离线语音引擎(可选):设置页一键安装/校验/卸载并切换到本地 Kokoro(sidecar 下载,不增加主程序体积)。
  • 贴心功能
    • 系统托盘:支持最小化到托盘,后台静默运行。
    • 窗口置顶:钉在桌面最上层,方便配合 Anki 或浏览器使用。
    • 多语言界面:原生支持中文和英文界面,实时切换。
    • 用户数据集中管理:所有数据存储在 %APPDATA%/Anki-TTS-Edge/,干净整洁。

📸 界面展示

image

注:全新 Flet 界面,简洁直观

🚀 安装与运行

环境要求

  • Python 3.8 或更高版本
  • Windows 系统 (建议,以获得完整的划词监控支持)

快速开始

  1. 克隆项目

    git clone https://github.com/msjsc001/Anki-TTS-Edge.git
    cd Anki-TTS-Edge
    
  2. 安装依赖

    pip install -r Anki-TTS-Flet/requirements.txt
    

    注意:如果尚未生成 requirements.txt,可手动安装核心依赖:

    pip install flet==0.28.3 flet-desktop==0.28.3 edge-tts pygame pyperclip pynput pystray pillow pywin32
    
  3. 运行程序

    python Anki-TTS-Flet/main.py
    

👨‍💻 开发者指南

欢迎开发者参与 Anki-TTS-Edge 的开发与定制!以下是项目的核心架构与开发指南:

技术栈

  • UI 框架: Flet (基于 Flutter 的 Python 现代化 UI 框架),提供响应式设计和流畅动画。
  • 核心 TTS: edge-tts (微软 Edge 神经网络语音接口的非官方实现)。
  • 音频与多媒体: pygame (提供低延迟、稳定的多线程音频播放机制)。
  • 系统交互: pyperclip (剪贴板监听)、pystray / pillow (系统托盘驻留)。
  • 异步与并发: 深度使用 asyncio 进行异步 I/O 控制,确保 UI 线程在网络请求和音频生成时绝不卡顿。

开发核心技术点解析

  1. 字幕级高亮对齐 (Text-to-Speech Alignment) 利用 edge-tts 字典和时间戳,结合 Flet 的 TextSpanTextStyle 在音频播放回调中动态重绘文本区块背景颜色,达到“卡拉OK”式的精准单词同步。
  2. 全局输入/剪贴板监听器 (Background Monitor) 后台常驻轮询线程自动检测系统剪贴板变化(或光标选中文本)。检测到变化时,立即触发并提升应用窗口 (Bring to Front) 至最顶层,彻底节省了制卡时繁琐的复制粘贴点击步骤。
  3. 音频状态与垃圾回收 (Garbage Collection) 在历史记录管理模块实现了防泄漏的垃圾回收机制,使用哈希和路径跟踪音频和元数据 (.json);在清理操作时遍历本地真实文件列表以剔除“孤儿”(Orphaned)文件。
  4. 组件化与状态共享设计 UI 被拆分为独立的路由视图 (首页、历史记录、设置),相互之间通过全局状态管理器或配置注入进行低耦合通信。

📂 项目结构

Anki-TTS-Edge/
├── ARCHITECTURE.md      # 架构决策、运行链路与维护记忆
├── Anki-TTS-Flet/       # 主程序核心源码目录
│   ├── assets/          # 图标、本地化翻译文件等静态资源
│   ├── config/          # 默认配置定义及用户配置读写逻辑
│   ├── core/            # 业务逻辑大脑 (TTS 引擎操作, 时间戳对齐, 全局监听器, 历史纪录 IO)
│   ├── ui/              # Flet 页面组件视图 (分模块的UI页面及定制组件)
│   ├── utils/           # 通用工具函数 (文件操作, 文本格式化等)
│   └── main.py          # 程序入口与初始化挂载
├── .gitignore           # Git 忽略文件规则
└── README.md            # 项目文档

🔨 构建可执行文件 (EXE)

如需针对 Windows 构建独立的可执行程序,我们采用 PyInstaller 文件夹模式 (onedir) 进行打包:

⚠️ 重要提示:请勿使用 --onefile 模式。单文件模式会导致 Windows 下启动极慢(每次运行时需解压全部文件到临时目录,且容易触发杀毒软件扫描)。

# 请确保在虚拟环境中安装了 pyinstaller
pip install pyinstaller

# 根目录执行以下打包命令(文件夹模式,推荐使用仓库内的 .spec)
.\.venv\Scripts\pyinstaller.exe -y --clean Anki-TTS-Edge.spec

构建完成后,dist/Anki-TTS-Edge/ 目录即为完整的可发布程序,其中 Anki-TTS-Edge.exe 为入口文件。

📑 使用指南

  1. 选择声音:在首页顶部下拉框选择语言和具体发音人。
  2. 生成音频:输入或粘贴文本,点击 蓝色按钮 开始生成。
    • 左侧按钮:使用"语言 (左)"的配置。
    • 右侧按钮:使用"语言 (右)"的配置。
  3. 复制文件:生成中显示绿色,完成后变为红色。点击红点或按 Ctrl+C 即可复制音频文件路径(可直接粘贴到 Anki)。
  4. 查看历史:切换到頂部 **"历史"**页签,查看过往生成记录。
  5. 偏好设置:在 **"设置"**页签中自定义外观(深色模式)、行为(自动播放、最小化到托盘)等。
    • 如需离线模式:在“语音引擎”中切换为离线,并点击“自动下载并安装”。安装后可点击“重新校验”确认可用。

Made with ❤️ for Language Learners

📋 更新日志

详见 CHANGELOG.md


⚠️ 免责声明

本项目(Anki-TTS-Edge)仅供个人学习、研究和学术交流使用。

  1. 非商业用途:本软件并非微软官方产品,基于开源社区代码修改而来。使用本软件产生的任何音频文件仅限个人使用,严禁用于任何商业用途或公开传播。
  2. 免责条款
    • 本软件按“原样”提供,不提供任何形式的明示或暗示担保,包括但不限于适销性、特定用途适用性和非侵权性担保。
    • 在任何情况下,开发者(及贡献者)均不对因使用或无法使用本软件而引起的任何直接、间接、偶然、特殊、惩罚性或后果性损害(包括但不限于数据丢失、业务中断、计算机故障等)承担责任,无论这些损害是基于合同、侵权(包括疏忽)或其他法律依据,也无论开发者是否已被告知此类损害的可能性。
    • 用户应自行承担下载、安装和使用本软件的所有风险。
  3. 合规性:用户在使用本软件时,必须遵守当地法律法规及微软相关服务条款。任何因违反法律法规或服务条款而导致的法律责任,概由用户自行承担。

下载或使用本软件即表示您已阅读并同意上述所有条款。如果您不同意,请立即停止使用并删除本软件。