2025年1月14日 星期二

Ruffle 中文字型的處理

2025年1月14日 星期二

 Ruffle 是一個開源且積極發展中的 Adobe Flash Player 模擬器,詳情可以參考官網 https://ruffle.rs/。最近我透過它,讓十幾年前分享的互動式 Flash 教具及學具,重新在網頁瀏覽現蹤;甚至利用新發展的「Flash:SWF 遊戲啟動器」幫一些尚未改版為 HTML5 的工具,可以搭配 Google 試算表,來客製化自己的 Flash 遊戲 (詳見「雄:Flash:SWF 遊戲啟動器」)。

Ruffle 目前有一個問題,無法讓載入的 Flash 程式使用系統的字型,像我的互動式 Flash 教具及學具,最大的特色是可以讓使用者自訂文字內容,所以文字大部份都會使用到系統字型;所以在 Ruffle 的環境中,大部份的中文字都看不到了。

那「SWF 遊戲啟動器」是怎麼讓中文能正常顯示的?

在 Ruffle GitHub Wiki 的 FAQ 中有參考資料:

簡單的整理一下重點:

  1. Ruffle 可以自行指定要載入的字型檔案(支援 TTF、OTF、TTC、OTC 字型檔,和內嵌在 .swf 中的字型),並讓系統字型名稱去對應載入的字型名稱。
  2. 使用 window.RufflePlayer.config.fontSources 來指定要載入的字型檔案
  3. 使用 window.RufflePlayer.config.defaultFonts 來指定系統字型 sans 對應到前面那個字型檔的字型名稱。

1. 使用 TTF 字型

例如我使用「芫荽」字型,將「芫荽」字型的檔案放到網站中,讓 sans 去對應「芫荽」字型的名稱 "Iansui Regular" :

window.RufflePlayer.config.fontSources = ["https://gsyan888.github.io/fonts/Iansui-Regular.ttf"];
window.RufflePlayer.config.defaultFonts = {
    sans: ["Iansui Regular"]
};

因為「芫荽」字型的名稱為 "Iansui Regular" ,所以我們指定系統預設字型可以用它

sans: ["Iansui Regular"]

除了使用 「芫荽」字型也可以試試 Google 的思源黑體字型( "Noto Sans TC Regular")。

會卡關的地方是,所有的字型檔都能使用嗎?

哈!會這樣說,肯定不是所有字型檔都能拿來使用!(我拿教育部的楷書、隸書......玩了好久,玩不出所以然來)。雖然 Ruffle FAQ 中說到它支援 TTF、OTF、TTC 和 OTC 字型,但是我試半天,卡很久,最後選擇了「芫荽」字型,主要是它的檔案大小最適中(不知道以後支援的字數變多以後,是不是也會長大)。

2. 使用內嵌字型的 .swf

另外有一個方法一定會成功的,就是製作一個 Flash 字型檔,必須是 AS3 格式(ActionScript 3),並將想使用的字型嵌入後,儲存為 .swf 檔案。

但是像我的電腦中只有舊舊的 Flash 8,它根本不支援 AS3 啊!

真的想自己玩一下,有個開源的好工具 JPEXS Free Flash Decompiler (FFDec):

雖然不如 Adobe 的 Flash 工具華麗,但是夠強悍,可以編輯 Flash 的檔案,也支援 AS3。

底下來記錄一下,如果利用 JPEXS Free Flash Decompiler 來將電腦中的 TTF 字型,包在 .swf 中,讓 Ruffle 可以載入它,解決中文顯示的問題。不過,可別拿有版權問題的字型放到網路了!

2-1 新增空白檔案

啟動 JPEXS Free Flash Decompiler 以後

  • 主選單 [File] 裡按 [New empty]
  • [Compression] 選 [LZMA] (個人觀察這種壓縮方式好像可以讓檔案小一點)。
  • [Script type] 選 [ActionScript 3]。
  • 按 [OK]
[圖1] 開新檔案

2-2 新增 DefineFont3 Tag

  • 展開 [frames],對準 [frame1] 按右鍵。
  • 選 [add tag inside] , [others], [fonts], [DefineFont3]

[圖2] 新增 tag

2-3 確認新增 tag

  • 按 [OK]
[圖3] 確認新增 tag

2-4 修改 Font name in tag

  • 在右側欄的 [Parameters] 按 [Edit]
  • 在 [Font name in tag] 的輸人區中,輸入這個字型的名稱(可以自訂,但在 Ruffle 中要用這個名稱,截圖中是改為「全字庫說文解字」)。
  • 改好了就可以按 [Save] 鈕。
[圖4] 更改字型名稱

2-5 嵌入字型

  • 按 [Embed]
[圖5] 準備內嵌字型

2-6 選擇字型

  • 出現檔案開啟的對話框,按右上角的資料夾圖示來選擇未安裝過的字型檔案,或是從 [installed] 的清單中選擇已安裝在系統中的字型(請自行斟酌版權的問題)。
  • 如果是選擇檔案的,就按 [open] 鈕。
[圖6] 選擇要內嵌的字型

2-7 選擇要嵌入的字集

  • 在字集清單中選擇要嵌入的字有哪些,最懶的方式是選 [All characters] ,這樣就全選了,但是字愈多,檔案愈大哦!當然也可以在 [Idividual characters] 的輸入區中,輸入想選的字有哪些。
  • [重要] 千萬記得一定要勾選 [Set ascent descent and leading],不然會像我卡關好久,swf 使用時字有出現,但是整個偏上,只能看到下半部。因為 ascent、descent 和 leading 三個參數的值會影響字顯示的位置,想自己設定嗎?太累了,讓程式自己設定就好了。
  • 都設定好了,就按 [OK] 鈕。

[圖7] 選擇要使用的字集或字

2-8 儲存檔案

  • 按 [File] 中的 [Save]
  • 檔案不建議使用中文的,以英文及數字來命名。截圖中是使用字型檔原來的檔名,變成「font-ebas927.swf」,這樣子比較好對應。
[圖8] 儲存檔案

製作好內嵌字型的 .swf 字型檔以後,只要修改一下 RufflePlayer 的設定,搭配前面製作時的「swf 檔名」(步驟 2-8) 及「Font name in tag」(步驟 2-4),變成這樣:

window.RufflePlayer.config.fontSources = ["https://gsyan888.github.io/fonts/font-ebas927.swf"];
window.RufflePlayer.config.defaultFonts = {
    sans: ["全字庫說文解字"]
};

來看一下使用「全字庫說文解字」字型以後,我的 Flash 唐詩三百首作品中,七言古詩裡的長恨歌變成這樣:

[圖9] 使用全字庫說文解字字型的長恨歌

[圖9] 紅色方框的地方就是說文解字中沒有的字。用芫荽字型的版本對照一下(圖10):

[圖10] 使用莞荽字型的長恨歌

哈!古字要認得可能要花一點力氣才行。想玩玩看,認認古字,可以按底下的連結

相關連結




2025年1月9日 星期四

Flash : SWF 遊戲啟動器

2025年1月9日 星期四
我第一個自製的Flash 抽號碼機是 2005 年的事,時光飛逝,今年已是 2025年。2009年前後密集創作的其它 Flash 工具及遊戲,原本放在力行國小的檔案,可能學校網頁伺服器已不再對外提供服務,舊的網址都讀取不到,請參考本文後面的小節「雄的家 Flash 作品集」,裡面有最新的載點及線上玩的連結。

兩週前在逛一個以前很喜歡的英國網站,明明應該很小的工具,居然載入半天,好奇心驅使我研究了一番。原來那個工具並不是新的程式,而是 Flash 以 Ruffle (https://ruffle.rs/) 這個開源的 Flash Player 模擬器來載入的。關於 Ruffle ,以前曾經在另一個知名的網站 Wayback Machine  (http://web.archive.org/) 中,有使用 Ruffle 載入遊戲玩的經驗,印象中就是偏慢,然後中文字是出不來的。

研究了一個多星期,不但我的那些互動式 Flash 教具、學具可以重新在瀏覽器中出現,中文也都順利顯示!更進一步,幫它們寫了一個「SWF 自製遊戲啟動器」:

「SWF 自製遊戲啟動器」可以載入 Google 試算表中的遊戲設定及題庫,透過 Ruffle Player 來載入 SWF 檔案並執行 Flash 的程式。

它的使用方法和「HTML5 FUN:自製遊戲啟動器」類似。

編修自己的遊戲題庫

  • 建立 Google 試算表題庫範例的「副本」:
    • 按 [範例試算表] 開啟。
    • 按試算表左上方選單的 [檔案]  中找 [建立副本]。
  • 將試算表副本「共用」,設定為「知道連結的任何人」「檢視者」。
  • 在自己的試算表副本中,先在畫面下方的工作表名稱中,按一下想製作的遊戲。
  • 修改題庫內容。
  • 複製瀏覽器最上方網址列中的網址。

製作遊戲網址及 QR Code

  • 開啟「SWF 自製遊戲啟動器」:
  • 在啟動器的頁面中找到「參數設定」
  • 在「 Google 試算表共用連結網址」的輸入區中,貼上前面複製好的試算表網址。
  • 按【送出參數並製作網址】按鈕。
製作好的遊戲網址,按一下,會複製到剪貼簿,即可以將網貼到別處保存或分享。想立即玩,可以按一下 QR Code 的圖片;或是用載具掃描 QR Code。

操作示範影片

Q&A

  • 「SWF 自製遊戲啟動器」支援哪些 Flash 遊戲?
    • 個人設計的所有遊戲及工具都可以用遊戲啟動器來載入使用(清單待重新整理),但是目前能搭配 Google 試算表自訂設定及題庫的有:
  • 如何製作遊戲選單?
  • 載入時為什麼很慢?
    • 因為我們使用的是 Ruffle Flash Player 的模擬器,加上有中文必須等它下載一個 8MB 的「芫荽」字型檔,所以要稍等一下下。
  • 遊戲可以下載到本機玩嗎?
    • 只要下載了 Flash Player 程式,就可以用來開啟本機中的 .swf 檔案播放,所以關鍵在去哪裡下載 Flash Player。Adobe 已經找不到,可以在 Wayback Machine 找到他們備份的 Adobe Flash Player 32 , 按這裡前往查看下載
  • 字體可以更換嗎?
    • 目前「SWF 自製遊戲啟動器」預設使用「芫荽」字體,另外測試過,也可以使用 Google 的思源黑體;不過目前不提供更換字體。
  • 可以多個遊戲放到同一個 Google 試算表嗎?
    • 一個 Google 試算表可以有很多個工作表,所以放很多個不同遊戲,想新增工作表,在試算表的畫面最左下角有個加號,「+」按一下,就可以新增工作表,複製已有的遊戲題庫貼上,再修改設定或題目內容即可。

雄的家 Flash 作品集

相關連結

更新記錄


2025年1月2日 星期四

國字標準字體筆順學習網改版的影響

2025年1月2日 星期四

教育部的「國字標準字體筆順學習網」在今天 (2025/01/02) 進行改版,還滿期待看看它有什麼新風貌、新功能的。哈~不過因為 HTML5 FUN 的筆順練習、PARTDLE、填字遊戲......等有使用到「國字標準字體筆順學習網」的筆順資料,怕會因為抓不到筆順資料,導致 HTML5 FUN 的工具無法正常運作,真的是既期待又怕受傷害。

昨天半夜突然想到,如果為了避免筆順資料來源「斷頭」,最好還是先備份一下好了。於是利用 Google Colab 寫了一個簡單的 Python 程序,趁半夜機器還沒有異動,將現有六千多個國字的筆順資料儲存到 Google Drive 中。就這樣子弄到早上四點多才去睡。

果不其然,早上就發現用原有的方法抓不到教育部的筆順資料了!試了一下,HTML5 FUN 的筆順練習還能使用,因為幾年前就幫它設計了備援的程序,如果抓不到教育部的,就改抓 GitHub g0v 筆順專案備份的筆順資料,雖然不完整,但至少大部份的字是能抓得到資料的。至於 PARTDLE,記得昨晚有快速掃描程式碼,應該是跟筆順練習有備援程序的;結果早上測試,抓不到筆順資料,PARTDLE 就廢掉了。

有一點後悔昨晚怎麼沒有仔細的查程式,早上11點以前,可能讓不少小朋友要玩 PARTDLE,卻失望了。幸好有舊程式碼可以參考,沒多少工夫就讓加上備援程序的PARTDLE 可以上線。

仔細研究了一下「國字標準字體筆順學習網」今天的版本,它將筆順資料直接嵌在網頁中了,以一個變數的方式在運作。另外在頁面中多了「產生快速碼」、「產生QR碼」......等功能鈕。不過,今天的頁面看起來,真的還滿像「工地」的,改天再來觀察看看。

花了一個早上,順便以 Google Apps Script 將 Google Drive 中的六千多個筆順資料檔案,通通儲存到一個 Google 試算表中,大部份字的資料,都沒有超過每一個儲存格只能置入 50000個字元的限制,超過的就將資料分兩個儲存格;哈!第一次把 Google 試算表餵到 19.5MB 大。接下來就可以改由 Google 試算表來當資料來源,再不行,只好用 GitHub 了。


2024年12月29日 星期日

Dead Blue:電源供應器除塵與驅動程式更新

2024年12月29日 星期日

平常在使用的桌機(Intel(R) Core(TM) i5 CPU  760  @ 2.80GHz) 源自於別人汰換不要的主機,查了一下,我應該是 2016年買了電源供應器、加了 RAM ,並且換上 SSD 以後,安裝 Windows 7 跑到現在。半年前它開始不乖,經常當機或是工作到一半,自己重新啟動。CPU、顯示卡重新上過散膏,記憶體、顯示卡金手指清除過氧化物,所有風扇除塵過 ...... 甚至用新的磁碟重新安裝 Windows 10 ,它還是經常當機重開,而且頻率有愈來愈高的狀況。哈!我都已經威脅這部老機器,準備將它換掉了,還是當個不停。

前幾天打開主機,再重新審視了一下自己是否遺漏了什麼項目沒做的。整部機器乾乾淨淨的,只有一個地方,一直認為它應該不會出狀況:「電源供應器」。

以前電腦常因為電源供應器品質不良而掛掉的,所以這一個 2016年買的電源供應器有特別挑過的,所以一直覺得問題不會在它。為了確定 PSU 沒問題,拆了螺絲及外殼。哇!嚇死人了!外面光光亮亮,裡面滿滿的灰塵!

仔細的觀察了一下,確認每一顆電解電容都完好。接著徹底地將它內部清理一番後,重新裝回主機測試。測試了三天,模擬以前會當機的各種環境,故意讓它的負載盡量大。就這樣安全地度過。問題都解決了嗎?

早上想說,還是再用 Windows 10 測試一下,如果都沒問題,要開始來搬資料換系統了。哈!當初用 Windows 7 ,也是百般不願意,撐到 Windows 7 快被微軟終止服務,才因為很多工具無法在 Windows XP 上使用才更換系統;這一回又遇到類似的情形,Windows 10 在 2025年10月也將終止支援。但換個系統並不是說換就換啊!我有不少工具及設定得備份,得確定能在新系統中使用。

半年左右沒用的系統,一開機,當然就是更新囉!好不容易檔案下載到 100% 了,當!又當了!滑鼠、鍵盤都不動了。

重新開機後,果不其然,用沒多久,又當了,不過這回好一點點,看到了 dead blue 的畫面,至少看到了關鍵的訊息:

BUGCODE_USB_DRIVER

不死心的冒險,重新關機後,讓它將系統更新完成。驅動程式有兩個項目,音效相關的安裝進行到一半,啪!dead blue 的畫面又來了:

BUGCODE_USB_DRIVER

只好認真面對這個問題了,重新關機以後,到裝置管理員中,找「通用序列匯流排控制器」,哈!中文這麼長,英文 Universal Serial Bus controllers 也沒短多少;將裡面的裝置一個個移除。幸好我的鍵盤還是 PS2 的,USB 的滑鼠因為騙動程式被移除而不能動了,還有 PS2 的鍵盤可以操作。USB 的驅動程式通通移完完畢以後,重新開機。

答答~~開機以後,所有 USB 的驅動程式都自動重新安裝以後,Windows 10 就穩穩地用了。這讓我想起之前在和 DELL 筆電上的 INTEL 顯卡 + NVIDIA 顯卡奮戰時,也有類似的狀況,在 Windows 10 更新完,要將顯卡的驅動程式移除,讓它自己重新偵測並安裝以後,才能正常的使用;另一部 Acer 的舊筆電也有類似的問題。實在不知道為什麼還要手動移除,但這三部機器都得經過這樣的程序以後,才能正常使用。

好了!希望我這一陣子的「機瘟」結束了!機器動不動就當機,讓人實在沒有心情做研究,哈!我並不想把時間花在研究硬體的除錯上,不點都不好玩。


2024年12月24日 星期二

筆電軟排線氧化

2024年12月24日 星期二

這兩天的心得,十幾年的老筆電整理時,別忘了檢查並清理軟排線(FFC, Flexible Flat Cable)接腳上的氧化物。之前接手朋友汰換的筆電時,鍵盤某些按鍵鈍鈍的,後來甚至會按下後沒反應。原本以為是按鍵的問題,有時拆開來清一清(哈!未見清出什麼啊!),敲一敲,好像正常一點;但是過一陣子,那些按鍵又開始罷工;另一部更舊的筆電,也有類似的情形。

最近跟三部舊筆電成天和在一起,哈!好像打通任督二脈一般,鍵盤的問題也解決了!看一下底下這張照片:


這是筆電鍵盤和主機板連接的 FFC ,金屬腳表面有很明顯的氧化物。就是這些氧化物讓金屬接腳不再光亮,甚至影響了按鍵訊號的傳遞。

我用 2B 鉛筆,將每一個金屬腳上的氧化物盡量磨掉,將排線接回主機板的插槽。開機後測試鍵盤上的每一個按鍵,果然都可以答答答答~~反應靈敏,像新的一樣了!


2024年12月22日 星期日

Python: codecs read UnicodeDecodeError

2024年12月22日 星期日

 HTML5 FUN 的遊戲與工具大多是使用 LimeJS 開發的,LimeJS 其實已經停更快十年,連它依存的 Google Closure Library 也在 2024年8月封存。LimeJS 使用的 Closure Library 、Closure Compiler ...... 其實都是很舊的版本;像 compiler 最後是停在  20130411 的版本,這個舊版本,很多 JavaScript 新的語法它都不認得,當然,應該也存在不少臭蟲。

這幾天在測試,到底 LimeJS 在動得最少的狀況,Closure Library 和 Closure Compiler 可以使用到哪個較新一點的版本?都測試完以後,想讓 LimeJS 至少可以「活過來」,它目前下載原始專案的檔案,連安裝都會失敗。

以 Closure Library 來說,20170816 的版本是可以用的,但是它 build 工具 source.py (closure/bin/build/source.py) 遇到某些檔案會出現錯誤而卡住:

[圖1] Python codecs 讀取檔案失敗

上面最重要的訊息是:

UnicodeDecodeError: 'utf8' codec can't decode byte 0xa5 in position 3457: invalid start byte

查了一下,後來版本 Closure Library 的 source.py 中,用 codecs 來讀取檔案內容,而且指定使用「utf-8-sig」的編碼:

  fileobj = None
  try:
    fileobj = codecs.open(path, encoding='utf-8-sig')
    return fileobj.read()
  except IOError as error:
    err = True
    raise IOError('An error occurred opening or reading the file: %s. %s'
                  % (path, error))
  finally:
    if fileobj is not None:
      fileobj.close()

反覆地測試,查了半天,總算知道卡住的原因了。哈!就那麼巧,我的檔案中居然有好幾個是使用 big5 中文編碼的。Python 的 codecs ,一執行到 read 就出現錯誤,這個情形在舊版使用內建的 open 再 read ,並不會發生的。

解決這個錯誤的方法很簡單,就是先在程式中,先顯示檔名,然後就可以知道卡在哪一個檔案,將有問題的檔案以文字編輯器以 UTF-8 編碼來儲存即可。

有時思考真的不能太僵化,一開始我都懷疑是 Python 環境的問題,但是這一次是各種版本及系統都會發生,完全找錯方向了。

等都弄好以後,再將 LimeJS fork 一份並更新,實在怕哪一天什麼都沒有了,然後 HTML5 FUN 也跟著動不了了。

相關文章

2024年12月17日 星期二

Intel 顯卡自訂解析度

2024年12月17日 星期二

打從用自己的薪水去中華商場扛回的第一部 80386 DX 20 開始,就一路這樣不知道花了多少新臺幣追新的規格。最近一次買新的電腦應該十幾年前的事了。家裡淨是一些別人汰換下來的桌機跟筆電,原本都用得好好的,最近是狀況一堆。說實話,自從工作上不用維護別人的電腦以後,硬體、作業系統方面的新知接觸的也少了,刀劍不磨,果然會變鈍。不過電腦跟人一樣,相處久了,就會多熟悉一點,甚至連底都可以摸清了。小孩兩年多前閒置的筆電,一直有大大小的狀況,不能開機,原來是因為 CMOS 沒電了;進 Windows 10 很不穩定,動不動就當機,連 dead blue 都看不到,應該是 NVIDIA NVS 5200M 顯示卡在作怪,索性將它停用了 [圖1]。

[圖1] NVIDIA NVS 5200M 停用

NVIDIA 顯卡停用後,剩下的 Intel 顯卡,解析度只剩下三種可以選了 [圖2]

[圖2] Intel 內顯的解析度清單

我想用 OBS 直接錄 720P 的教學影片,就變成還要重新編碼,Intel 顯卡可以自訂解析度,工具在哪裡?底下是實作的記錄。

先把 Intel 顯卡自訂解析度的工具程式找出來,如果已經安裝好,可以在 Windows\System32 的資料夾中,用「custom」的關鍵字來找:

[圖3] CustomModeApp.exe

如 [圖3] 自訂解析度的工具檔名為「CustomModeApp.exe」。找到以後,就可以開啟它,應該會出現如 [圖4] 的警告對話框:

[圖4] 自訂解析度工具使用前的警訊

當然要按「是」的按鈕才能繼續。

進入「Intel HD Graphics 控制台 / 顯示器自訂解析度」後,就如 [圖5] 依序輸入相關的設定值:

[圖5] 自訂解析度

輸入完,只要按了畫面右下角的加號 (+) 鈕,並按完「是」,就新增完一筆。

[圖6] 確認新增自訂的解析度

Windows 顯示器的設定裡,顯示器解析度清單也多了一個選項了:


那到底會不會發生如一執行自訂工具警語中的那些負面的影響呢?哈!我也是第一次這樣玩,所以不負任何擔保責任哦!

[註] 後來發現也可以利用Windows 顯示器的設定裡的「進階顯示器設定」,找「顯示器 1 的顯示卡內容」,開啟後,在「介面卡」的分頁中,按「列出所有模式」來找想用的。


解決Windows Update 錯誤代碼 0x80242fff

之前 Windows 10 在進行更新的過程中,不明原因當機過,重新開機後 Windows Update 總是出現 0x80242fff 的錯誤代碼,連帶影響新的更新。看起來應該是有檔案不完整,干擾了更新旳流程。只好手動改名,讓 Windows Update 讀取不到錯誤的檔案。

關鍵就在將以下兩個資料夾改名稱:

  • Windows\SoftwareDistribution
  • Windows\System32\catroot2

首先以系統管理員開啟一個「命令提示字元」的視窗,然後輸入以下的指令:

net stop wuauserv
net stop cryptSvc
ren C:\Windows\SoftwareDistribution SoftwareDistribution.old
ren C:\Windows\System32\catroot2 catroot2.old
net start wuauserv
net start cryptSvc

註: 網路上看有人建議還要停止另外兩個服務,我安裝的 Windows 10 家用版則不需要:
  • net stop bits
  • net stop msiserver
如果有順利執行完,再重新讓 Windows Update 檢查更新,應該就可以恢復功能了。


2024年12月13日 星期五

ASUS 舊筆電的觸控板不正常

2024年12月13日 星期五

最近老桌機頻頻當機,原因一直找不出來,換新機的動機並不強烈,大不了改用從別人那邊接收來的舊筆電,插電、接螢幕當桌機用。花了幾天玩了兩次的 macOS Catalina Patcher,終於將自己的 MBP 2010 middle 由 OS X 10.13 升級到  OS X 10.15.7 (改天再整理一下筆記)。不過,殘念,Chrome / Edge 不但都停止支援,不能再更新,居然連跑 HTML5 FUN 的遊戲都會卡卡的,裝了 Windows 10 好很多,但是驅動程式也是個問題,還是拿出接收自朋友的筆電安裝 Windows 比較直接。

之前去外面講課都會帶 ASUS X533M,幾個月前突然不能開機了,試了好久,就將它丟到一旁。昨天本來要拆它的 8GB 記憶體(DDR3L 12800)替換 ASUS X401A 的 4GB 記憶體(DDR3 12800),換好後不能開機;只好拆另一部也罷工的 Dell 筆電中,16GB 的其中一片來試。這才發現,原來 X533M 的那片記憶體壞了,難怪無法開機。將好的兩片 8GB 記憶體分別安裝到兩部 ASUS 的舊筆電中,哈!都又活過來了!

因為之前的 SSD 都拿去玩 macOS Catalina Patcher 了,裝回 ASUS 筆電只好都重新安裝 Windows 10。這幾天一直在重灌系統,累積了不少經驗值,本篇先記錄一下有關 ASUS 舊筆電觸控板不正常的問題。

在安裝完 Windows 10 ,並更新過系統以後,兩部 ASUS 舊筆電的觸控板都只有滑鼠左鍵的功能,「手勢」的部份都沒反應,即使在硬體清單中已有「ASUS Touchpad」,且看似驅動程式安裝正確了,觸控板的功能仍未正常動作。

試了半天,解決的方法其實很簡單,如果硬體清單中已有「ASUS Touchpad」,將它移除:

[圖1] 解除 ASUS Touchpad 

做完 [圖1] 的動作,重新開機以後,Windows 10 將 ASUS Touchpad 自動裝回來以後,Touchpad 就可以正常使用手勢來控制了。

另外,像搭配 fn 鍵控制的功能,則需要在線上更新中,勾選選用的驅動程式,才會正常運作。本以為這兩部舊筆電只能支援到 Windows 7/8 ,沒想到還能跑 Windows 10,8GB 的記憶體,加上 SSD ,應該還可以撐一下。是說,Windows 10 也快要停更了,最後應該還是像我目前桌機用的 Windows 7 一樣的下場,一個個軟體都不支援;整天忙著玩耍,不努力賺錢,就要省著點花用,屆時有需要換再說吧!


2024年12月8日 星期日

Life : 蛋殼轉轉轉

2024年12月8日 星期日

最近看到水槽裡的蛋殼都會拿起來玩。

怎麼玩?看影片比較快:

搖晃動作使蛋殼在容器內部移動,尋找一個穩定的位置。當蛋殼找到這個位置後,它們就自然地堆在一起,形成一個穩定的結構。有時是疊在一起,有時幾乎接回一個蛋的形狀;今天會什麼形狀?搖完、轉完就會像開獎一樣地揭曉答案,哈!是不是很有趣!




2024年12月6日 星期五

Life : 閱聽筆記兩則: 音樂與情緒、放空讓大腦重啟

2024年12月6日 星期五
前幾天在在聽 VOA Learning English 時,發現文章是誰念的,影響還滿大的,除了語速、音調、音色 ...... 種種聲音的元素,都會影響我的決定,決定是要按下止鈕,還是繼續投入到內容中。下面兩個短講,無論是聲音或是內容都會讓人想把它們看完,或是聽完。而且我都製作了中英對照的字幕。

Why Do You Love Your Favorite Songs?

昨天半夜看到這一部 TED 影片:

覺得滿好的,以 NotebookLM 製作了中英對照的字幕檔,可以用 HTML5 FUN Audio Player 來看:

Scarlet Keys 說到歌曲的元素如何牽動聽眾情緒,幾下是幾個重點:

  • 「音調」就如同說話的語氣,能左右人們的情緒。
    • 歌曲的旋律如同說話的音調,影響著歌曲的情緒走向。 
    • [例] 醫生用上揚的音調說話會讓人心跳加速,而下沉的音調則讓人感到安心。
  • 「旋律」中的音符穩定與否,也牽動著聽眾的感受。
    • 作曲家可以利用音符的穩定與不穩定性,來營造歌曲的情感張力。  
    • [例] Adele 在演唱 "Someone Like You" ( https://www.youtube.com/watch?v=hLQl3WQQoQ0 ) 時,在 "Nevermind" 這個詞上使用了最穩定的音符,而在 "find someone" 和 "you" 上則使用了不穩定的音符,營造出心碎的感覺 。
      哈!我也覺得 Adele 唱到 "Never mind, I'll find someone like you" 那語氣根本就表示永遠找不到了!
  •  歌曲中「和弦」的使用也能影響情緒。
    • 和弦是由三到四個音符同時演奏,能為歌詞增添情感深度。 
  • 「重複」是歌曲中常用的技巧,能幫助聽眾記住歌曲並跟著哼唱。
    • 但過多的重複會讓大腦習慣並分心,導致聽眾停止聆聽。
    • 因此,作曲家會在重複中加入變化,例如改變和弦或旋律,以重新吸引聽眾的注意力。
    • [例] 講者提到大多的妻子可能會重複說 "親愛的,把你的毛巾撿起來!",但如果重複太多次,丈夫的大腦就會習慣並忽略妻子的聲音。
  • 歌曲能幫助人們「處理情緒」。
    • 當我們聆聽喜歡的歌曲時,大腦會釋放讓人感覺良好的多巴胺;而當我們聆聽不喜歡的歌曲時,身體則會釋放壓力荷爾蒙皮質醇。
    • 透過聆聽或創作歌曲,我們可以將負面情緒轉化,並從中獲得療癒。
    • [例] 作者在罹癌後,Lizzo 的 "About Damn Time" 成為了她的抗癌歌曲,歌詞和旋律給了她樂觀和多巴胺的刺激。 她也創作了一首歌,用幽默的方式來處理自己的負面情緒,並在現場演唱。

How to hack your brain for better focus?

另一部 TED Talk 的影片:
以 OpenAI Whisper 製作字幕,再用 NotebookLM 製作了中英對照的字幕檔,可以用 HTML5 FUN Audio Player 來看的版本:

Sasha Hamdani 說到她因為要哺乳而「受困」,開啟了她對「放空」有不同的看法,我覺得最重要的一句話是:

Doing nothing is actually doing something.

很多人都怕自己「浪費時間」,怕自己錯過了什麼訊息 ......,總是讓腦袋不斷地塞東西;哈!我非常喜歡放空,無論騎自行車、爬山、快走...... 運動時,或是坐車時,耳朵不會塞著耳機,眼睛不會盯著手機,一時半刻沒接收到訊息、「新知」,人生並不會因此而有重大影響的。記得以前寫程式卡住了,或是壓力大時,騎個車、走個路,放空一下,各種結就自然解開了;所以對我來說,放空有益身體健康。一起來放空吧! ^_^

NotebookLM 製作中英對照字幕

記得之前只要給這樣的要求:

將來源的字幕修改為中英對照的版本, 中文放在原文的下面

NotebookLM 就可以將英文字幕都加上中文,昨天似乎都只能翻譯到一百五十幾句就停止,看來資源是有被限制了。未完成的部份,只好改一下句子(假設要從第 155 句開始),變成:

將來源的字幕從編號155起修改為中英對照的版本, 中文放在原文的下面

另外,如果直接複製產出的字幕,得要稍微調整一下內容,去頭、去尾及去掉標粗體字的 Markdown 語法 **  外,可以在 Notepad++ 中,以搜尋及置換,調整一下格式依執行 :

  • 多個換行(\r\n) 變成一個:
    • 搜尋:(\r\n)+
    • 置換:\r\n
  • 在 SRT 序號前多加一行空白行:
    • 搜尋:(\d+\r\n)(\d+:)
    • 置換:\r\n$1$2

相關連結


    2024年12月4日 星期三

    HTML5 筆順練習 : 分享帶有功能設定的網址

    2024年12月4日 星期三

     HTML5 FUN  筆順練習第三版可以按操作畫面右下角的「設定」鈕來進行一些功能的設定,可以將這些功能設定放到給學生練習的網址中,幫他們設定功能選項的初始值嗎?

    答案是可以的。我已經忘了是什麼時候開始就設計了這個功能,也一直都沒有將使用方法加到說明中。剛好又有朋友問起,就在筆順練習的「分享」功能中,多加了一個選項開關,用來控制分享的網址是否要包含功能選項的設定 [圖1]。

    [圖1] 筆順練習是否包含選項的開關

    在使用 [圖1] 的選項時,記得先設定好功能選項 [圖2] 中的四個選項:

    [圖2] 筆順練習的功能設定畫面

    設定好了,可以利用筆順練習「分享」對話框 [圖3] 中的開關,來控制分享的網址中,是否要有控制功能選項初始值的的參數:

    [圖3] 筆順練習帶有功能選項預設值的網址

    示範影片

    以下影片示範如何讓筆順練習分享的網址中帶有功能設定的預設值:

    相關連結


    2024年11月29日 星期五

    OBS 快捷鍵的設定檔

    2024年11月29日 星期五

    電腦因為系統太舊,很多工具不能安裝了,加上最近頻頻因不明原因當機重新啟動,只好拿出安裝好一陣子沒上線的新系統來更新、測試。

    平時在錄教學影片的 OBS ,安裝版本為 30.2.3 ,設定開始錄影與結束錄影的快捷鍵時,發現了一個問題,它居然無法正確抓到我簡報筆的按鍵:

    • Ctrl + Windows + E
    • Ctrl + Windows + C
    [圖1] 設定快捷鍵

    以前在 OBS 27.x 版時是可以抓到這兩組按鍵的,現在偵測不到,怎麼辦?

    好吧!使大絕,直接改設定檔總可以了吧!

    設定檔在哪裡呢?

    先按一下 OBS 上方主選單 [檔案] 中的 [顯示設定檔資料夾] 

    [圖2] OBS 開啟設定檔資料夾

    設定檔資料夾中,找到檔名為 basic.ini 的檔案,以記事本開啟來修改

    [圖3] OBS 設定檔 basic.ini
    在設定檔中
    [圖4] OBS 設定檔中快捷鍵的設定

    找到 [Hotkeys] 的區塊,如果找不到,就新增。

    以下的內容即是我需要的:

    [Hotkeys]
    OBSBasic.StartRecording {"bindings": [{"command": true, "control ": true, "key": "OBS_KEY_E"}]}
    OBSBasic.StopRecording {"bindings": [{"command": true, "control": true, "key": "OBS_KEY_C"}]}

    OBSBasic.StartRecording 用來設定開始錄影的按鍵;OBSBasic.StopRecording 用來設定停止錄影的按鍵。

    按鍵對應:

    • Windows 鍵:"command": true
    • Ctrl 鍵:"control ": true
    • E 鍵:"key": "OBS_KEY_E"
    • C 鍵:"key": "OBS_KEY_C"

    哈!當然是希望 OBS 可以順順的用,我按下簡報筆,就能自動偵測好,這樣子就用不著前述的筆記了;不過,有備無患的!


    2024年11月28日 星期四

    以 Shadowing and Summarizing 來學習語言

    2024年11月28日 星期四

     昨天在 VOA Learning English 讀到這一則:

    文章中說到學另一種語言,只是單純地聽與重複是不夠的,因為我們的大腦會將聽到的聲音過濾為母語的模式,導致無法真正掌握發音細節。要提升英語發音,需特別著重於shadowing,要仔細模仿語調 (intonation)、重音 (emphasis)、停頓 (pauses) 等,而非只注重單字的發音 (pronunciation)。

    文末附了 Tim Murphey 在日本帶學生如何進行 Shadowing and Summarizing 的實況影片,哇!雖然時間很晚了,我居然愈看愈有精神,約半小時的影片看完,不過癮,把播放清單中,Tim Murphey的其它影片也看了一下,收穫不少。YouTube 影片網址如下:

    偷懶,用 Google NotebookLM 依據字幕內容把練習 Shadowing 和 Summarizing 的方法整理出來,看了一下,哈!和放在我腦中的要點差不多,就貼在底下供參考:

    Shadowing 分為三種模式:

    • 完整跟讀 (Complete Shadowing): 跟著講者說的每一個字重複,可以大聲說出來或是在腦海中默念。
      • 這個方法適合在課堂練習或與朋友練習時使用。
      • 與母語人士對話時不建議使用,因為可能會讓對方感到厭煩。
    • 選擇性跟讀 (Selective Shadowing): 只重複關鍵字或詞組。
      • 這個方法比較像是積極聆聽,適合在與母語人士對話時使用。
    • 互動式跟讀 (Interactive Shadowing): 在選擇性跟讀的基礎上,加入簡短的評論或問題,例如「哇!」、「真的嗎?」、「為什麼?」等等。
      • 這個方法可以讓你更積極地參與對話,讓對方知道你理解的程度。
      • 技巧:可以用手指計數跟讀的內容,幫助記憶。
      • 勇敢打斷對方,控制對話的節奏,讓對方知道你理解的程度。
      • 利用語調變化讓對方知道你不理解的部分。
    Summarizing

    在 Shadowing 之後,試著用自己的話總結你聽到的內容。 
    • 優點:訓練短期記憶和語言產出能力。
    • 幫助你思考和整理資訊。
    • 讓對方有機會補充你遺漏的資訊。

    練習方法:

    1. 從完整跟讀開始練習,逐漸過渡到選擇性跟讀和互動式跟讀。 
    2. 練習時可以先從簡單的內容開始,例如日常生活對話。
    3. 可以利用各種資源練習,例如英語教學影片、電視劇、電影等等。
    4. 練習時要注意語速和語調,盡量模仿講者的發音和語氣。
    5. 持之以恆地練習,你會發現你的聽力和口說能力都會有所提升。

    無論是自學或是教學,這影片滿值得一看的。

    相關連結


    2024年11月23日 星期六

    以 OpenAI Whisper 轉語音備忘錄為字幕格式逐字稿

    2024年11月23日 星期六
    有老師問到,平常都用 iPhone 在錄音,也可以使用 OpenAI Whisper 來將錄音轉為逐字稿嗎?

    使用我建構在 Google Colab 中的 OpenAI Whisper (或 Faster Whisper) ,只要有網頁瀏覽器,基本上就可以使用。它們的聲音來源接受影音網站公開分享的網址,也可用電腦或是裝置中的影音檔案。所以手機使用 OpenAI Whisper 來將錄音轉為逐字稿的關鍵,是將錄音工具中的語音儲存為檔案。

    語音備忘錄儲存到檔案

    以 iOS 中內鍵的錄音工具「語音備忘錄」來說,錄好的語音怎麼變成可上載的檔案?

    • 開啟「語音備忘錄」
    • 在錄音清單中,按一下想儲存的錄音。
    • 按一下標題右側「三個點點」的圖示「更多動作」(或是「分享」的圖示)。
    • 點選「儲存到檔案」(看不到就向下找找)。
    • 指定想儲存到哪個地方及檔案名稱。
    • 按「儲存」。

    [圖1] iOS語音備忘錄儲存到檔案

    那可以將錄音儲存到雲端硬碟中嗎?

    當然沒問題,想儲存到哪個地方完全自己決定就好。

    有了語音檔案了,接下來,就跟在電腦上操作 Colab 裡的 OpenAI Whisper 類似步驟。

    OpenAI Whisper 轉語音備忘錄為逐字稿

    經過前面的程序,將轉語音備忘錄儲存為檔案以後,我們就可以開啟 OpenAI Whisper 了。有兩個選擇,可以使用 OpenAI Whisper,或是 Faster Whisper,如果尚未使用過,可以先在電腦上,參考底下兩篇舊文,裡面有操作示範的影片:

    如果想直接使用 Whisper ,就用底下的連結來開啟工具:

    小技巧:

    • 上載音檔:
      在手機上,因為是直拿的版面,先按畫面左上角的「三條線」圖示,再按「顯示檔案瀏覽器」。這樣就可以看到「虛擬機」的檔案及目錄了(有時可能要稍等一下,等虛擬機啟動連線,請參考 [圖2] [圖3] 或示範影片)。
    • 格式選擇:
      2024.11.21 以後,格式的選項中,新增了「.srt.txt」的項目。它會輸出帶有時間的字幕格式逐字稿,但是因為檔名結尾為「.srt.txt」,在手機或是平板中會被視為純文字檔案,就可以直接開啟來查看內容。(請參考 [圖4])
    • 自動鎖定:
      手機、平板有省電的機置,可能會因為「自動鎖定」進看省電模式而自動關閉螢幕,導致 Whisper 的程序被中斷;所以在行動裝置在使用 Whisper,iOS 可能要暫時在「設定」「螢幕顯示與亮度」中,將「自動鎖定」關閉。建議如果時間較長的錄音檔,將錄音錄儲存到雲端硬碟,再使用電腦來轉逐字稿較理想。
    在手機中上傳音檔的程序如 [圖2] 所示:
    [圖2] 在手機中上傳音檔

    上傳好音檔後,按一下檔名,再按一下右側的「三個點點」,出現選單就按「複製路徑」。
    [圖3] 複製音檔的路徑
    將音檔的路徑貼入 url 的欄位中,將格式設定為 .srt.txt ,其它選項則依需求自行設定,都設定完就按左上角的「播放」圖示來開始執行程序 [圖4]  :
    [圖4] 設定 & 執行

    完成後記得參考 [圖5] ,進行中斷連線並刪除程執行程序的動作:
    [圖5] 中斷連線並刪除程執行程序

    示範影片

    註: 影片有中文字幕並分章節。

    相關連結


     
    雄::gsyan © 2009. Design by Pocket