跳至主要内容

你的手機不是你的

· 閱讀時間約 2 分鐘 ┊ 純文字版
  • 「我可以在我的冰箱裡放任何東西。」──沒人有意見。
  • 「我可以在我的書櫃上擺任何東西。」──也沒人有意見。
  • 「我可以在我的牆上掛任何一張畫。」──還是沒人有意見。
  • 「我可以在我的手機裡裝任何軟體。」──Google 和 Apple:「哇靠,那怎麼行?!」──你竟然膽敢在沒有我們審核的情況下裝自己的 App?萬一它沒有廣告怎麼辦?萬一它忘了偷偷監控你的行蹤怎麼辦?萬一你用得很開心,而我們一毛錢都沒賺到怎麼辦?

從 2027 年開始,Google 規定所有 Android 開發者都必須向 Google 註冊──交出身份證件、簽 Google 的合約並付錢──否則 App 就會在全世界的 Android 裝置上被封鎖。1 2

明年開始,想要安裝「沒付保護費」的 App,使用者必須經過超級麻煩的「進階流程」,而且必須等 24 小時才能安裝,有夠荒謬。就算是你自己寫的 App,想要在自己花錢買的手機上跑,也一樣得看 Google 的臉色。

在台灣辦手機門號、換身份證、開銀行帳戶、結婚登記都不用等 24 小時,但 Google 認為把一個 APK 檔案裝進手機實在太危險了,需要一整天的時間想清楚才行。

你的手機不是你的。

如果你用 Android 手機,請去關心一下你的自由:https://keepandroidopen.org/zh-TW/

如果你用 iPhone⋯⋯那你大概早就習慣了沒有自由的感覺,那沒事,繼續用就好囉!

(正解:換成去 Google 的手機,就沒有以上問題了。)

(正解二:或者更好的方式──根本不要用手機。)

Footnotes​

  1. https://f-droid.org/en/2026/02/24/open-letter-opposing-developer-verification.html ↩

  2. https://arstechnica.com/gadgets/2026/03/with-developer-verification-googles-apple-envy-threatens-to-dismantle-androids-open-legacy/ ↩

WiPitch:自由的最後一塊拼圖

· 閱讀時間約 5 分鐘 ┊ 純文字版

Wiwi.Blog 的讀者應該都知道,我一直在努力逃離專有軟體和 macOS 的掌控。事實上,就音樂製作而言,我的「逃獄」工具包幾乎就要齊備了:

  • 🖥️ 編曲軟體:現在版本的 Ardour 已經非常穩定且好用(尤其是 Linux 版),功能也完備,用來直接替代任何 DAW1 都不成問題。
  • 🎺 音源:我本來就幾乎都用硬體音源機和合成器,不太依賴軟體,所以這點還好。
  • 🎚️ 混音工具、效果器:Linux Studio Plugins 甚至比專有軟體介面更漂亮、功能更強,再加上我也有許多硬體效果器,這點也不是問題。
  • 🧼 去回音、去雜音、擷取分軌:以前這些工作都需要依賴 iZotope RX,但現在有更強且完全自由的 Audio Separator,這部分也搞定了。
  • 🎼 記譜:MuseScore。這個是很早就已經解決的。

清單列到這裡,好像只剩下最後一個依賴沒解決,那就是音高校正軟體。

音高校正軟體的零件​

目前我覺得真正好用的音高校正軟體,只有 Reason 內建的 Pitch Edit 和 Melodyne2。前者正以驚人的速度變爛中,後者則是貴到不行3;兩個都是專有軟體,兩個都不支援 Linux。

有了之前自己開發 WiNote 取代 Keynote 的成功經驗,我就想:為什麼不直接做一個自己的音高校正軟體呢?

其實自由軟體的世界中,關鍵零件早就齊備了,根本不需要重新發明輪子:音高偵測我們有 SwiftF0,而音高調整和時間拉伸早就有超強的 Rubberband。這世界只是缺乏一個人,去把這些零件組裝起來、包裝成一個一般人看得懂的介面而已。

