產生了多個英文的Anki閃卡後,這次來生成國文的注音閃卡,使用到的外掛是:

  1. Copilot: 調用ChatGPT生成卡片格式與注音
  2. Note Splitter: 依指定的分隔文字將一則筆記產生成多則筆記
  3. Yanki: 將產生的多則筆記同步到Anki系統

1. 用Copilot生成筆記

  • Extra欄位供音訊使用,正面的「、」會造成播音錯誤
將%BEGIN%與%END%之間的每行文字產生為指定的11行格式,格式定義如下:
第1行: 完整文字,但第一個雙引號轉換為「,第二個雙引號轉換為」(例如"釐"清要轉換成「釐」清)
第2行: 空行
第3行: 三個減號
第4行: 三個減號
第5行: 空行
第6行: 生成以雙引號夾位的文字的注音,前後沒有雙引號的文字不生成注音,但原文字要產生(例如 "清"楚 要生成 ㄑㄧㄥ楚),不可省略聲調符號
第7行: 空行
- 第7~9行指示其下方是Extra欄位的內容
第8行: 三個減號
第9行: 空行
第10行: 完整文字,但刪除所有的雙引號
第11行: 3個井號

%BEGIN%
"釐"清
傳"誦"
"謀"財害命
浪"費"
"遲"到
"逛"
%END%

生成的結果:

「釐」清

---

---

ㄌㄧˊ清

---

釐清
###

「傳」誦

---

---

ㄔㄨㄢˋ誦

---

傳誦
###

「謀」財害命

---

---

ㄇㄡˊ財害命

---

謀財害命
###

「浪」費

---

---

ㄌㄤˋ費

---

浪費
###

「遲」到

---

---

ㄔˊ到

---

遲到
###

「逛」

---

---

ㄍㄨㄤˋ

---

逛
###

2. 用Note Splitter切分檔案

  • Note Splitter的分隔字元(Delimiter)設定為###
  • 按<span class='keybs'> Ctrl/Cmd+P</span>執行<mark style="background-color:#a3be8c">Split by delimiter</mark>命令
  • 將/note-splitter資料夾裡的檔案搬移到Yanki的掃描資料夾對應位置

3. 用Yanki同步至Anki系統

  • 按<span class='keybs'> Ctrl/Cmd+P</span>執行<mark style="background-color:#81a1c1">Sync flashcard notes to Anki</mark>命令

4. 調整Anki系統的筆記類型

在Anki系統裡操作:

  • 管理筆記類型→找到Yanki - Basic (and reversed card with extra)→點擊有側的【卡片】
  • 正面模板裡有TTS的播音按鈕,以JavaScript將之隱藏
    • Anki系統的模板可視為網頁,{{Front}}欄位就像是PHP(<?= ?>)、ASP(<%= %>)或JSP<%= %>裡表達式標籤(Expression Tag)
  • 用系統欄位"{{Deck}}"判斷牌組名稱是否以Chinese開頭,若是則隱藏TTS按鈕

▼ 正面模板

{{Front}}
<br>

{{#Extra}}
<div id="EXTRA">
{{tts en_US voices=Microsoft_Mark:Extra}}
</div>
{{/Extra}}

{{^Extra}}
<div id="FRONT">
{{tts en_US voices=Microsoft_Mark:Front}}
</div>
{{/Extra}}

<script>
  var sDeck = "{{Deck}}";
  
  if (sDeck.indexOf("Chinese") >= 0) {
    elem = document.getElementById("FRONT");
    if (elem) {
      elem.style.display = "none";
    }
    elem = document.getElementById("EXTRA");
    if (elem) {
      elem.style.display = "none";
    }
  }
</script>
背面播放中文音訊?

Anki系統的TTS欄位是靜態解析,只要有{{tts}}就無法用JavaScript停用,如果有{{tts}}會造成不需要的英文背面也播音,因此無法在背面模板裡使用{{tts}}

5. 模板直接使用音訊檔

中文閃卡背面播音最後使用AwesomeTTS產生靜態音訊檔來處理。

  1. 瀏覽找到要處理的閃卡資料夾
  2. 全選卡片→功能表 AwesomeTTS→【Add Audio to Selected...】
  3. 用Microsoft Speech API JScript或Google Translate,右方Source Field選擇要播音的Extra欄位,插入音訊到Back面板
  4. 按Generate產生mp3檔。mp3檔會產生在 C:\Users\使用者帳戶\AppData\Roaming\Anki2\設定檔名\collection.media

An image to describe post

6. 💡 相關鏈接

💡 解說文章: https://jdev.tw/blog/8494/
✅Copilot: https://github.com/logancyang/obsidian-copilot
✅Note Splitter plugin: https://github.com/decaf-dev/obsidian-note-splitter
✅Yanki plugin: https://github.com/kitschpatrol/yanki-obsidian
✅ 模板範例: https://gist.github.com/emisjerry/eaada7ec56f8ceba24f74490049e645f

7. 教學影片

##