Auto Word Audio

unlisted

by MindData

Automatically attach audio pronunciation for vocabulary words, with support for online streaming and local caching.

1 starsUpdated 2mo agoMIT
View on GitHub

Auto Word Audio

一个为 Obsidian 单词笔记自动添加音频发音的插件。

核心架构

关键特性:Markdown 中只存储简单标记,由插件负责解析和提供音源

这个设计的优势:

  • 📝 Markdown 文件保持简洁易读
  • 🔄 后期可随时切换音源,无需修改笔记
  • 🎛️ 所有音源策略由插件统一管理
  • 💾 支持本地缓存和在线音源的灵活切换

工作流程

[markdown]
{audio: wisdom}
        ↓
    [插件]
    ├─ 解析标记
    ├─ 检查本地是否存在 Audio/wisdom.mp3
    ├─ 决定使用本地或在线源
    └─ 渲染为 <audio> 标签
        ↓
[预览/阅读视图]
<audio controls src="..."></audio>

使用方法

基本用法

  1. 在单词笔记中按格式书写:
[[wisdom]] /ˈwɪzdəm/
?
{audio: wisdom}
[n.] 智慧;名言,格言
  1. 打开命令面板(Ctrl/Cmd + P),执行:

    • 为当前行添加音频标记 - 为光标所在行的单词添加标记
    • 为文件所有单词添加音频标记 - 批量为整个文件添加标记
    • 立即同步音频到本地 - 手动触发音频下载
  2. 在预览/阅读视图中会自动渲染为音频播放器

Markdown 格式

标准音频代码块语法:

```word-audio
wisdom
```

插件会自动识别并渲染为可播放的音频组件。

设置选项

基本设置

  • 本地音频目录:音频文件保存位置(默认 .plugins-data/auto-word-audio
  • 在线音频模板:音频 API 地址,使用 {{word}} 作为占位符
  • 优先使用本地音频:本地文件存在时优先使用本地
  • 单词匹配正则表达式:自定义单词识别规则(默认匹配 [[word]] 格式)
  • 批量处理目标文件夹:执行批量操作时的目录路径

定期同步设置

  • 启用定期同步:开启后台自动下载
  • 同步间隔:5-180 分钟可选
  • 每次最大下载数:限制单次下载量(5-200)

音频源配置

有道词典(默认)

https://dict.youdao.com/dictvoice?audio={{word}}&type=2
  • type=1 英音
  • type=2 美音

其他音频源示例

# Cambridge Dictionary
https://dictionary.cambridge.org/media/english/uk_pron/{{word}}.mp3

# Collins
https://www.collinsdictionary.com/sounds/hwd_sounds/{{word}}.mp3

工作流程建议

  1. 初次使用

    • 批量为所有单词添加音频标记
    • 执行手动同步下载到本地
  2. 日常学习

    • 启用定期同步(推荐 30 分钟间隔)
    • 新增单词时使用"为当前行添加音频标记"
  3. 离线学习

    • 确保已同步所有音频到本地
    • 开启"优先使用本地音频"
  4. 切换音源

    • 只需修改"在线音频模板"设置
    • 所有 {audio: word} 标记会自动使用新源
    • 无需修改任何笔记内容!

与 Media Extended 插件配合

本插件生成的 <audio> 标签完全兼容 Media Extended 插件,可以获得:

  • 更强大的播放控制
  • 快捷键支持
  • 播放列表功能
  • 更多媒体格式支持

开发

# 安装依赖
npm install

# 开发模式(自动重新编译)
npm run dev

# 生产构建
npm run build

许可证

MIT

反馈

如有问题或建议,欢迎提交 Issue。

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.