WiPitch!​

於是我就來做啦,現在為你介紹──WiPitch(Wiwi 的 Pitch Edit)!

WiPitch 的邏輯超級簡單:就是你輸入一個聲音檔(只能是人聲或單音樂器),它會在畫面上顯示音高軌跡,然後你框起一段(使用選取工具 S),就可以上下拖曳調整它的音高。WiPitch 不自動幫你切音符,這是刻意的決定,因為我發現每次編曲軟體幫我切,都切不到我想要的位置。

除了音高模式之外,還有音量和共振峰(Formant)4 模式(按鍵盤的 1 2 3 切換),也是選取一段,上下拖曳即可。

但 WiPitch 真正完勝昂貴專有軟體的絕招是──畫筆工具!(快速鍵 B)

畫筆工具可以在音高區直接畫出任意你想要的變化,你要怎麼亂滑都可以!而且我還設計了「抖音模式」,可以自動幫不會抖音的歌手加上抖音,目前我還沒看過別的軟體有這功能。如果在聲波區使用畫筆工具,則可以標記「錨點」,讓你前後拖動,隨意伸縮聲音速度。

直接看示範影片:

目前版本的功能已經近乎完成(我不打算再增加太多功能,就讓它維持是一個獨立簡潔的音高編輯器就好),雖然可能還有一些 bug(發現的話可以跟我說,我來修),但是核心功能已經可以使用囉!

至於音質好不好呢?我覺得完全不輸給專有軟體。不過那不是我的功勞,畢竟 Rubberband 本來就是一個音質很好的音高調整演算法,WiPitch 只是直接把它拿來用而已。

來試試看 WiPitch 吧!​

最重要的是,WiPitch 是自由軟體(GPLv3 授權)。它完全免費、無廣告、無追蹤、而且連安裝都省了,線上直接用!不用花 US$249,不用再被專有軟體綁架!

WiPitch - 免安裝,直接用!

只要到 https://nicechord.com/wipitch 就可以開始使用!

測試素材

沒有聲音素材的話,就使用我優美的歌聲吧:DoReMi.mp3(按右鍵另存)

聲音處理完全都在你自己的電腦上執行,不會有任何資料被上傳到任何地方。一旦網頁讀取好之後,就算離線也可以繼續使用。

程式碼及更完整的使用說明都放在 Code.Wiwi.Blog,上面也有離線版的安裝教學(如果你想完全在自己電腦上跑的話)。

太棒了,以後我要修音高也不需要用到 macOS 啦!希望 WiPitch 也讓你離自由又更近了一步!

Footnotes​

  1. Digital Audio Workstation,也就是俗稱的「編曲軟體」。 ↩

  2. 對,連 Logic Pro 的 Flex Pitch 都不算,我覺得它好難用。 ↩

  3. Melodyne 有完整「單音編輯」功能的版本就要 US$249。 ↩

  4. 可以讓人聲變得更女性化或更男性化的功能。 ↩

十倍也差不多

· 閱讀時間約 5 分鐘 ┊ 純文字版

「差不多先生差不多要死的時候,一口氣斷斷續續地說道:『活人同死人也差⋯⋯差⋯⋯差不多⋯⋯,⋯⋯凡事只要差⋯⋯差⋯⋯不多⋯⋯就⋯⋯好了,⋯⋯何⋯⋯何⋯⋯必⋯⋯太⋯⋯太認真呢?』他說完了這句格言,方才絕氣了。」

──胡適,〈差不多先生傳〉

差「十倍」應該是差很多的吧?大家都覺得自己應該能分辨十倍的差別。

但事實上,一般人對十倍的感受力,只限於尺規中日常生活會用到的那一段。一旦超出那一段,刻度就會開始模糊。

時間​

每個人都可以分辨 1 秒和 10 秒的差別。

