找不到筆記適合的 Obsidian 中文語音朗讀,我就自己做了一個
我原本只是想一邊看筆記,一邊聽 Obsidian 把內容唸出來,結果找了一圈,最後還是自己做了一個。
我用 Obsidian 建立知識庫之後,筆記越存越多,後來遇到的問題已經不是資料找不到,而是根本沒有時間把它們重新讀完。
最早的需求其實很單純,那時候我要準備考試,希望可以一邊看筆記、一邊聽它唸,也想在走路、通勤或處理其他事情的時候,把已經整理好的內容重新複習一遍。
問題不是市面上完全沒有文字轉語音工具,Obsidian 裡也早就有不少 TTS 外掛,只是我實際裝了一輪才發現,有的中文語音不錯,服務卻不一定穩定,有的可以離線朗讀,功能又只停在按下播放,還有的聲音很自然,但要申請 API Key、按使用量付費,筆記內容也會送到雲端。
我需要的東西其實沒有那麼複雜,我只想打開一篇筆記,按一下就開始唸,唸到哪一句就反白到哪一句,遇到「iPAS」「GPT」或中文破音字可以自己修正,整個資料夾還能一篇接一篇播放,而且預設不要把筆記送上網。
所以我後來開發了 Hans TW TTS,一個專門為繁中筆記設計的 Obsidian 朗讀外掛。
它不能獨立運行,必須先安裝 Obsidian,預設使用電腦或手機內建的系統語音,免費、離線,不需要註冊帳號,也不需要 API Key,如果比較在意聲音品質,電腦版也能切換 Edge CLI,或使用自己的 Azure Speech Key。
Obsidian 語音朗讀外掛開發起因?
知識庫越來越大之後,用眼睛讀已經不夠
很多人建立知識庫的第一年,最在意的是怎麼蒐集、分類、搜尋跟連結,等資料真的累積起來,下一個問題才會出現:你整理了這麼多東西,到底什麼時候會再看一次?
我自己的答案是,把一部分閱讀改成用聽的。
如果只需要臨時聽一小段文字,macOS、Windows、iPhone 跟 Android 本來就有系統朗讀功能,沒有必要特地裝外掛,但真正放進 Obsidian 的工作流程後,我需要的是另一件事:朗讀現在這篇、只讀選取的段落、從游標所在的位置開始,以及直接把整個資料夾排成播放清單。
例如我有一個資料夾專門放考試筆記,原本要一篇一篇打開,現在可以直接在資料夾上按右鍵,讓它照順序連續播放,右側的朗讀窗格會顯示目前篇名、進度跟每一句內容,我可以暫停、回到上一句、跳到下一句,也能直接點其中一句重新開始。
這些功能單獨看都很小,但它們組合起來之後,筆記才真的從「只能坐在螢幕前讀」變成「走路跟通勤也可以複習」。
動手前,我先把市面上的 Obsidian TTS 外掛試過一輪
現成工具不是不好,只是它們解的問題跟我不完全一樣
我一開始沒有打算開發,因為文字轉語音早就不是新技術,理論上直接裝一個現成外掛最快。
第一個測的是 Edge TTS,它使用 Microsoft 的線上神經語音,中文聽感確實比一般系統語音自然,而且不用自己申請 Azure Key,問題是我實際使用時,播放器一直停在 0:00,最後查到不是外掛介面壞掉,而是它使用的免費服務有時會被 Microsoft 擋下,Edge TTS 的維護者也在 README 說明,從 2025 年 12 月開始,伺服器是否允許這條免費路徑並不穩定。
接著我看了 Text to Speech、Voice、Aloud 跟 Apple TTS,它們各有很明確的優點,只是沒有一套剛好符合「繁體中文優先、預設離線、逐句跟讀、資料夾連播、可以自己修正發音,而且能在 Mac、Windows 跟 iPhone 使用」這整組需求。
| 工具 | 最適合的使用方式 | 使用前要接受的條件 |
|---|---|---|
| Hans TW TTS | 繁中 Obsidian 知識庫、離線複習、逐句跟讀與資料夾連播 | 必須使用 Obsidian,Android 只能交給系統隨選朗讀 |
| Text to Speech | 想用作業系統內建語音,做基本的整篇或選取朗讀 | 功能較簡單,Android 不支援,沒有以繁中知識庫為核心設計 |
| Edge TTS | 想免費使用較自然的 Microsoft 線上語音,或輸出 MP3 | 必須連網,免費服務的可用性不一定穩定 |
| Voice | 想把筆記做成有聲書、管理章節、儲存 MP3,並自行選擇雲端供應商 | 要準備 AWS、ElevenLabs、OpenAI、Google、Azure 或 MiniMax 等服務的憑證與費用 |
| Aloud | 想用多種雲端模型逐句串流、高亮、快取與匯出音訊 | 通常需要 API Key,內容會交給選定的服務處理 |
| Apple TTS | 只在 Mac 使用,想直接呼叫 macOS 的 say 指令離線朗讀 | 只支援 macOS,而且沒有暫停與繼續 |
六套 Obsidian 朗讀外掛的使用情境比較,功能與服務狀態仍應以各專案最新版為準
看完之後,我發現市場並不缺 TTS,缺的是一個真的從繁中 Obsidian 使用者出發的版本。
Hans TW TTS 怎麼設計,我把「繁中優先」做進每個小地方

