怎麼用
- 按「開始調音」,瀏覽器詢問時選「允許」麥克風。需要 HTTPS 網址才能使用麥克風。
- 選模式。想調吉他、烏克麗麗、小提琴或電貝斯,就選對應樂器,工具會找出離你彈的聲音最近的那一條弦,並告訴你跟那條弦差幾 cents;只想知道一個聲音的音名,就用「任何音」。
- 在安靜的地方一次彈一條弦,讓聲音自然延續。畫面中央的指針偏左代表音偏低,把弦調緊;偏右代表偏高,把弦放鬆;落在中間綠色區(±5 cents)就是準了。
- 聽不清楚想比對時,按弦的按鈕可播放參考音;標準音不是 440 Hz 的話,先把上方的 A4 改成對應數值。
各樂器的標準弦音
下表是 A4=440 Hz 時,各條空弦的頻率。你改了標準音,頁面上的按鈕與偵測會跟著換算。
| 樂器 | 空弦(頻率 Hz) | 說明 |
|---|---|---|
| 吉他(6 弦) | E2 82.41、A2 110.00、D3 146.83、G3 196.00、B3 246.94、E4 329.63 | 六弦到一弦:E A D G B E |
| 烏克麗麗(標準 GCEA) | G4 392.00、C4 261.63、E4 329.63、A4 440.00 | 四弦到一弦:G C E A,G 弦是高音(re-entrant) |
| 小提琴 | G3 196.00、D4 293.66、A4 440.00、E5 659.26 | 四弦到一弦:G D A E,每弦相差純五度 |
| 電貝斯(4 弦) | E1 41.20、A1 55.00、D2 73.42、G2 98.00 | 四弦到一弦:E A D G,是吉他低四條弦低一個八度 |
音高是怎麼算出來的
麥克風收到的聲音是一串很快的振幅數字(每秒幾萬個取樣)。聲音有明確音高時,波形會週期性地重複,週期越短,音越高,頻率=1 ÷ 週期。難處在於樂器的聲音除了基音,還有很多泛音,直接找最強的頻率常常會抓到泛音,變成高八度或高五度。
本工具用 YIN 演算法找週期:把聲音跟「延遲了一小段時間的自己」比較,找出延遲幾個取樣時兩段波形最相像,那個延遲就是週期;再對谷底附近的幾十個點做二次曲線擬合,把精度提高到取樣點之間(相鄰 3 點內插遇到噪音時,低音容易偏掉),最後換算成頻率。每次分析約 8192 個取樣(48 kHz 的話約 170 毫秒;低音的週期很長,視窗要夠大才算得準),並取最近 5 次結果的中位數,讓數字比較穩。
換算成音名與 cents 的公式:
- 與 A4 差的半音數=12 × log₂(偵測頻率 ÷ A4),其中 A4 預設 440 Hz。
- 最接近的半音=上式四捨五入;cents=(半音數-最接近半音)× 100。
- 每條空弦的標準頻率=A4 × 2^((midi 編號-69) ÷ 12),例如吉他一弦 E4 的 midi 編號是 64。
準確度與隱私實測
以下用 Chromium 自動化測試,程式與原始輸出放在專案的 _test/tuner/。
| 測試 | 做法 | 結果 |
|---|---|---|
| 偵測程式(合成音) | 產生 41.2、82.41、110、196、329.63、440、441.5、659.26、1000 Hz 的聲音,各用純正弦波(振幅 0.25)、含泛音(基音較弱)、含泛音加輕微雜訊(均勻雜訊 ±0.01)三種,在 44.1 與 48 kHz 取樣率下各測一次,共 54 組,直接餵給偵測程式 | 54 組全部偵測到;與真實頻率的最大誤差 1.22 cents(41.2 Hz),其餘頻率都在 0.51 cents 以內;82.41、110、196、440、441.5 Hz 的最大誤差分別為 0.50、0.38、0.26、0.08、0.21 cents;每次分析約 8 毫秒。這是雜訊很小的情況 |
| 偵測程式(低頻,較大雜訊) | 41.2、50、55、82.41、110、196、440 Hz,訊號峰值 0.1(約 −20 dBFS),加均勻雜訊 ±0.02(約為訊號峰值的 20%,訊噪比約 16 dB);純正弦與含泛音各 20 次不同雜訊,兩種取樣率 | 全部偵測到,最大誤差 1.74 cents。雜訊加大到 ±0.05 時:純正弦最大誤差 4.3 cents,含泛音的聲音(基音很弱)本次測試全部偵測不到,畫面不會顯示數字(我們測到的情況是寧可不顯示,沒有看到亂跳的數字);雜訊 ±0.1 時全部偵測不到。所以環境很吵時請靠近樂器,不要期待在嘈雜環境也能準確調音 |
| 端到端(假麥克風) | 用 Chromium 的假麥克風(--use-file-for-fake-audio-capture)播放含泛音的 WAV 檔,真的按「開始調音」走完整個麥克風流程,讀取畫面顯示的頻率 | 82.41 Hz 顯示 E2、110 Hz 顯示 A2、196 Hz 顯示 G3、440 Hz 顯示 A4;頻率誤差在 0.09 cents 以內。441.5 Hz 在 A4=440 時顯示 A4、+5.8 cents(理論值 +5.88) |
| 隱私:網路請求 | 開啟麥克風調音、播放參考音、連續偵測 5 秒,攔截頁面所有網路請求 | 沒有任何請求帶有音訊或偵測到的頻率。測試期間出現的對外請求只有 Google 廣告系統的檢查,以及匿名使用統計(只含頁面路徑與按鈕名稱,例如「tn-start」) |
這是在電腦合成的訊號上測的,真實樂器、麥克風與環境噪音都會有額外誤差,我們沒有在實體樂器上做過量測。
常見問題
麥克風的聲音會被錄下來或上傳嗎?
不會。聲音從麥克風進到瀏覽器後,只用來即時計算頻率,算完就丟掉,不錄音、不存檔,也不會傳到伺服器。我們用自動化測試實測過:開啟麥克風調音期間,攔截頁面發出的所有網路請求,除了載入頁面本身的檔案外,沒有任何請求帶出音訊資料(測試結果寫在下方「準確度與隱私實測」)。手機或電腦的麥克風指示燈在調音期間會亮,按「停止調音」或離開頁面就會關閉。
cents 是什麼?差幾 cents 算準?
cents(音分)是量測音高差距的單位:一個半音等於 100 cents,一個八度等於 1200 cents。兩個頻率 f1、f2 差幾 cents,算法是 1200 × log₂(f2 ÷ f1)。本工具把差距在 ±5 cents 以內顯示為「音準了」,這是我們自訂的門檻,不是國際標準;實際上多準算準,會因樂器、曲風與樂團要求而不同。
標準音 A4 為什麼是 440 Hz?為什麼可以調成 442?
現在最通行的標準音是 A4=440 Hz,國際標準化組織在 1955 年建議、1975 年確認為 ISO 16。實際演奏時,有些管弦樂團和獨奏家為了讓音色更明亮,會用 441 或 442 Hz,所以本工具讓你在 430 到 450 Hz 之間調整。如果你要跟鋼琴或樂團一起演奏,請用對方的標準音。巴洛克音樂常用的 415 Hz 等其他音高,超出這個範圍,本工具目前不支援。
為什麼偵測不到,或數字一直跳?
常見原因:環境太吵、麥克風離樂器太遠、同時彈了好幾條弦(和弦沒有單一音高)、或聲音太小。請在安靜的地方,一次只彈一條弦,讓聲音自然延續,麥克風靠近樂器。剛撥弦的前一瞬間泛音很雜,數字會先跳動一下,等聲音穩定後再看。電貝斯和低音域的聲音能量集中在很低的頻率,手機麥克風收得比較弱,偵測會比較不穩。
偵測有多準?
用電腦合成的標準音(含泛音)餵給偵測程式,在 82.41、110、196、440、441.5 Hz 等頻率的誤差都很小,細節數字寫在下方「準確度與隱私實測」。但真實樂器的音高本身會隨音量與撥弦力度微微變動,麥克風、房間噪音也會影響,所以實際使用時,小於 1 到 2 cents 的差距不必太在意。數字是在雜訊很小的合成音上測的,雜訊變大誤差也會變大(低頻、雜訊 ±0.02 時最大約 1.7 cents;雜訊更大時偵測會直接失敗),詳見下方實測。這個工具適合日常調弦,不能取代專業的校音設備。
烏克麗麗的 G 弦為什麼比 C 弦還高?
標準 GCEA 調弦(高音 G 弦調法)的四條弦由靠近臉的那條數起是 G4、C4、E4、A4,G 弦是「折返」調法:它比旁邊的 C 弦音還高,不是最低音。這是烏克麗麗最普遍的調法。有些人會把 G 弦換成低音 G(low G),那條弦的音高是 G3,本工具的烏克麗麗模式沒有提供。烏克麗麗模式一律把你彈的聲音對到最接近的那一條標準弦(G4、C4、E4、A4),所以低音 G 會被誤當成別的弦;想調低音 G 或其他特殊調弦,請切到「任何音(半音)」模式,直接看音名與 cents。
為什麼我聽不到低音的參考音?
手機和筆電的小喇叭,播不出很低的聲音。例如電貝斯空弦 E1 只有約 41 Hz,一般小喇叭很難發出。我們在參考音加了一些泛音,讓你比較容易聽出音高,但你聽到的主要是泛音,不是基音。用耳機、外接喇叭,或改用調音器看畫面上的數字,會準確得多。
需要網路嗎?麥克風為什麼要 HTTPS?
偵測本身在你的瀏覽器裡計算,不需要把聲音送出去,但頁面要先從網路載入。瀏覽器基於安全規定,只允許在 HTTPS(加密連線)網頁或本機開發環境使用麥克風,所以本站必須是 https:// 開頭才能調音。第一次使用時,瀏覽器會詢問是否允許麥克風,請按「允許」;若不小心按了拒絕,可以在網址列的鎖頭或設定圖示改回來。
規格與來源
- YIN 演算法:A. de Cheveigné, H. Kawahara, “YIN, a fundamental frequency estimator for speech and music,” Journal of the Acoustical Society of America 111(4), 1917–1930 (2002),DOI:10.1121/1.1458024。本站為自行實作,未使用該論文作者的程式碼。
- cents 與音律:Wikipedia〈Cent (music)〉:en.wikipedia.org/wiki/Cent_(music)。
- 標準音高:ISO 16:1975《Acoustics — Standard tuning frequency (Standard musical pitch)》,A4=440 Hz。
- 音名與八度記法(科學音高記號法,A4=440 Hz、中央 C=C4):Wikipedia〈Scientific pitch notation〉。
- 標準調弦:吉他 EADGBE(Guitar tunings)、烏克麗麗 GCEA(Ukulele)、小提琴 GDAE(Violin)、電貝斯 EADG(Bass guitar)。
- 麥克風存取:W3C Media Capture and Streams(w3.org/TR/mediacapture-streams);音訊分析:Web Audio API(w3.org/TR/webaudio)。
- 全部在瀏覽器內執行;工具本身不載入外部程式庫(全站的統計與廣告腳本除外)。偵測時關閉瀏覽器的回音消除、降噪與自動增益,避免音高被處理過。