# BPM & Key Finder

> 把一堆 MP3、WAV 丟進來，每首歌列出 BPM（到 0.1）、調性、Camelot 與 Open Key 代碼、可信度和第二候選的調。可以用拍的修正，匯出 CSV，檔案全程不上傳。

- URL: https://bytescope.dev/zh-Hant/bpm-key-finder/
- Locale: zh-Hant · Also: [en](https://bytescope.dev/en/bpm-key-finder.md) · [ja](https://bytescope.dev/ja/bpm-key-finder.md)
- Runs: 檔案不會離開你的瀏覽器 — 全部在本機處理。
- Requires: Any modern browser (Chrome, Edge, Firefox, Safari), desktop and mobile.
- Updated: 2026-09-08

## What it does

要排歌單的 DJ 想知道每首歌的速度和 Camelot 代碼；歌手或翻唱樂團想先知道原曲是什麼調，再決定要移到哪裡；在編跑步歌單的人想找穩穩維持 170 BPM 的歌。這一頁一次回答這些問題，而且可以一次處理很多檔案。把 MP3、M4A、WAV、OGG 或 FLAC 丟進來——一次丟很多首也行——表格就會一列列填上檔名、長度、精確到 0.1 的 BPM、可信度、調性（例如 A minor）、它的 Camelot 代碼（8A）和 Open Key 代碼（1m），以及第二候選的調。檔案在瀏覽器裡的 Web Worker 一首一首分析，沒有任何一首會上傳，所以第一個結果在第一個檔案解碼完就出現，不用等傳輸。

### 速度是怎麼算出來的

預設分析每首歌中間的 60 秒，跳過常常沒有節拍或節拍不清楚的前奏和尾奏；你也可以切換成分析整首。音訊先轉成頻譜通量的起音包絡——聲音裡每出現新東西就冒出一個尖峰的曲線——再對這條包絡做自相關，看起音之間哪個間距重複得最強。候選有好幾個時，用一個偏好 120 BPM 附近的先驗來拍板，最後再做一次精細搜尋，把數值在 60–200 BPM 的範圍內定到 0.1 BPM。半拍和倍拍是真的分不出來——174 BPM 的 drum and bass，在 87 也有一個實實在在的脈動——所以兩種讀法都很強的時候，表格會同時列出兩個數字（87 / 174），而不是假裝只有一個答案。

### 調性是怎麼判斷的

分析的那一段會縮成 12 格的 chroma：十二個音級各自分到多少能量，再對時間取平均。這個輪廓拿去跟 Krumhansl–Kessler（1982）的 24 組調性輪廓——大調、小調各 12 個——做相關，相關最高的就是顯示的調。第二高的也會顯示，因為最常見的混淆就是關係大小調：C major 和 A minor 用的是同樣七個音，光靠 chroma 平均常常分不出來。如果第二候選是關係調、分數又跟第一名很接近，先聽聽歌曲最後停在哪個音，再決定要信哪一個。Camelot 代碼依照 Mixed In Key 的慣例：數字相鄰、或同一個數字的 A 和 B，混在一起和聲上是順的；Open Key 是其他軟體用的同一套東西的另一種寫法。

### 手動修正速度

偵測結果不對的時候，跟著音樂按下 tap 按鈕或空白鍵至少四下，最近八下的平均就會取代那一列的 BPM。要解決半拍／倍拍的讀法，或是幫節拍很輕的歌定速度，這是最快的方法。表格看起來都對了，就匯出成 CSV 給試算表用，或複製成 JSON——兩種都包含檔名、長度、BPM、可信度、調性、Camelot 與 Open Key 代碼和第二候選的調。

### 哪些情況數字不可靠

偵測器假設一首歌只有一個速度、一個調。中途變速的歌、越彈越快的現場錄音、彈性速度的古典樂，都只會得到一個平均值和偏低的可信度，而那個低的可信度就是在提醒你自己聽一遍。調式音樂、無調性音樂、轉調很多的音樂跟 24 組大小調輪廓都對不太上；中間轉調的歌整首只會給一個調，目前沒有做轉調追蹤。可信度那一欄請照字面理解：高，代表節拍和調中心都很清楚；低，代表這首歌本來就沒有一個清楚的答案可以給。

## Limits

Does not upload songs, separate vocals or follow tempo or key changes within a song; it reports one average tempo and one key per track.

## FAQ

### 我的歌會被上傳嗎？

不會。每個檔案都由瀏覽器裡的 Web Worker 解碼、分析，什麼都不會送到伺服器，這一頁也沒有伺服器。所以不用等傳輸——一次丟進來的歌就在你自己的機器上一首接一首算完。檔案和結果都不會被記錄下來。

### BPM 剛好是我預期的一半或兩倍，為什麼？

因為兩個都是真的。起音偵測找的是重複出現的脈動，而 87 BPM 的脈動在 174 一樣重複得很好；聽的人會把哪一個叫做速度，要看曲風和律動，演算法沒辦法知道。非選不可的時候，這一頁會偏好 120 BPM 附近的值；兩種讀法強度接近時就兩個數字都列出來。如果你要的那個沒出現，自己拍速度——按鈕或空白鍵拍四下以上，那一列的值就會被取代。

### 它說是 C major，但這首歌明明是 A minor，是錯了嗎？

不一定，而這正是為什麼要顯示第二候選。C major 和 A minor 共用同樣七個音，所以一分鐘平均下來的 chroma 輪廓兩者看起來幾乎一樣；Krumhansl–Kessler 的輪廓對主音和五度加了權重，大多數情況分得開，但不是每次。第二候選是關係大調或小調、分數又很接近時，去聽樂句結尾落在哪個音。對 DJ 混音來說其實差別不大：8B 和 8A 在 Camelot 輪上是相鄰的，本來就能混在一起。

### Camelot 和 Open Key 代碼是什麼意思？

同一個概念的兩種寫法——把 24 個調排在一個輪子上，讓合得來的調彼此相鄰。Mixed In Key 推廣的 Camelot 系統把調編成 1 到 12 號，小調是 A、大調是 B；號碼差一、或同號的 A 和 B，共用大部分的音，混在一起不會打架。Open Key 是 Traktor 等軟體用的，一樣是 1 到 12，小調標 m、大調標 d，輪子的轉法不同。A minor 在 Camelot 是 8A，在 Open Key 是 1m。

### 為什麼只分析中間的 60 秒？

因為前奏和尾奏最容易誤導：沒有節拍的前奏、淡出、現場錄音的掌聲、講話的尾奏，都會削弱起音的規律和 chroma，卻不能代表這首歌。中間那一分鐘通常是副歌或主要的律動。歌短於一兩分鐘、懷疑中途變速、或中段剛好是 breakdown 的時候，再切換成整首分析。

### 可信度的數字代表什麼？

代表這首歌給出單一答案的清楚程度。數值高，表示節拍和調中心都很明顯；數值低，表示節拍很輕或在飄、中途變速，或是調性跟 24 組大小調輪廓對不上——古典、彈性速度、調式、無調性的音樂常落在這裡。它衡量的不是歌好不好，而是偵測器有多確定；數值低就是在提醒你自己聽一遍。

### 中途變速或轉調的歌跟得上嗎？

還不行。這一頁每首歌只給一個速度、一個調。變化的速度會被平均，轉調的歌會拿到分析區段裡佔上風的那個調中心，兩種情況的可信度都會比較低。已知會轉調的歌，用整首分析看看整體是哪個調勝出，然後把第二候選當成「另一段」的提示，不要當成錯誤。

## Related tools

- [Extract Audio from Video](https://bytescope.dev/zh-Hant/extract-audio.md) — 把影片裡的音軌抽出來 →