支援中文,不代表真的適合中文使用者
很多 TTS 工具會列出上百種語音,中文只是其中幾個選項,你打開設定後,會先看到一大串不知道差在哪裡的名稱,還要自己慢慢找台灣中文。
Hans TW TTS 的語音清單只保留中文跟英文,台灣中文排在前面,再依品質排序,預設則是自動挑選目前裝置裡最合適的中文語音,讓第一次使用的人不用先研究語音代碼。
真正麻煩的其實是專有名詞跟破音字,系統看到 iPAS、GPT 或品牌名稱時,不一定知道台灣人怎麼唸,有些符號只是我拿來做列點,語音引擎卻會把「○」唸成「零」。
所以我做了兩個很小但很實用的設定,第一個是發音字典,可以自己設定「原文=唸法」,例如把 iPAS 指定成「愛帕斯」,第二個是不朗讀的符號,讓 ○、●、※ 這類排版符號在朗讀前被拿掉,但畫面上的原始筆記完全不會改變。

中文語音朗讀 Markdown,不是把整份原始碼直接交給語音引擎
Obsidian 筆記表面上是一篇文章,底層其實是 Markdown。
裡面可能有 # 標題、[[雙向連結]]、![[嵌入內容]]、Block ID、註腳、程式碼、網址、數學式、任務狀態、表格、Callout,還有其他外掛寫進去的 HTML 標籤。
如果只是把整份檔案直接丟給 TTS,它就可能突然開始唸網址、色碼、驚嘆號、note、473eef,甚至把只用來排版的符號全部唸出來,這不是聲音好不好聽的問題,而是它根本不知道哪些是內容,哪些只是 Obsidian 的結構。
因此 Hans TW TTS 在切句以前,會先用同一套內容解析器清理筆記,Block ID、註解、註腳、嵌入語法、程式碼區塊跟 Callout 標記會被略過,Markdown 連結跟 Wikilink 則只保留真正看得到的文字,表格會把儲存格轉成比較自然的停頓,任務狀態、網址跟數學式則交給使用者決定要不要朗讀。
我後來還特別處理 Highlightr 跟 Callout,因為我自己的筆記大量使用這兩種格式,外掛會保留真正的標題與內文,但不會把 <mark>、<font>、色碼或 [!note] 唸出來,遇到預設收合的 Callout,也能選擇只讀標題、不讀裡面的內容。
這裡有一條我刻意保留的原則:確定是語法的東西才移除,不確定的內容就保留。
朗讀時多聽到一段奇怪文字很煩,但如果解析器把真正的正文刪掉,使用者可能根本不知道自己漏聽了什麼,對閱讀工具來說,少刪比自作聰明重要。
真正影響聽感的,常常不是聲音,而是停頓
Hans TW TTS 到 0.15.0 才比較接近我心裡的「自然朗讀」。
前面的版本雖然已經能把文字正確唸出來,但段落、標題跟一般句子的節奏太接近,長文聽久了還是像一整串文字被機器推過去。
現在空白行會形成段落停頓,預設 400 毫秒,標題與 Callout 自訂標題後會停得更久,預設 600 毫秒,兩個數值都能自己調整,也可以設成 0,標題、清單、任務跟一般段落仍使用原本的 Markdown 結構,不會為了停頓另外製造一段空白語音。
這個功能沒有換掉任何語音模型,卻比單純調語速更接近人在讀文章的節奏,對我來說,這也是做產品很有趣的地方:使用者覺得「聲音不自然」,真正的原因不一定是模型,也可能只是段落之間少停了半秒。