但是 10 毫秒1和 100 毫秒呢?對一般人來說,這兩種都叫做「一瞬間」;但對音樂家來說,這簡直是天差地遠。

大部分的鍵盤手,在鍵盤延遲 10 毫秒的時候就會抱怨「這反應怪怪的」;他們也能輕易地示範兩個音符之間間隔 20 毫秒和 50 毫秒的差別。在節拍器 120 BPM 的速度下,58% 和 62% 的 Swing 只差 20 毫秒,但在音樂上就有很大的感覺不同。

自己試試看:

50 毫秒

反過來說,長時間也是一樣:一個檔案「也許 10 年後打得開」(例如你今天存的 Apple Pages 檔案),跟「100 年後都能打開」(像 Markdown 檔案),對於許多人來說都是「反正很久啦」,差不多吧。

距離​

1 公里和 10 公里的距離差你超有感──前者走十分鐘就到了,後者大概要搭計程車過去。

但面對 1 光年和 10 光年時,我們大概只會覺得:「反正都是超遠吧?」。甚至我懷疑,大部分人心中的 1 光年和 10,000 光年感覺其實也是一樣的──反正都是要坐很久的太空船,而我們對「很久」也沒有刻度。

金錢​

我們都知道 100 元和 1,000 元的差別,你馬上可以列出一長串「只有 100 元不能做,但有 1,000 元可以做」的事情。

那,一千億台幣和一兆台幣呢?

你可以想到什麼事情,是此時此刻「有一千億做不到,但有一兆就能做到」的事嗎?對於我們這種不是很有錢的人來說,這個十倍差距基本上是無感的──反正都是很有錢。2

反過來可能也成立:擁有一千億財富的人看我們,大概也覺得月薪三萬和月薪三十萬差不多,反正都是要上班。

機率​

50% 和 5% 大家都分得出來──前者是丟銅板一半一半,後者是「應該不會吧」。

但再往下,尺規就開始崩壞。大概只要小於 0.1% 機率的,人腦基本上就會把它歸類到「不可能這麼衰發生在我身上啦」那一格。但事實上,低機率也是有分等級的,而且差很多!

有個很好用的單位叫 micromort,代表百萬分之一的死亡機率。每個人每天就算什麼都不做,也大約會有 1 micromort(0.0001%)因為「非自然原因」死亡的機率,這是日常生活的基本風險。

但許多人會很輕易地去做 0.001%(水肺潛水)或甚至逼近 0.01%(飛行傘)死亡率的事情3,並覺得這跟平常沒什麼兩樣──反正體感上,這些都是「不可能這麼衰會出事啦」的活動。

反正都差不多​

其實我們都是差不多先生,只是特別敏感的那段刻度位置不同而已。仔細去看看那個你覺得「反正都差不多」的區塊,也許會得到有趣的發現唷!

Footnotes​

  1. 一毫秒(ms)= 0.001 秒。 ↩

  2. 在我寫這篇文章的時候,有一千億台幣差不多就跟 Michael Jordan 和 Oprah 一樣有錢;而一兆台幣的話,差不多是馬雲、Phil Knight(Nike 創辦人)的等級,只能排到全球第六十幾名。而全球首富 Elon Musk 有大約 25 兆台幣,快要逼近等於台灣一整年的 GDP。 ↩

  3. 根據維基百科 Micromort 文章,英國的非 BSAC 會員每次水肺潛水大約是 10 micromorts;而在土耳其飛一次飛行傘,大約是 74 micromorts。 ↩

興趣

· 閱讀時間約 2 分鐘 ┊ 純文字版

用來表演的興趣:📚 閱讀、📸 攝影、🏪 逛獨立書店、🖼️ 看展、🎻 聽音樂會、✍️ 手寫日記、⛰️ 登山、🏞️ 戶外、⛺ 露營、🏃‍♀️ 跑半馬、🏄 衝浪、🧘‍♀️ 瑜伽、🏋️ 健身、🧘 冥想、🧳 旅行、🎹 音樂、🌱 照顧植物、☕ 手沖咖啡、🍷 品酒、🪵 木工、🥕 支持在地小農⋯⋯

