怎麼用
- 有多個麥克風(內建、耳機、外接)時,先在「輸入裝置」選好要用的那一個。第一次使用要按「開始錄音」並在瀏覽器跳出詢問時選「允許」,之後裝置名稱才會顯示出來。
- 按「開始錄音」。畫面會顯示計時、音量條和波形,對著麥克風說話,音量條有跳動就是有收到。音量條上的細線是最近 1.5 秒的峰值,條變紅代表破音。
- 中途需要停頓,按「暫停」,暫停時不會錄進去,按「繼續」接著錄。
- 按「停止」,頁面會出現播放器和整段波形。可以回放確認,也可以拖動滑桿裁掉頭尾。
- 按「下載 WAV」或「下載 MP3」存檔。不滿意就按「刪除錄音,重新錄」。
WAV 與 MP3 的差別
| 格式 | 特色 | 檔案大小(每分鐘,單聲道) | 適合 |
|---|---|---|---|
| WAV | 未壓縮、16 位元,保留錄到的完整資料 | 約 5.5 MB(48 kHz)、約 5.1 MB(44.1 kHz) | 後製剪輯、保存原音 |
| MP3 | 有損壓縮,體積小、相容性高 | 64 kbps 約 0.5 MB;128 kbps 約 1 MB;192 kbps 約 1.4 MB | 分享、寄信、放手機、上傳平台 |
表中的大小是依取樣率與位元率算出來的估計值,實際檔案會有些微差異。
原理:錄音是怎麼做到的
瀏覽器用 getUserMedia 取得麥克風,再用 Web Audio 的 AudioWorklet(舊瀏覽器沒有就改用 ScriptProcessor)把麥克風每一小段聲音的數值取出來,轉成 16 位元整數後存在記憶體裡。因為存的是原始數值,不像用瀏覽器的錄影功能(MediaRecorder)會先壓縮成 Opus 或 AAC,所以 WAV 是真正沒壓縮的,裁切也能精準到毫秒。
MP3 則是在背景執行緒(Web Worker)用 lamejs 編碼,轉檔時畫面不會卡住。回放用的是記憶體裡生成的 WAV,網址是 blob: 開頭,只存在你的瀏覽器裡,不是網路請求。
錄出好聲音的小技巧
- 離麥克風約一個拳頭到一個手掌的距離:太近容易爆音和噴麥,太遠會收進更多環境聲。
- 音量條的峰值別碰到最右邊:碰到 0 dB 就是破音,錄下來就補不回來。講話時多半落在 −30 到 −12 dB 之間比較合適,這是常見的經驗做法,不是標準。
- 找安靜、有布料的空間:衣櫃、有窗簾和沙發的房間,回音比較少。
- 先試錄 5 秒再正式錄:回放確認有聲音、沒有雜音,再開始。
- 錄重要內容時邊錄邊存:分段錄、每段錄完先下載,避免整頁被意外關掉。
隱私實測
以下用 Chromium 自動化測試(假麥克風),程式與輸出放在專案的 _test/voice-recorder/。
| 測試 | 結果 |
|---|---|
| 開始錄音、暫停與繼續、停止、回放、裁切,再下載 WAV 與 MP3,期間攔截頁面所有網路請求 | 開始錄音後,頁面只多出兩個網路請求:下載 MP3 時載入本站自己主機上的 MP3 編碼器(lame.min.js)與背景處理檔,都是 GET,沒有任何 POST 或帶資料的請求,沒有請求帶有音訊。測試時把 Google 廣告與統計腳本擋掉了,正式頁面還會有這兩類請求,統計內容只有頁面路徑與按鈕名稱(例如「vr-start」「vr-wav」)。回放用的是瀏覽器記憶體中的 blob: 網址,不是網路請求。暫停繼續、裁切、還原、WAV 與 MP3 下載、刪除錄音都正常;下載的 WAV 檔頭與長度正確,MP3 檔頭為有效的 MPEG 音框 |
常見問題
錄的聲音會被上傳或存下來嗎?
不會。錄音是用瀏覽器的 Web Audio 直接取得麥克風的聲音,存成這個頁面記憶體裡的一段資料,沒有上傳到伺服器,也沒有存進瀏覽器的儲存空間。裁切、回放、轉成 WAV 或 MP3 也都在你的瀏覽器裡完成。你按「刪除錄音」、重新整理或關掉頁面,它就消失,所以要留的話請先下載。我們用自動化測試實測過:錄音、裁切、回放、下載 WAV 與 MP3 的整個過程中,攔截頁面所有網路請求,沒有任何請求帶出音訊(結果寫在下方「隱私實測」)。
該下載 WAV 還是 MP3?
WAV 是沒有壓縮的格式,音質等同錄到的原始資料,檔案大:單聲道約每分鐘 5.5 MB(以 48 kHz、16 位元計算)。MP3 是壓縮格式,檔案小很多(128 kbps 約每分鐘 1 MB),傳訊息、寄信、放手機都方便,但屬於有損壓縮,會損失一點細節。要後製、剪輯、保存原音選 WAV;要分享或節省空間選 MP3,講話錄音 96 到 128 kbps 通常夠用。
為什麼錄出來是單聲道?
手機、耳機與多數筆電的麥克風本來就是單聲道,而人聲錄音單聲道最適合;若瀏覽器給的是多聲道,工具會把它平均成單聲道。單聲道的檔案也只有立體聲的一半大。需要錄立體聲(例如音樂現場、環境音)的話,這個工具目前做不到。
可以裁掉開頭和結尾嗎?
可以。錄完後下方會出現整段錄音的波形,拖動「開始」與「結束」兩個滑桿,藍色區塊就是會保留的部分。按「預聽選取範圍」先聽,確定了再按「套用裁切」,之後下載的就是裁切後的內容。裁切只能保留一段連續的範圍(不能刪中間),套用後想反悔可以按「還原完整錄音」,在你刪除錄音之前,完整的原始錄音都還在。
最長能錄多久?
工具設定最長 30 分鐘,到了會自動停止並保留。錄音資料放在瀏覽器記憶體,以 48 kHz、16 位元單聲道算,每分鐘約 5.5 MB,30 分鐘約 165 MB(錄音的過程中,頁面也會即時顯示目前的大小)。要錄更長,請分段錄、每段錄完先下載。錄音期間請不要關掉頁面或讓手機螢幕休眠太久,部分手機瀏覽器在背景時會中斷麥克風。
按了沒聲音,或是出現「找不到麥克風」「被封鎖」怎麼辦?
頁面會依瀏覽器回報的原因顯示對應說明。最常見的有三種:一、拒絕授權,請按網址列左側的鎖頭或設定圖示,把麥克風改成「允許」並重新整理頁面,系統層也要允許瀏覽器使用麥克風;二、找不到裝置,確認麥克風或耳機有接好,再按「重新偵測裝置」;三、被其他程式占用,關掉視訊會議、通話、錄音或直播軟體再試。音量條完全不動時,也請檢查是否選到別的裝置、麥克風有沒有被靜音。完整的各系統設定步驟可以看本站的「麥克風測試」。
「降噪、回音消除、自動增益」要不要開?
預設是開的,這是瀏覽器對通話情境的處理,講話比較清楚、音量比較平均,一般講話錄音開著即可。如果你要錄樂器、唱歌,或想要原始、不被處理過的聲音,可以取消勾選「使用瀏覽器的降噪、回音消除與自動增益」,再開始錄音。這個選項只在開始錄音前能改。是否真的能關閉,也要看你的瀏覽器與裝置。
iPhone、Android 可以用嗎?
可以,只要用較新版本的瀏覽器(iPhone 用 Safari 最穩,Android 用 Chrome),網站是 HTTPS,並允許麥克風。LINE、Facebook、Instagram 等 App 內建的瀏覽器常常不開放麥克風,請改用「用瀏覽器開啟」。手機下載的檔案會放在瀏覽器的下載位置,iPhone 通常在「檔案」App 的「下載項目」。
規格與來源
- 麥克風存取與錯誤類型:MDN〈MediaDevices.getUserMedia()〉:developer.mozilla.org;W3C Media Capture and Streams:w3.org/TR/mediacapture-streams。
- 錄音與音量:W3C Web Audio API(AudioWorklet、AnalyserNode):w3.org/TR/webaudio。
- WAV 格式(RIFF、PCM、16 位元單聲道、44 位元組檔頭):McGill 大學:WAVE PCM soundfile format。
- 音量單位 dBFS(相對數位滿刻度的分貝):RMS 值換算 20×log₁₀(RMS),音量條範圍 −60 至 0 dB。
- lamejs 1.2.1,LGPL-3.0 授權,是 LAME MP3 編碼器的 JavaScript 版本,用來把聲音編成 MP3。檔案為 npm 官方套件原檔,未經修改(
lame.min.js,與本站「MP4 轉 MP3」共用同一份),在背景執行緒中載入。來源:github.com/zhuker/lamejs。LAME 專案網站:lame.sourceforge.net。授權全文:GNU LGPL-3.0(它引用的 GNU GPL-3.0 一併附上),以及套件附的使用說明 LICENSE。 - 全部在瀏覽器內執行;工具本身不載入外部程式庫(全站的統計與廣告腳本除外,MP3 轉檔用的 lamejs 是本站自己主機上的檔案)。