免費、離線跟聲音自然,三件事不能混在一起講
預設不上網,但切換線上語音後,文字就會離開裝置
Hans TW TTS 現在有三種朗讀引擎。
第一種是系統語音,也是預設值,它直接使用 macOS、Windows 或 iPhone 已安裝的語音,免費、離線,文字不會因為朗讀被送到外部服務,缺點是聲音品質取決於作業系統與你下載的語音,有些裝置聽起來仍然比較機械。
第二種是 Edge CLI,它不需要 Azure 帳號或 API Key,中文 Neural Voice 的聽感通常比較自然,但只能在電腦版使用,第一次要先安裝 edge-tts,而且朗讀文字會傳送到 Microsoft 的線上服務,免費路徑也可能因為服務端調整而失效,所以我把它當成可選方案,不是產品的唯一基礎。
第三種是 Azure Speech,使用者可以填入自己的 Azure Key、Region 跟語音,電腦與 iPhone、iPad 都能使用,它是 Microsoft 的正式 API,但費用、免費額度與付款驗證要依自己的帳戶與地區確認,Key 目前只存放在該 Vault 的外掛設定檔裡,而且沒有加密,所以不能把設定檔、截圖或整個 Vault 隨便分享出去。
這三條路我沒有包裝成誰一定比較好,最在意隱私跟成本,就用系統語音,比較在意聲音品質,可以評估 Edge CLI,需要正式雲端服務與自己的額度管理,再用 Azure。
切換選項的同時,也代表你在「資料是否離開裝置」這件事上做了不同決定,這一點應該在使用前就講清楚。
錯誤訊息不能只告訴你失敗,也要告訴你下一步
第一批 Android 使用者曾經遇到「此裝置的瀏覽器不支援語音朗讀」,這句話技術上沒有錯,但對使用者完全沒有幫助,因為他看完還是不知道接下來要做什麼。
所以我後來定了一條規則:所有錯誤都要盡量附上原因跟解法,不能只說不能用。
現在如果找不到中文語音,外掛會直接告訴你該到 macOS、Windows 或 iPhone 的哪一個系統設定下載,Android 因為 Obsidian WebView 的限制,則固定改成系統「隨選朗讀」的操作引導,不會假裝外掛的逐句反白跟資料夾連播可以正常使用。
設定裡也有環境檢查,可以檢查目前的朗讀引擎、語音、速度、音高與失敗階段,如果還是無法排除,它會整理一份可以貼給 AI 的安全診斷,但不會放進筆記內容、Azure Key、Vault 名稱、完整私人路徑或原始錯誤輸出。

Hans TW TTS 中文語音朗讀的能力邊界在哪?
165 個自動化測試,不代表每一種筆記都能完美朗讀
目前程式庫裡有 165 個自動化測試案例,主要檢查中文與英文切句、游標位置、Markdown 清理、Callout、Highlightr、發音字典、資料夾順序、三種朗讀引擎、語音清單、錯誤訊息跟安全診斷。
這個數字只能證明已知的案例有被固定下來,不能證明所有 Obsidian 主題、第三方外掛與自訂 HTML 都能正確處理,也不能代表每一台電腦的中文語音都會一樣好聽。
實際限制有幾個。
第一,它是 Obsidian 外掛,不是獨立的朗讀 App,也不直接處理 PDF、Word、網頁或電子書,這些內容要先進到 Obsidian 筆記裡,它才有辦法按照 Markdown 結構處理。
第二,macOS、Windows 跟 iPhone、iPad 可以使用完整朗讀功能,Android 目前只能引導使用系統隨選朗讀,因此沒有逐句反白、資料夾連播或 Edge 語音。
第三,數學式就算開啟,也只是把原始 MathJax 或 LaTeX 內容交給語音引擎,不會自動轉成「x 的平方加一」這種自然說法,第三方外掛如果寫入 Hans TW TTS 不認識的特殊格式,也可能被原樣唸出來。
第四,Hans TW TTS 現在沒有把筆記匯出成 MP3 的功能,如果你真正要的是有聲書、音訊檔管理或跨裝置保存,Voice、Aloud 或 Edge TTS 反而更直接。
哪些人適合使用,哪些人不用特地安裝?
如果你本來就在使用 Obsidian,知識庫裡有大量中文長文、課程筆記、研究資料或考試內容,希望在閱讀以外增加一條「用聽的複習」路徑,也很在意專有名詞、Markdown 語法跟資料是否離開裝置。
它也很適合拿來校稿,自己寫的句子用眼睛看很多次之後,很容易自動略過不順的地方,換成耳朵聽,重複、斷句跟少字反而會變得很明顯。
如果你沒有使用 Obsidian,只想偶爾讓手機或電腦唸一段文字,直接使用系統內建的輔助朗讀最快,如果你要的是最自然的聲音、完整有聲書、MP3 匯出,或 Android 上跟桌機完全相同的體驗,也應該先看其他工具,不需要為了 Hans TW TTS 改變原本的工作流程。
總結:我想讓知識真的被使用
我做 Hans TW TTS 的原因很簡單,我的 Obsidian 裡已經有很多整理好的內容,但如果它們只能等我坐回電腦前一篇一篇打開,那這個知識庫能被重新使用的時間其實很少。
語音只是換了一個入口,原本只能用眼睛讀的筆記,現在可以在準備課程、走路、通勤、校稿或複習時繼續使用。
回頭看這個外掛,真正花時間的也不是讓電腦發出聲音,而是處理那些很小、卻會讓人立刻關掉朗讀的問題:中文語音難找、iPAS 被唸錯、圓圈被唸成零、Callout 標記跑進聲音、段落完全不停、Android 只顯示一句無法使用。
這些問題都不是什麼最先進的 AI 技術,但它們決定了一個工具能不能每天真的被拿來用。
Hans TW TTS 現在已經可以從 Obsidian 的 Community Plugins 直接搜尋安裝,原始碼也完整公開在 GitHub,採 MIT 授權,如果你要試,先用預設的系統語音就好,不需要一開始申請任何帳號或 Key。
如果你在繁中筆記裡遇到我還沒處理好的發音、語法或朗讀情境,也可以直接到 GitHub 回報,這個外掛原本就是因為我找不到合用的工具才開始做,下一個版本要解決什麼,也會繼續從真實使用時卡住的地方往下改。
https://community.obsidian.md/plugins/tw-read-aloud

推薦閱讀
Obsidian 是什麼?一篇搞懂這款筆記軟體為什麼讓工程師和研究者都瘋狂
Obsidian 教學:新手下載、入門設定、必裝外掛一次看懂
參考資料
GitHub(2026)Hans TW TTS repository
GitHub(2026)Hans TW TTS 0.15.0 Release
GitHub:Text to Speech for Obsidian
常見問題 FAQ
Hans TW TTS 是獨立的朗讀軟體嗎?
不是,它是 Obsidian 的 Community Plugin,必須先安裝 Obsidian 才能使用,如果只想臨時朗讀網頁、PDF 或一小段文字,使用系統內建朗讀功能會更直接。
Hans TW TTS 免費嗎?需要申請 API Key 嗎?
預設的系統語音免費、離線,不需要 API Key,Edge CLI 也不需要 Azure Key,但要另外安裝 `edge-tts` 並連接 Microsoft 線上服務,Azure Speech 則需要自己的 Key,而且可能產生費用。
朗讀時,Obsidian 筆記會被上傳嗎?
使用預設的系統語音時不會,文字在裝置本機處理,只有主動切換 Edge CLI 或 Azure Speech 時,朗讀內容才會傳送到 Microsoft 的服務。
Hans TW TTS 支援哪些裝置?
macOS、Windows、iPhone 跟 iPad 可以使用外掛的朗讀窗格、逐句反白與連播功能,Android 目前改用系統隨選朗讀的操作引導,不提供外掛逐句反白、資料夾連播或 Edge 語音。
為什麼系統找不到中文語音?
Hans TW TTS 只能使用裝置上已經安裝的系統語音,請先到 macOS、Windows 或 iPhone 的輔助使用/語音設定下載中文(台灣)語音,再重新啟用外掛。
可以只朗讀其中一段,或從文章中間開始嗎?
可以,選取文字後可以只朗讀選取內容,也能把游標放在指定句子,再執行「從游標處開始唸」,朗讀窗格打開後,直接點任何一句也可以從那裡開始。
可以連續朗讀一整個資料夾嗎?
可以,在 Obsidian 檔案總管對資料夾按右鍵,選擇「朗讀此資料夾」,外掛就會依序播放裡面的筆記,也能設定是否包含子資料夾。
Callout、網址、程式碼跟數學式會被唸出來嗎?
外掛預設會清除 Callout 標記、程式碼區塊、Block ID、註解、註腳與嵌入語法,網址、數學式與獨立標籤列可以各自決定是否朗讀,數學式開啟後仍然只會交付原始 LaTeX,不會轉成自然語言。
可以把朗讀內容輸出成 MP3 嗎?
目前不行,Hans TW TTS 的重點是直接在 Obsidian 裡逐句跟讀與連續複習,如果需要匯出、嵌入或管理 MP3,可以改用 Voice、Aloud 或 Edge TTS。
