MEMS 揚聲器小註解

近來有許多微機電揚聲器 (MEMS speaker) 公司出現在市場上. 打著優於傳統揚聲器的功耗、體積等優勢, 大舉進軍小尺寸的市場 – 像是耳機這種應用. 在更深入瞭解 MEMS Speaker 之前, 我先來回顧一下傳統的 speaker 的最主要原理和元件 [1].

speaker-2

發聲的關鍵在於上圖 (取自 [1]) 的驅動部分, 特別是永久磁鐵和音圈 (voice coil). 永久磁鐵包圍音圈或是音圈包圍永久磁鐵這兩種設計都可以達到目的. 當類比聲音訊號輸入, 大小不同的聲音會改變電流大小, 然後電流改變音圈上磁場的大小, 再根據弗萊明左手定理 [2],  產生力的變化而推動振膜.

下圖取材自 [3]. 永久磁鐵被標為深色 Magnent, 音圈被標為剖面的五條線繞成圈圈. 我喜歡這張圖是因為它有標示極性 (N/S), 還有弗萊明的左手.

fleming

所以基本上, 喇叭要出聲只需要在線圈上改變電流強弱就行. 而 MEMS 呢, 由專利說明書來看 [5], 基本上就是用 MEMS 做出一個 silicon 薄膜, 然後用 silicon 懸臂支撐住. 震動這塊振膜就可以出聲了.

在一篇專利 [5] 的說明中, 我們可以看到比較詳盡的 MEMS 原理說明.

basic-mems-principle

至於 MEMS 還有沒有磁鐵? 這是可選擇的.  因為微機電也可以在矽基 (大陸翻成硅基) 上做出釤鈷磁鐵. 但 [5] 這篇的重點在於省掉永久磁鐵, 只用電流方向來改變磁場方向. 因此不是強弱變化可以發生, 相吸或是相斥的變化也可以發聲.

在功耗方面, MEMS 少了傳統 speaker 裡面的線圈, 改為矽晶圓製程. 光看體積上的差異, 用直覺就可以判斷發熱應該會減少. 但是音量夠不夠呢? 頻率響應好不好呢? 就是它的潛在限制. 有些主攻助聽器、藍牙耳機, 有的推 speaker array (以量取勝堆音量), 這都暗示了小 IC 還是推不動重低音. 即使 SPL 很大, 但只是在一個點如此. 好比一排衝鋒槍是轟不倒城牆.

在 1K~40 KHz 這範圍的頻率響應, 據說 MEMS 和傳統的類比喇叭相當. 不過類比喇叭可以用大尺寸來表現低頻 (高波長, 20~1KHz), 這點在 MEMS 上應該是沒辦法做到. 20 Hz 的波長是 (330 m/s)/(20Hz) = 16.5 m. 單純震動一大塊薄膜來產生低音會非常沒有經濟效益. 不過比照耳機的原理, 只要製造出封閉空間 (closed tunnel ) 就可以用小空間產生低音. 另一個方法是產生虛擬的低音 (virtual pitch 不知道怎麼翻譯) [8]. 這邊也註記一下.

[Note]

  1. 音響世界入門第一課:弄清楚揚聲器、喇叭與單體
  2. 弗萊明左手定則(Fleming’s Left Hand Rule)與馬達驅動
  3. 喇叭單體與揚聲器系統(上)
  4. 電動式揚聲器
  5. 專利: 一种硅基mems微扬声器
  6. 專利: MEMS Loudspeaker with Position Sensor
  7. https://audioxpress.com/article/the-impact-of-mems-speakers-in-audio
  8. https://www.quora.com/How-can-headphones-produce-low-notes-when-speakers-have-to-be-large

2022 年上半年投資回顧

本人一介平民, 所以存股績效也隨著股市波動. 即使四月有一度績效還不錯. 以為今年上半年可以小賺收場, 結果還是倒退嚕, 資產數字還略低於 2021 年底的水準. 不過至少持有的美股股數增加了, 有達到存股的目的.  去年底美股是 2.09 萬股左右, 今年已經存了 2.17 萬股, 新增 800 股. 畢竟一股在手, 希望無窮, 诶? 那是開獎前的彩券才有這麼樂觀.

台股的部分, 最近基本上沒什麼買賣. 在 0050 和螃蟹公司的股票都大跌之餘, 國泰金乙特股價幾乎沒變動. 看起來買特別股還滿穩的. 畢竟它固定配息 3.55%, 台灣的通膨和升息幅度還不足以讓它變壁紙. 說到通膨, 大家應該都滿有感的. 最近什麼東西都漲價了, 女兒的薪水聽說沒有漲. 不過至少還有工作就好了. 最近痛苦指數 – 失業率和通膨率似乎創十年新高.

檢討從去年年底到現在, 最大的失誤就是過於樂觀. 因為 2020 和 2021 年的寬鬆讓我們看起來好像賺了不少錢, 但這個榮景在今年就隨著美國升息抗通膨而破滅. 如果早知道夢醒得這麼快, 至少應該要更省著點買, 這樣也許就不是只多存 800 股, 而是能存 1,000 股之類的.  畢竟 S&P 從高點跌 26%, QQQ 跌 4 成 4, 特斯拉腰斬 (不在我購物清單就是了), 總之存更多股不是夢! 只是執行地不夠好.

現在悲觀的人比較多了, 看起來是一個恐慌指數的高原期. 但說悲觀又還不到很悲觀, 再跌也是有可能. 這和我未來的布局計劃  – 逢低買更多相符. 買什麼好呢? 其實還是 QQQ 或 S&P500 吧, 我所有的美股只有 QQQ 是負報酬 -1.8%, 其他都還有賺, 但按照巴菲特的說法, 任何狀況下都應該買龍頭股. 而通膨對金融股相對不利, 所以 QQQ 應該比 S&P500 更政治正確一點.

vix-2022_7取

[REF]

  1. https://www.bbc.com/news/technology-58707641
  2. 華倫存股 (2022/7/8 臉書)
2021/12/31 增持 2022/7/8 (9:00am)
381,422 股 11,735 股 393,157 股

我讀 «華燈之下:條通媽媽桑的懺情錄»

雖然 Netflix 台灣的的大片 «華燈初上» 是由 Netflix 的朋友所推薦的 (瑞昱是 Netflix 在 Android 和 RDK 的雙平台的夥伴), 但因為追劇的時間有限, 所以一直沒有在 Netflix 點播過這個片子. 倒是在臉書上看到有不少人發表對 “華燈初上" 的感想, 因此我才發現了敦子媽媽這討論串.

敦子媽媽的文筆很好, 又是真正在條通有工作經驗的小姐和媽媽桑. 因此她的留言立刻吸引大批網友關注. 累積幾篇留言後, 便脫離 Netflix 討論區, 發展成一個粉絲專頁 [1], 每天都有人敲碗等敦子媽媽出續集. 久而久之, 出版社找上敦子媽媽合作出書. 所以有了這本 “華燈之下".

至於敦子媽媽對於用情有多 “懺"? 我覺得是還好咧.  雖然她喜歡過"深田", 和"佐用", 但整本書看下來, 她沒有後悔喜歡過他們. 反倒是很感謝這兩位對她的好, 除了送吃的用的, 也很關心作者心情. 敦子媽媽在自己的網頁用 “回憶錄" 為名相對中肯, 書商用 “懺情錄" 比較商業~~~

條通生活, 離我們太遠. 然而, 透過敦子媽媽的文筆, 讓我們了解高級的日式酒店是如何運作的. 首先, 敦子媽媽所在的高級酒店, 他們主要財源就是來自日本公司的駐台幹部, 不管是自掏腰包, 或是報公帳. 反正以喝酒為名, 行把妹之實. 找個漂亮的異性聊天紓壓, 還真的滿日式的.

如果客人和小姐看得對眼, 雙方交往也是有時間性的. 當日本幹部五年期滿 (大約) 要調回母公司, 這段戀情就要自動結束了. 畢竟日本人來台灣可能花的都是公費, 回日本還要包養台灣小姐, 可能就要拿出真金白銀來了. 更何況日本人又重視表面形象, 弄個外人小三搞壞家庭, 大概會影響升遷之路吧! 到時還有沒有那麼真愛就不好說了.

另一方面小姐如果動了真情, 每隔幾年自動失戀一次也是很痛的. 更別說書上提到的女人心機. 一群利益衝突的女生在同一個競技場共生, 雖然我不懂, 相信傷害力不小. 被男人傷心、被女人傷感情, 喝酒又傷身, 再加上歲月不饒人, 這個行業果然沒辦法做很久.

至於酒店為何是酒店呢? 看來在這家姬 group 是用酒來當作代幣的意思. 跟打賞網路直播主煙火跑車的意思一樣. 舊經濟還沒有虛擬代幣的觀念, 所以消費多少都是用酒來當媒介. 外面便宜的酒, 在酒店就是超貴, 外面貴的酒在酒店就是天價的貴. 而酒開了就要喝, 就算是能寄的酒終究還是要喝掉. 所以酒店小姐能唬客人開多少酒, 酒店就能賺多少錢.

寄酒可能是咖啡寄杯的始祖. 但現在虛擬的概念已經很成熟了. 拿酒當代幣似乎有點落伍. 小姐應該ㄋㄞ客人買個 NFT 送她?  就不用大家灌酒傷身了. 想當年我們去大陸徵才,  地點選在某酒店 (其實是飯店啦) , 所以我們也就近在酒店餐廳吃飯以節省時間. 某次下午場快開始了, 一份東坡肉才剛上. 所以我們問酒店可否寄肉到晚餐再吃, 他們竟然也答應了. 所以酒店其實可以寄肉 (蛤? 哈哈!)

條通的小姐為何要投入這個行業, 敦子媽媽沒有透露. 我想如果本書還要有續集, 可以考慮寫這個, 大家應該也會滿好奇的. 另外就是敦子當媽媽桑之後的故事交代比較少, 也許可以從經營管理的角度…去修個 MBA? 欸~~~疫情期間, 聰明的藝人都去拿學位了. 既然通告相對少, 又比較多線上上課, 這真的是提升學歷的大好時機啊 [2].

這本書也是親簽版.

20220612_225833-151x300

[REF]

  1. 敦子媽媽回憶錄
  2. 這幾天關於藝人畢業的新聞包括 –  許效舜: 開南大學健康照護技術碩士. 范瑋琪: 台師大國際時尚高階管理碩士. 許瑋甯: 世新傳管碩士.

我讀 «郭婞淳:舉重若輕的婞念»

這本書最近出了個 “親簽版" 在博客來打廣告, 賣點當然是扉頁有郭婞淳簽名. 原本她的簽名習慣是在名字下面畫個槓鈴, 然後加上 WL 5X kg [4]. 表示 weight level 58 or 59kg . 至於這次的簽書, 可能簽了太多本, 槓片已經變成 W. 但 WW 也可以理解為 Womem Weightlfting, 至於 WL 就有點走鐘了, 我本來還以為是 UC, 哈!  

sign-213x300

無論是郭婞淳 (1993) 或是戴資穎 (1994), 都是大家耳熟能詳的運動選手, 而且年紀也跟我女兒差不多. 自從蔡溫義先生勇奪奧運舉重銅牌, 我就覺得我入錯行了. 基於 “爸爸自己做不到的都會叫小孩去做" 的原則. 從小我就跟孩子她媽洗腦: 小孩要當舉重選手.  不過她媽媽的基因也很強, 所以小孩喜歡畫圖 >>>>>>>>>>>>>>>>>> 舉重 (呵). 總之, 舉重金牌的大任只好交給別家的女兒了.

本書是由天下文化的葉士弘先生, 整理郭婞淳的訪談錄音檔後集結成書, 所以兩位並列為作者. 書中的大架構是抓主題作為章節, 沒有按時間順序陳述. 我建議本書的讀者去看一下 wiki, 瀏覽一下郭小姐的重要比賽經歷, 例如什麼時候受傷、破紀錄之類的.  本書再版的時候, 我也建議出版社在後面附上郭婞淳的大事摘要. 此外書上提到許多破紀錄的數字, 但這些中文字 – 抓舉XXX公斤, 挺舉XXX公斤, 總和XXX公斤, 講完就一兩行了 , 讀起來沒有立體感. 建議把該頁的插畫換成阿拉伯數字橫式加法來呈現. 

看完這本書後, 我覺得舉重金牌真的得之不易. 女兒走這條路大概不會成功, 哈! 舉重選手除了要有天分, 還要有紀律和意志力. 意志力這點就不用說了, 大家都可以想像, 贏得任何比賽都需要求勝意志 – 除了鬼滅的善逸, 海賊王的貴公子, 月光騎士的第二人格以外 (诶, 尷尬, 愈想就愈多反例, 還好都是漫畫). 而本書給我的啟發之一就在於維持紀律的重要.

假設郭婞淳是個從小就非常聽話, 做事一板一眼的人, 那麼要求她有紀律並不難. 不過她原來並不是這樣的個性, 後來她能調整自身的性格, 從浪漫到嚴謹, 這個地方很厲害. 舉例來說, 她從小就展現運動天賦, 在很多項目都有些成績. 她喜歡打籃球、練田徑, 舉重是她比較不喜歡的項目, 常常請假逃避翹課. 要不是教練看她是百年難得一見的練武奇才, 硬拉著她練舉重, 今天也不會有金牌的郭婞淳了.

然而, 即使是對她當初喜歡的田徑, 她也沒有展現出足夠的熱誠. 在國三參加全中運那年 (2009), 她整個寒假都沒參加練習, 導致教練將她退隊.  後來雖然還是派她上陣, 但 400 接力比賽時發生掉棒失誤, 連累苦練的隊友丟牌. 當時接力的隊友包括跨欄美少女羅佩琳 [1], 奪牌希望本來相當濃厚 (p31~p33). 郭婞淳因為連累隊友的自責, 加上隔天在舉重項目奪金. 此後才決定專心在舉重項目上. 

教練循序漸進的指導也是讓郭婞淳稱霸這個量級的關鍵. 舉重選手不像籃球員一樣可以用每天苦練投個一百顆、兩百顆. 畢竟每天舉世界紀錄的重量一百下這想法還滿好笑的! 相對地, 啟蒙教練只要求郭婞存把動作做正確, 以 “輕飄飄的" 木棍來練習分解動作, 動作對了才慢慢加重量 (p42~43). 後來的郭婞淳也非常重視自己的體態. 看到櫥窗的反光, 都會把握機會端正自己的姿勢, 避免不正常的姿勢導致肌肉代償而增加受傷風險 (p107~109).

既然是運動傳記, 書上免不了提到她的大小傷勢: 大傷就是 2014/5/12 練習時壓傷右大腿, 小傷則是 (左) 鎖骨和脖子破皮出血這種  (p106 附掛彩的彩照 ><). 雙手起繭子更是基本配備. 選手受重傷當然該以科學治療復健, 但 2014 那次用上高壓氧是正確的選擇. 如果當初沒有做好復健, 後來可能留下嚴重的後遺症. 台灣之光王建民當初也只是跑壘扭了一下不是嗎? 至於小傷則可能是身體不平衡的徵兆, 需要自我檢視那邊沒練好. 郭婞淳能夠反覆檢討自己那裏不夠好, 我想這個心態也很關鍵.

畢竟天分, 苦練, 野心和想像力, 對手也都有. 精確有紀律地持續修正, 除了靠自己, 也要靠團隊.  書上提到郭婞淳的背後有一個團隊在關照著她 – 教練、醫師、防護員、營養師…等等. 2024 的巴黎奧運打算把一面獎牌複製四份, 讓整個團隊都能分享到他們應有的一份榮譽. 我想這正好呼應了書中郭婞淳對她團隊的感謝.

書上提到郭婞淳默默行善, 還有捐過救護車. 這事我先前就聽過. 至於寫到她會彈鋼琴, 本來我不知道. 有興趣的人可以參考 Youtube 影片 [2]. 她在這個 YT 片段說到 2020 東京奧運是她最後一戰, 但在本書中已經更新到要挑戰 2024 巴黎奧運了. 運動員走斜槓人生算是滿有遠見的布局, 書中也提到郭婞淳的其他身分, 像是主持等等. 我覺得她形象滿好的, 未來應該能走得很長遠.

BTW, 我希望比她更年輕的小戴在斜槓 (廣告) 很多之餘, 這幾天也在西班牙湯優盃打出好成績. 查了 wiki 一看, 小戴的天敵不是大家耳熟能詳的山口茜、陳雨菲, 而是退役的李雪芮 [3]. 可見一個超級選手若沒有生涯規劃, 受個傷就什麼都沒有了. 至於我們工程師只要身體還過得去, 即使變成三高肥宅, 還是可以上班賺錢,  所以我們斜槓個不用動腦的 ETF 投資看來不錯. 

[Ref]

  1. https://www.facebook.com/RunningPei
  2. https://www.youtube.com/watch?v=J88hmZIUCAE
  3. 李雪芮
  4. https://www.mtaxi.com.tw/20170911/

Train ESRGAN 小整理

我想挑戰一面挖礦, 一面跑 AI training, 一面開艾爾登法環,… 不過看起來有點困難, 只好不跑老環了, 反正一直 “You Died". 好, 在此把 training 的步驟整理如下.

  1. 如先前所說, 用 Anaconda3 做出一個環境, 然後開 terminal.
  2. 到網路上下載訓練用的圖片.  根據原作者所述, 他用的 database 是 DF2K.DF2K is a merged training dataset consisting of 800 DIV2K  training images and 2650 Flickr2K training images.
  3. 雖然不知道有什麼特殊之處, 總之這兩個 databse 的名稱長度不一樣, 我就直接把它們塞到同一個目錄.

新目錄的位置在主目錄下自己建一個 datasets. 再下面一層開個 DF2K 子目錄, 一層 DF2K_HR 子子目錄. 2K 照片全部放這裡. 然後在與 DF2K_HR 同層開個 DF2K_multiscale 目錄. 這樣下一階段就可以開始訓練了.

train-data-150x150

4.  訓練步驟參考 [1], 首先把每張圖做縮圖, 分成 0.75, 0.5, 0.33, 0.25 四種大小. 看起來有 rounding 到特定的數字, 而且有 floor = 400.

python scripts/generate_multiscale_DF2K.py --input datasets/DF2K/DF2K_HR --output datasets/DF2K/DF2K_multiscale

例如 000001.png 就生成 000001T0.png、000001T1.png、000001T2.png 、000001T2.png 四張不同尺寸的小圖.

2048×1356 1530×1017 1020×678 680×452 601×400

5. 然後把圖形全部切齊成同樣大小的方塊. 注意 DF2K_multiscale_sub 這個目錄要留給程式建, 自己先建好會報錯.

python scripts/extract_subimages.py --input datasets/DF2K/DF2K_multiscale --output datasets/DF2K/DF2K_multiscale_sub --crop_size 400 --step 200

這裡的第一個參數顯然就是要把圖形裁切成 400×400 的小圖. 第二個參數看程式註解: “step (int): Step for overlapped sliding window."  這個意思是每個小圖有 200 pixel 和另外一張裁切圖有重疊. However, 我必須說此處就丟掉一些重要的資訊, 我想想怎模申請專利好了~~~

[原始的小圖 xxxT2: 680×452]

000001-300x199

T0 切成  35 個 400×400, T1 切成 15 個, T2 切成 6 個, T3 切成 2 個. T0 的前四張 400×400 長這樣. 也就是由左至右掃過原圖的上方.

000001T0_s001-150x150000001T0_s002-150x150000001T0_s003-150x150000001T0_s004-150x150

6. 在前一個步驟, 很多 400×400 小塊的原稿在哪裡? 這個資訊 (metadata) 需要保留起來, 因此下面這個步驟的重點就是回溯紀錄 metadata.

 python scripts/generate_meta_info.py --input datasets/DF2K/DF2K_HR, datasets/DF2K/DF2K_multiscale --root datasets/DF2K, datasets/DF2K --meta_info datasets/DF2K/meta_info/meta_info_DF2Kmultiscale.txt

7. 以上算是滿快就跑完了, 跟我打字的速度差不多. 接下來是重點, 作者的說明在不同版本有些許差異, 總之找到前面檔案總管節圖的那個目錄底下的 options, 裡面會有很多個 yml 檔. 以放大四倍來說, 需要改這兩個檔案, 確定目錄都對. 第一個訓練 generator, 第二個訓練 discrimator, 因此 pre-train 的檔案不同.

train_realesrnet_x4plus.yml

train_realesrgan_x4plus.yml

8. 接下來用 debug mode 跑一次,

python realesrgan/train.py -opt options/train_realesrnet_x4plus.yml --debug

馬上發現 Anaconda 的環境沒有安裝 cuda “Torch not compiled with CUDA enabled", 即使補安裝 cudatool, 也只是把 torch 版本由 1.10.2+CPU 變成 1.10.2, cuda 還是 unavailable.

(RealESRgan) C:\Users\ufoca\Real-ESRGAN>python
Python 3.8.12 (default, Oct 12 2021, 03:01:40) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> print (torch.__version__)
1.10.2
>>> print (torch.cuda.is_available())
False
>>>

看起來要先下載正確版本. 參考 [2],[3],[4]. 網站 [4] 是 pytorch 官網, 似乎只要把自己環境設定對, 就可以用 UI 生成正確的安裝指令.

conda install pytorch==1.10.2 torchvision cudatoolkit=11.3 -c pytorch

不過這招其實沒用, [5] 說的才是對的. 要用 pip install, anaconda 本身的 server 只有 cpu 的 pytorch 可以選.

pip install torch==1.10.0+cu113 torchvision==0.11.1+cu113 torchaudio===0.10.0+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html

另外, 我本來 pytorch 是 1.10.2, torchvision 是 0.11.3, 但上面那行貼了就會動. 安裝完跑出一些紅字說沒有檢查所有版本的相容性, 所以我又重新安裝成我的版號, 不過我不知道我的 torchaudio 應該要搭哪一版? 反而安裝不成功.

於是我還是用網路版本, 並且重跑一次

pip install -r requirements.txt

讓作者的檢查系統幫我微調一下版本. 總之, AI 的技術進步很快, 網路文章上的版號參考就好. 到時候要隨機應變.

9. 接者就不用跑 debug 版了. 改跑這條.

python realesrgan/train.py -opt options/train_realesrnet_x4plus.yml --auto_resume

我估計應該會做很久很久. 記錄一下起跑時間.

run

UI 顯示要跑 5 天半.

2022-04-10 21:48:02,327 INFO: [train..][epoch: 5, iter: 6,500, lr:(2.000e-04,)] [eta: 5 days, 10:47:47, time (data): 0.476 (0.002)] l_pix: 6.8241e-02

10. 然後是訓練 discriminator

python realesrgan/train.py -opt options/train_realesrgan_x4plus.yml --auto_resume

證明環境沒問題之後, 就可以自己動手腳去改 code 了.

[Note]

1. https://github.com/xinntao/Real-ESRGAN/blob/master/Training.md

2. https://towardsdatascience.com/setting-up-tensorflow-gpu-with-cuda-and-anaconda-onwindows-2ee9c39b5c44

3. https://varhowto.com/install-pytorch-cuda-10-0/

4. https://pytorch.org/

5. https://ithelp.ithome.com.tw/articles/10282119