Quantcast
Channel: 簡睿隨筆
Viewing all articles
Browse latest Browse all 897

Obs165|用Copilot (ChatGPT)與Yanki產生Anki的注音閃卡

$
0
0

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

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

1. 用Copilot生成筆記

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

生成的結果:

「釐」清

---

---

ㄌㄧˊ清

---

釐清
###

「傳」誦

---

---

ㄔㄨㄢˋ誦

---

傳誦
###

「謀」財害命

---

---

ㄇㄡˊ財害命

---

謀財害命
###

「浪」費

---

---

ㄌㄤˋ費

---

浪費
###

「遲」到

---

---

ㄔˊ到

---

遲到
###

「逛」

---

---

ㄍㄨㄤˋ

---

逛
###

2. 用Note Splitter切分檔案

  • Note Splitter的分隔字元(Delimiter)設定為###
  • Ctrl/Cmd+P執行Split by delimiter命令
  • 將/note-splitter資料夾裡的檔案搬移到Yanki的掃描資料夾對應位置

3. 用Yanki同步至Anki系統

  • Ctrl/Cmd+P執行Sync flashcard notes to Anki命令

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>

[!question] 背面播放中文音訊?
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

gh

6. 💡 相關鏈接

💡 解說文章: https://jdev.tw/blog/8488/
✅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
✅ 模板範例: https://gist.github.com/emisjerry/eaada7ec56f8ceba24f74490049e645f

7. 教學影片

https://youtu.be/Y-CkNWFmGCE

##

您可能也會有興趣的類似文章


Viewing all articles
Browse latest Browse all 897

Trending Articles