真正的興趣:💤 睡覺、🫠 趴在沙發上、🐢 拖延、🛒 線上購物、🍟 吃洋芋片、🍜 吃宵夜、🧊 咬冰塊、💬 看 YouTube 影片的留言區、🕵️ 監控前任的社群帳號、🤳 把自己照片的臉修小、🔎 搜尋自己的名字、🦵 抖腳、💨 不出聲音地放屁、😬 咬指甲、🦶 剝腳皮、👂 玩耳屎、🤏 擠粉刺、🩹 摳傷口的結痂、🦷 用舌頭頂牙齒、🚽 坐在馬桶上滑短影片、🫣 買書(但是不看)、💳 買課程(但是不看)、💸 買健身房會員(但是不去)、👟 買跑鞋(但是不跑)、🔁 寫一篇一直連回舊文章的文章⋯⋯

74,900 元

· 閱讀時間約 3 分鐘 ┊ 純文字版

只要台幣 74,900 元,你就可以買下這支 256 GB 的 iPhone Duo。

或者,你也可以買以下這些東西:

🎬 影音╱Podcast 創作組合​

全套影音創作組合!不只能製作高畫質的 YouTube 影片,還能經營四人一起講話的 Podcast 節目!

  • Sony ZV-E10 附 16-50mm 鏡頭組(19,931 元)
  • Shure SM58 動圈麥克風 × 4(3,990 × 4 = 15,960 元)
  • AKG K240 Studio 監聽耳機 × 4(2,850 × 4 = 11,400 元)
  • Zoom PodTrak P8 錄音介面╱桌上型錄音機(12,980 元)
  • 256 GB microSD 記憶卡 × 2(2,000 × 2 = 4,000 元)
  • 麥克風架 × 4(4,000 元)
  • 相機腳架(1,500 元)
  • 高級的 XLR 麥克風線 × 4(2,000 元)
  • 還剩 3,129 元,可以請三位 Podcast 來賓吃晚餐!

💻 自由的全新筆電╱手機組合​

漂亮的全新筆電和手機!Framework 的 Linux 相容性超級好,而且超容易自行維修;而 Pixel 可以改灌 GrapheneOS,讓你逃離 Big Tech 的監控!

  • Framework Laptop 12,配備 Core i5╱16GB╱500GB,Linux 作業系統(42,850 元)
  • Google Pixel 10 (256 GB)(26,490 元)
  • 還剩 5,560 元,可以買漂亮的貼紙、手機殼和筆電背包!

♻️ 二手 ThinkPad 好讚!​

七年前的旗艦級 ThinkPad,現在跑起來依然飛快,配備你這輩子用過最好打的鍵盤,Linux 相容性 100%。好筆電就是要全家一人一台!

  • 七台 ThinkPad X1 Carbon Gen 6-7 等級1的二手筆電(10,000 × 7 = 70,000 元)
  • 給爸爸、媽媽、哥哥、弟弟、姊姊、妹妹一人一台,自己也一台
  • 還剩 4,900 元,大家一起去吃熱炒!

🎲 別的東西​

  • 🍜 374 碗牛肉麵(以一碗 200 元計),一天一碗,可以吃到 iPhone Duo 保固到期之後第九天。
  • ✈️ 台北到東京來回十趟的機票(廉航)。
  • 🍿 Netflix 標準方案訂閱 16 年(380 元╱月)。
  • 👔 用最低工資請一位員工兩個半月(29,500 元╱月)。
  • 🎹 一台狀況很不錯的二手直立式鋼琴,含搬運及調音。
  • 🏍️ 跟我的小紅同款的 Yamaha「勁豪125」機車、配備碟煞,這才是真正的「行動裝置」。(73,000 元)
  • 🍏 或者,如果你就是很愛蘋果的話──一支 iPhone 18 Pro 256 GB(44,900 元),再加上 MacBook Neo 512 GB(25,900 元),還剩 4,100 元差不多可以買一對 AirPods 5。

喔對,iPhone Duo 的售價是 74,900 元「起」喔──那是最便宜的 256 GB 版,最大的 2TB 版本要 118,900 元!

Footnotes​

  1. 第 8 代 Core i7 CPU╱16GB╱500GB ↩

要怎麼記得以前寫過什麼

· 閱讀時間約 2 分鐘 ┊ 純文字版

收到讀者來信,他很好奇 Wiwi.Blog 上面已經有快要 1,000 篇文章了,為什麼我在寫新文章的時候,還是能夠精準地連結回很久以前的舊文?

換句話說,為什麼我記得哪一篇寫了什麼?我為什麼會知道,現在寫的這一句話,跟三年前的某篇文章有關?

我要公開祕密了,那就是──我根本不記得。

我有一個小程式,它會用 Qwen3-Embedding-8B 這個模型計算每一篇文章的 Embedding(語意向量)。簡單地說,就是把文章的「意思」,轉換成一個 4,096 維的向量。

然後,我有另一個小程式,可以讓我輸入一兩行文字,它就會從那一堆向量當中,找出「語意最相近」的幾篇文章。

注意,這不是簡單的關鍵字搜尋喔!關鍵字搜尋,你打「便當」就只會找到有「便當」這兩個字的文章;語意搜尋是打「便當」,它可以出現便當、火鍋趴、咖哩杯麵、想被拍照的包子和吃青菜。

所以,當我想連結舊文時,只要把想連結的句子丟進去搜尋一下,然後從相似清單中挑一篇順眼的連過去就完成啦!

很好用喔!只要你文章夠多,就算寫一句隨機到不行的廢話,它都能幫你找到至少有點相關的舊文!讓我們試試看一句:

「洗澡的時候,我突然想到一件好像很重要的事情,結果等我走出浴室,回到客廳,我就忘記了~」

每個詞都連得出去,連「~」都可以!

你也想要用嗎?原始碼放在:https://code.wiwi.blog/wiwi/blog-embedding

WiNote 開發進度

· 閱讀時間約 2 分鐘 ┊ 純文字版

我最近都在跟 WiNote(Wiwi 的 Keynote 替代品)的開發搏鬥中,都快要沒時間管 Wiwi.Blog 啦!來跟大家分享一下進度。

目前最基本的東西──文字、插圖、背景、劃線、形狀、框框──差不多都有了,而且還做了許多連 Keynote 都做不出來的動畫和攝影機縮放功能。我個人是覺得,目前版本的動畫功能已經比 Keynote 還要酷了!

另一個大進展是刪掉了肥大的依賴。原本 WiNote 是依賴另一個叫做 HyperFrames 的專案來輸出影片,但後來我發現 HyperFrames 自己也只是依賴另一個輸出影擎 Puppeteer 而已。所以,我把 WiNote 直接接到 Puppeteer 上面,把 HyperFrames 整個拿掉,現在預覽速度比之前快了大概十倍吧!

以下是目前的 WiNote 版本的小小 Demo!先跟你們分享!

(以下影片的原始檔只是一個 .txt 純文字檔,製作過程沒有使用其他動畫或剪輯軟體)

當然,WiNote 現在的 bug 還是超級多,語法也超級亂,除了我自己以外大概沒有人會用,所以目前還無法跟大家見面。如果要讓大眾能用,可能還需要寫許多範例、模板和說明文件等等的。

所以接下來,我打算先在檸檬卷的影片中少量試用,經過實戰才能夠發現更多問題。

最近覺得自己做自己的工具超爽的,有新的開發進度再跟大家分享!

自言自語

