Skip to content

Repository files navigation

AnkiVoice

English README

AnkiVoice 是一个面向 Windows 的本地 Web 控制台,用于把 Anki 卡组中的文本批量生成语音并写回到笔记字段。项目通过 AnkiConnect 读取卡组和笔记,通过 GPT-SoVITS 生成音频,并可选用 AI 帮助选择角色模型或参考音频。

特性

  • 支持读取 Anki 中的全部卡组并在网页端选择
  • 默认使用通用字段映射,不再依赖特定卡组
  • 保留 JLPTGreen Book 作为可选预设
  • 网页端可修改 AnkiConnect、GPT-SoVITS 路径与运行配置
  • 默认中文界面,支持右上角中英切换
  • 网页端配置支持自动保存,同时保留手动保存按钮
  • 支持扫描本地角色语音库并配置角色权重
  • 提供中英文文档和 GitHub 发布辅助文件

当前支持范围

  • 已验证平台:Windows
  • 依赖服务:
    • Bun
    • Anki + AnkiConnect
    • GPT-SoVITS
  • 未验证平台:macOS、Linux

快速开始

1. 安装依赖

bun install

2. 可选:配置 AI 选择能力

如果你需要 AI 自动选择角色或参考音频:

  1. 复制 .env.example.env
  2. 填入你的 API Key

如果不需要 AI 选择,可以跳过这一步。

3. 启动服务

开发模式:

bun run dev

生产模式:

bun run start

打开浏览器访问:

http://127.0.0.1:3000

使用流程

1. 准备 Anki

  1. 启动 Anki
  2. 确认安装并启用了 AnkiConnect
  3. 在网页端点击 Test Connection
  4. 点击 Load Decks 加载所有卡组

2. 预览卡组并设置字段映射

  1. 选择目标卡组
  2. 点击 Preview Deck,或在选择卡组后等待页面自动刷新字段预览
  3. 根据字段预览选择映射模式:
    • Generic single field
    • Generic prefix pair
    • JLPT preset
    • Green Book preset
    • Legacy auto detect
  4. 在字段下拉框中直接选择源字段、目标字段;前缀模式再填写前缀

推荐默认使用:

  • Generic single field:普通单字段文本卡组
  • Generic prefix pair:形如 Sentence1 -> Audio1 的多字段卡组

3. 配置 GPT-SoVITS

  1. 填写 模型库路径
  2. 填写 API Endpoint
  3. 点击 Scan Library
  4. 选择语言、作品、角色、模型和参考音频

模型库路径 填写的是语音模型库,而不是 GPT-SoVITS 程序根目录。它支持两种填法:

  • 直接填写 CharacterVoice
  • 填写 CharacterVoice 的上级目录,程序会自动继续查找 CharacterVoice

4. 模型库目录与命名规则

推荐目录结构:

<你的模型库根目录>/
  CharacterVoice/
    Chinese/
      MySeries/
        MyCharacter/
          MyCharacter-e15.ckpt
          MyCharacter-e15.pth
          MyCharacter.yaml
          reference_audios/
            line_01.wav
            line_02.wav
          emotion_labels.txt

支持规则如下:

  • 角色目录推荐为 CharacterVoice/<语言>/<作品>/<角色>/
  • 参考音频可直接放在角色目录,也可放在 reference_audios/reference_audio/
  • 参考音频文件名可自定义;如果存在 emotion_labels.txt,每行使用 文件名[TAB]情绪 进行映射
  • 模型文件使用 .ckpt.pth;如果同一角色有多套模型,建议文件名包含角色名或明显后缀,便于区分
  • YAML 可直接放在角色目录,与模型同名或接近命名最稳妥
  • 也支持把 YAML 集中放在 <语言>/models/,例如:
CharacterVoice/
  Japanese/
    models/
      Sakura.yaml
      Sakura_fast.yaml
    MySeries/
      Sakura/
        Sakura-e10.ckpt
        Sakura-e10.pth
        reference_audio/
          line_01.wav

集中放置 YAML 时,文件名应包含角色名。扫描器会按角色名和常见别名匹配这些 YAML。

配置说明

本地保存文件:

  • 配置:data/config.json
  • 日志:logs/app.log

这些文件默认不应提交到 git。

项目结构

src/        Bun + Elysia 后端
public/     网页控制台
docs/       项目文档与发布说明
.github/    GitHub 模板
data/       本地配置与运行数据(不提交)
logs/       本地日志(不提交)
tmp/        临时文件(不提交)

开发

运行测试:

bun test

贡献说明见 CONTRIBUTING.md

发布到 GitHub

发布前建议先阅读:

建议 release 说明至少包含:

  • 支持通用 Anki 卡组映射
  • 保留 JLPT / Green Book 预设
  • 仅 Windows 完成验证
  • 中英文 README

已知限制

  • 当前仅在 Windows 环境验证
  • 没有为外部服务依赖建立 CI
  • GPT-SoVITS 的目录组织仍然要求和当前扫描逻辑兼容

License

MIT

About

Windows-first web console for generating and writing back Anki audio with AnkiConnect and GPT-SoVITS.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages