lyrics-everywhere

耳邊字幕(Lyrics Everywhere)

Chrome/Edge 側欄空耳跟唱工具:單曲使用 LRCLIB 同步歌詞,自動比對失敗時可自己指定歌曲(LRCLIB 搜尋連結,或把提示詞貼到自己的 AI 再貼回結果)。YouTube 合輯可在本機建立文字字幕後二刷跟唱;音訊辨識使用裝置上的 WebGPU Whisper。沒有 localhost companion、CLI、雲端音訊辨識、內建共用金鑰或共用字幕服務。

功能

隱私與限制

安裝與使用

  1. 安裝依賴並建置 extension:

    pnpm install
    pnpm run lint:extension
    pnpm run build:extension
    
  2. 在 Chrome 開啟 chrome://extensions,或在 Edge 開啟 edge://extensions,啟用開發人員模式並載入本專案的 browser-extension/ 目錄。 每次重新建置後,在擴充功能管理頁按「重新載入」,關閉再重開側欄即可;既有 YouTube 播放頁不必刷新。載入目錄仍是 browser-extension/,不是 extension-ui/ 或 browser-extension/app/。
  3. 在 YouTube、YouTube Music 或 Spotify Web 播放歌曲,點擊 extension 圖示開啟側欄。
  4. 側欄自動取得目前歌曲並比對同步歌詞;必要時可按小型「重新偵測」按鈕。展開「播放來源與說明」,在「播放分頁」選擇要固定的分頁;選「跟隨目前作用中的分頁」則恢復自動跟隨。「更新」可重列已開啟的播放分頁。這個來源選擇不寫入顯示偏好。該區也顯示平台、歌手、播放狀態及 LRCLIB 選版資訊。YouTube 沒有可信歌手時仍回報影片標題,但不猜測歌詞;沒有播放器、廣告中、網站權限不足或報告驗證失敗時會直接顯示來源診斷。 手動指定:自動比對找不到或找錯時,展開「手動指定歌詞」。按「到 LRCLIB 搜尋」會以影片標題的關鍵字開啟 lrclib.net 搜尋頁,挑好歌後把 https://lrclib.net/tracks/<編號> 連結貼回並按「套用」;或按「複製 AI 提示詞」貼到你自己的 AI,把它回覆的「歌名:…/歌手:…」兩行貼回,側欄會向 LRCLIB 驗證並選版。指定結果依 YouTube 影片 ID 記住,下次開同一支影片會優先套用;按「清除這支影片的指定」改回自動比對。
  5. 若 YouTube 影片沒有可用同步歌詞,才會出現本機字幕選項:
    1. 在要擷取的 YouTube 分頁點擴充功能圖示,取得該分頁授權;若已指定另一個來源,先改選正確分頁。
    2. 按「載入辨識模型」,等待模型就緒。
    3. 把影片停在 0 秒、暫停、1×;準備提示會指出缺少哪個條件。
    4. 按「建立字幕」,先保持暫停;看到狀態「音訊已連接」後才按影片播放,不是先播放再建立。
    5. 首段至少需要 12 秒實際音訊+本機辨識時間。依收音秒數及窗口進度判斷是否正常,不會立刻出字;靜音或沒有辨識結果會明確提示。
    6. 持續播放至結束,不暫停、seek、變速或換片;可以切換其他前景分頁,字幕仍跟隨鎖定來源。完成後字幕保留,可從頭重播;已有完整字幕時也可按「重播字幕」,不需載入模型。要更換來源,先按「停止」。
  6. 展開「顯示設定」選擇空耳系統與原文保留語言;選項載入本機偏好前會暫時停用。若瀏覽器無法讀寫 extension storage,仍可變更當頁顯示,但會在收折區外提示偏好無法儲存。

開發驗證

pnpm test
pnpm run lint:extension
pnpm run build:extension

來源主要分層:browser-extension/ 負責播放報告驗證、側欄訊息轉送與 tabCapture 權限閘門;extension-ui/src/ 是側欄、LRCLIB、合輯 ASR 與文字快取原始碼,建置至 browser-extension/app/。youtube-music-credit.ts 負責從頁面資料中挑選單一音樂區塊曲目資訊;manual-lyrics.ts 負責手動指定的輸入解析、AI 提示詞與本機記憶格式;src/pronunciation/ 提供韓文與日文轉寫器。舊 Node/companion 的根目錄 dist/ 不再使用,也不會由 extension 建置產生。

上架打包

執行以下指令建置並打包商店發行檔:

pnpm run package:extension

打包完成後會產生 release/lyrics-everywhere-extension.zip,其根目錄即為包含 manifest.json 的擴充功能封裝檔,可直接上傳至 Chrome Web Store 或 Edge Add-ons。相關上架文字與商店權限聲明請參閱 docs/chrome-web-store.md。