實際走一遍
一個瀏覽器標籤頁裡的三個音訊工具
人聲分離、降噪、文字轉語音,全都跑在你自己的機器上,什麼都不上傳。下面是完整過程、每個工具啟動前必須下載的東西,以及怎麼在十秒左右自己驗證「不上傳」這句話。
完整過程
影片把三個工具從頭到尾跑了一遍:一首歌拆成阿卡貝拉和伴奏,一段人聲錄音把聲音背後的房間抽掉,還有一行打出來的文字被讀出來。一次跑完,一臺機器 — 而這正是重點,因為那臺機器是你的,不是我們的。
錄屏證明不了的那部分
一段工具能用的影片,只說明工具能用。它沒法告訴你檔案去了哪裡,而那恰恰是唯一值得懷疑的那句話 — 每個免費音訊網站都會說些關於隱私的安慰話,而其中大多數仍然先把你的錄音放到伺服器上。
這一條你可以從自己這邊驗證,不必聽任何人的保證:
- 開啟三個工具中的任意一個,按
F12(⌥⌘I(Mac 上),然後選 網路 面板。 - 勾上 禁用快取,這樣模型下載會出現在列表裡,而不是直接從磁碟讀走。
- 把檔案拖進去,讓它跑完。
- 看那份列表。每一條請求都會是
GET,而且每一條要的都是這個站點上的模型或指令碼。
你要看的是「缺了什麼」:沒有 POST,沒有任何把你的音訊放在請求體裡的請求,完全沒有上傳進度。流量是單向的。是模型被取到你檔案所在的地方,而不是你的檔案被送到模型所在的地方——這個先後順序就是全部的架構差別 — 它不是一條下個季度可能悄悄改掉的留存政策。
模型快取好之後把網線拔了,工具照樣能用。這是同一個事實,從另一頭看過去。
這要你付出什麼
在本地跑模型不是免費的 — 只是計費方式不同。你付出的不是我們的伺服器時間,而是首次訪問的一次下載,加上處理過程中你自己的處理器:
| 工具 | 首次訪問下載量 | 上限 |
|---|---|---|
| 人聲分離 | 約 52 MB — 12 MB 的執行時,加上兩個 20 MB 的模型檔案,每條音軌一個 | 5 分鐘,300 MB |
| 降噪 | 約 16 MB | 5 分鐘,300 MB |
| 文字轉語音 | 傳輸量約 64 MB | 每次生成 500 字元 |
每個工具只下載一次,之後由瀏覽器快取,所以第二次訪問立刻就能開始,也不需要聯網。長度上限和下載是同一個原因:一段 5 分鐘的立體聲音訊展開成浮點數之後,已經是單個瀏覽器標籤頁裡很大的一塊東西,而整首歌會直接終結這個會話,而不是排在付費牆後面等著。先用任意編輯器把你要的那段切出來,再送進去。
把文字轉語音的模型弄上靜態託管,最後成了這個專案裡更難的那一半。那段經歷 — 每檔案 25 MiB 的牆、跨源隔離,以及一個你問它壓縮情況時會給出與事實相反答案的託管平臺 — 另寫了一篇.
上面那些首次訪問的數字是實打實的兆位元組,用移動資料的手機會有感覺。降噪是輕的那個,約 16 MB。文字轉語音那個,留到連上 Wi-Fi 再說。
把一首歌拆成兩條音軌
人聲分離接收一段混音,返回兩個檔案:單獨取出的人聲,和剩下的伴奏。它靠的是識別而不是相減,而這個區別決定了它在你的曲子上能不能行。
大家熟悉的那個免費方法 — Audacity 內建的那個 — 是相位抵消。它把左右聲道共有的部分減掉,前提假設是主唱在正中間。有時候確實是。但底鼓、貝斯和軍鼓通常也在正中間,而且貝斯在大約 120 Hz 以下常常是有意合成單聲道的,於是它們一起被帶走。單聲道檔案根本沒有可相減的物件;人聲浸在立體聲混響裡時,混響活了下來而乾聲消失了,聽起來比不處理還糟。我們寫過 在 Audacity 裡怎麼做,以及什麼時候行不通,還附了一個用你自己檔案做的 30 秒測試。
分離模型學過歌唱的人聲在時間和頻率上長什麼樣,所以它是把每一部分重建出來,而不是拿一個去抵消另一個。這就是它能應付單聲道錄音、偏離中心的人聲和重混響的原因,也是伴奏能保住低頻的原因。它做不到的是憑空造出混音裡本來就沒有的細節:當人聲和吉他在同一瞬間佔據同一條窄頻帶時,總得把它判給其中之一,而這個判斷,就是分離偽影的來源。
把房間從錄音裡拿掉
降噪是給語音用的,不是給音樂用的。它按短幀看錄音,對每個頻帶估計有多少是人聲、多少是房間,再據此給每個頻帶施加增益。穩定、重複的噪聲 — 風扇嗡鳴、空調、電源交流聲、麥克風嘶聲 — 是這類模型讀得最可靠的,因為它的模式是靜止的,而語音一直在動。
值得理解的那個控制元件是 微調,它設定的是以分貝為單位的衰減上限:模型最多被允許去掉多少。它之所以存在,是因為降噪的壞結果不是殘留的嘶聲,而是一個被嚼成水糊糊、金屬味的聲音。給削減量設上限,聲音保住了,噪聲留下一點——對任何需要一個人連聽半小時的素材來說,這通常是更划算的取捨。
有一段 9 秒的室內錄音放在 降噪頁面 上,播放過程中可以在處理前和處理後之間來回切。在句與句之間 — 9 秒裡有 27 處間隙,那正是噪聲最容易聽出來的地方 — 底噪下降約 17 dB。而語音本身回來時,比進去時只低了 0.5 dB。第二個數字才是你在任何降噪工具上都該核對的,包括這一個:把整段錄音調小,底噪看上去總會更好,但 0.5 dB 不是靠調小換來的。
它治不了的是混響。回聲是人聲的副本,而不是坐在人聲背後的東西,所以模型沒有可分離的物件。那個問題靠把麥克風挪近解決,不是事後解決。
把打出來的文字讀出來
第三個工具方向相反:進去的是文字,出來的是音訊。有 19 個音色,分屬 14 個口音族,每次生成上限 500 字元 — 大約 80 個詞,或者約 30 秒的語音。那是一句旁白或一條字幕,也正是多數人真正需要的形態;而且一行一行改稿子,比重新剪一個長檔案容易。
它也能從一小段樣本里克隆音色,而這段樣本遵守和這裡其他一切相同的規則:在標籤頁裡讀取,不發往任何地方。找個安靜的地方錄。克隆會連同音色一起復現房間和說話方式,所以背景裡有風扇的樣本,做出來的聲音裡就帶著風扇。
哪些情況下瀏覽器是錯的地方
- 一整張專輯。 一次 5 分鐘覆蓋得了大多數單曲,但四十首仍然是四十次。批次工作該交給一臺你可以放著跑的機器。
- 四條或更多音軌。 分離器把人聲和其餘一切分開。要把鼓、貝斯和別的聲部單獨分出來,需要另一種模型,以及超出一個標籤頁該承擔的算力。
- API。 從構造上就沒有可呼叫的端點 — 因為根本沒有伺服器在幹活。
- 手機上按流量計費的連線。 首次下載是實打實的,而文字轉語音是重的那個。
- 精細的韻律控制。 沒有 SSML,沒有音素編輯器,也不能逐詞調音高。你靠改寫文字來控制朗讀。
常見問題
這些音訊工具會上傳我的檔案嗎?
不會。每個工具都是把模型下載到瀏覽器標籤頁裡、在那裡執行,所以音訊留在你自己的機器上。這句話你不必照單全收:處理任何東西之前開啟瀏覽器的網路面板,看看會發生什麼。所有請求都是從 audiofilter.net 下載 — 沒有任何一條上傳帶著你的檔案。
首次下載有多大,每次都要下嗎?
人聲分離約 52 MB,降噪 16 MB,文字轉語音 64 MB。每個工具只發生一次:瀏覽器會快取模型,所以之後的訪問立刻開始,斷網也能用。
音訊工具為什麼有 5 分鐘的限制?
因為分離和清理跑在你自己的處理器上、跑在單個瀏覽器標籤頁的記憶體裡。整首歌會把這個標籤頁耗盡,而不是排在付費牆後面等著。用任意編輯器把你需要的那段切出來處理就行。
用它們需要裝什麼東西嗎?
不需要。沒有外掛、沒有擴充套件、沒有帳號。較新版本的 Chrome、Edge、Firefox 或 Safari 都能跑人聲分離和降噪。文字轉語音對瀏覽器要求更高,並不是每個移動端 WebView 都能跑。
錄下來的訪談該用哪個工具?
降噪。人聲分離是為音樂做的 — 它把混音拆成阿卡貝拉和伴奏,那不是一段口述錄音需要的東西。對付人聲背後的風扇嗡鳴、空調或街道噪聲,降噪才是對的那個。
開啟你要找的那一個:
人聲分離 → 降噪 → 文字轉語音 →