· 閱讀時間約 2 分鐘 ┊ 純文字版

檸檬卷前幾天家族旅遊去日本玩,我沒跟,自己一個人在家。

一個人在家最棒的地方,就是你可以大聲自言自語。那些平常只在頭腦裡跑的句子,現在全部都可以用嘴巴講出來,沒人會在旁邊覺得你是瘋子。

把正在想的事情講出來,思考真的會清楚很多耶!那幾天我在家玩 Slay the Spire 2,一邊打一邊像是體育主播一樣,把腦內活動播報給自己聽:

「要先打 Bash 嗎?不要,讓我先 Shrug It Off 抽牌好了!Yes,抽到 Tremble,讓我先給你 Vulnerable,然後再 Strike!靠,不對,我在耍笨嗎?我有 Orichalcum 啊,根本不用出格檔牌就可以有 block 了,我在幹嘛?我要記得我有 Orichalcum,我有 Orichalcum⋯⋯」

(沒玩 Slay the Spire 的人,以上你全部看不懂也沒關係,不重要。)

⋯⋯就這樣一直碎念,我竟然連續過了兩個之前一直過不了的關卡!

這其實就是軟體開發者常說的「黃色小鴨除錯法」(Rubber duck debugging)──把一隻黃色小鴨放在桌子上,對著它一步一步解釋你的程式在幹嘛,講到一半你的問題自然就解開了!

超級有用,推薦大家試試看!把你正在煩惱的事情,對著空氣(或黃色小鴨)大聲講一遍,搞不好這樣就解決囉!

剛剛應該那樣說的

· 閱讀時間約 3 分鐘 ┊ 純文字版

面對威脅時,人類有兩種直覺反應:戰(fight)或逃(flight)1。但如果大腦運算跟不上狀況,可能就會陷入最糟的第三種反應──呆住(freeze)。

  • 例如,在超市突然被插隊,一瞬間大腦呆掉不知道該怎麼做,等意識到「欸這個人是不是插了我的隊」時,對方已經結完帳了。
  • 或是,被路邊的推銷員攔下來,聽完一分鐘廢話才後悔剛才幹嘛停下來。
  • 又或者,在飯局上被酸了一句,當下不知如何回應,只好尷尬地傻笑;直到回家洗澡時才驚覺:「我那時候應該回嗆他那句的!」這時候突然就好想再重吃一次飯局、再被酸一次,只為了用上這句完美的回嗆。

法文甚至有一個專門的字 L'esprit de l'escalier2(樓梯機智)在形容這個狀況──意思大概是說,人都走下樓梯、離開現場了,才突然想到完美的回擊之詞。

預設值​

要解決這個問題,邏輯其實跟看和弦代號一樣。

我的鋼琴學生常問,為什麼我可以一看到和弦代號就瞬間「算」出好聽的配置?答案是:我根本沒有「算」啊,我只是「取出」頭腦中已經計算好的結果而已。

樓梯機智也是這樣,你需要給自己一個預設值,訓練自己在第一時間套用,而不要計算。

不過,我個人倒是建議把「逃」而不是「戰」當作預設值。這並不是要你每次都認輸、傻傻被欺負,而是要盡可能用最快速、最低成本的方式結束互動。

那些在心裡總是預設要「戰」的人,會潛意識地開始尋找「戰」的機會,就像拿著鐵鎚的人看什麼都像釘子一樣。結果就是,每天都懷疑身邊的人想欺負你,也因為想要「戰」贏,反而更容易遇到鳥事、捲入沒必要的衝突之中。

其實,當個 I 人躲在家裡寫部落格、把留言區關掉,就再也不會有被插隊、被推銷、在飯局上被酸的鳥事啦!這才叫從根本解決問題。

Footnotes​

  1. https://en.wikipedia.org/wiki/Fight-or-flight_response ↩

  2. https://en.wikipedia.org/wiki/L%27esprit_de_l%27escalier ↩