跳至主要內容
全球國際徵信顧問
案件指揮艙全部本機工具
V237 / GUIDE

錄音轉文字操作指南

這一頁說明錄音轉文字能做什麼、不做什麼、各項規則怎麼訂的、樣本很少的實測結果有哪些限制,以及你可以怎麼自己驗證。錄音在你的瀏覽器內處理,沒有上傳。

READ FIRST

先說清楚這不是什麼

這是語音辨識的草稿,不是鑑定逐字稿,不是法律文件,也不判斷錄音真偽、有沒有被剪接、誰在說話或說話的人是否誠實。本工具不承諾辨識正確;正式使用前,請逐段聽原始錄音核對。
LOCAL SPEECH-TO-TEXT

錄音轉文字

把通話錄音、訪談或 LINE 語音轉成帶起訖時間的文字草稿,逐段播放核對與修改,再匯出 TXT、SRT、VTT、CSV、JSON,或送到線索推理艙。

做什麼
  • 一次一個動作:選錄音檔、載入語音模型、開始辨識、核對與修改、匯出。單檔上限 200 MiB、60 分鐘。
  • WAV 由本頁自己的程式分塊讀取(最省記憶體);MP3、M4A、Ogg、Opus、FLAC 等交給瀏覽器內建解碼器整段解碼,錄音越長越吃記憶體,能不能解要看你的瀏覽器。已知 Chrome 類瀏覽器在部分環境不能解 M4A/AAC;遇到時頁面會說明,請改用 WAV 或 MP3。
  • 每一段有起訖時間,可以按「播放這段」邊聽邊核對;可逐段修改文字、與下一段合併、在游標處分段、排除不要的段落。
  • 計算檔案的 SHA-256 供你記錄「這份草稿是依哪個檔案產生的」。
不做什麼
  • 不上傳錄音,不連到其他網站;不使用 localStorage、IndexedDB、Cookie 或快取儲存你的錄音與文字。關閉或重新整理分頁後,結果就沒有了,請先下載或複製。
  • 不加標點、不分辨說話者、不判斷情緒或真偽、不一定完整:沒被切到的聲音(過小聲、被雜音蓋住)不會出現在結果裡。
  • 不修改你的原始錄音檔。
規則細節(這些規則是怎麼訂的)
  • 切段:先用 Silero VAD 找出「有人聲」的區間,再對每一段區間前後留一點餘裕、單段最長切到 15 秒(太長的區間在音量最低處附近切開)。切段不是依句子,所以一段可能是半句或兩句。
  • 兩種切段預設:「一般」適合安靜、音量穩定的錄音;「雜訊多」把偵測門檻放得更低、需要更長的靜音才切開,適合有明顯背景雜音或電話收音。「自動判斷」只是依整段錄音「講話與背景的音量落差」做的粗略規則:以 30 毫秒為一格算音量,取高段與低段的差距,低於 22 dB 就選「雜訊多」,否則選「一般」。這個門檻只用我們自己合成的少量測試音檔調過,沒有在大量真實錄音上驗證;它判斷錯時,請自己改選另一種再辨識一次(不需要重新載入模型)。
  • 送進偵測前的音量調整:切段偵測用的是調整過音量的副本(取第 99.5 百分位調到約 0.9,最多放大 12 倍),辨識用的是原音量;你的原始檔不會被改動。
  • 取樣率:辨識需要 16 kHz 單聲道。多聲道取各聲道平均;不是 16 kHz 的檔案,由瀏覽器解碼器或本頁的重新取樣程式轉換。電話錄音(8 kHz)能辨識,但高頻資訊本來就沒有,效果通常比較差。
  • 重新辨識:已經手動修改過的段落,重新辨識會被取代,所以按鈕會要你再按一次確認;要保留請先下載或複製。
選配包怎麼安裝(給不熟技術的人)
  1. 向網站管理者取得「語音轉文字選配包」的壓縮檔(可能分成好幾個,檔名帶有編號)。
  2. 把全部壓縮檔解壓縮到「網站資料夾」,讓資料夾裡出現 v237-packs/asr/pack.json,以及 engine、model、vad、LICENSES 幾個子資料夾。分成多個壓縮檔時,每一個都要解壓縮到同一個位置,檔案才會湊齊。
  3. 回到錄音轉文字頁,選一個錄音檔。頁面會自動檢查選配包是否齊全;不齊時會列出缺哪些檔案。
  4. 按「載入語音模型」。首次載入要讀取約 65 MiB,並逐檔核對 SHA-256;核對不符就不會啟用。

如果你是從別人給的 zip 檔安裝,只放一部分檔案、解壓縮到錯的資料夾或上傳中斷,都會被檢查擋下並說明原因。

如何自行驗證
  • 抽樣聽核:從你的錄音中隨機選幾個片段(開頭、中間、結尾各一段),一邊聽一邊對照草稿,自己計數錯幾個字。樣本是你自己的錄音,才有代表你的情境。
  • 算字錯誤率(CER):把你人工聽打的正確文字存成 truth.txt,把草稿(下載 TXT 後去掉時間與聲明,或複製段落)存成 asr.txt,執行下面的 Python:
import re, unicodedata
def strip(s): return re.sub(r"\s+", "", unicodedata.normalize("NFC", s))
def edit(a, b):
    prev = list(range(len(b) + 1))
    for i, x in enumerate(a, 1):
        cur = [i]
        for j, y in enumerate(b, 1):
            cur.append(min(prev[j] + 1, cur[j - 1] + 1, prev[j - 1] + (x != y)))
        prev = cur
    return prev[-1]
truth = strip(open("truth.txt", encoding="utf-8").read())
asr = strip(open("asr.txt", encoding="utf-8").read())
print("CER = %.3f" % (edit(truth, asr) / max(1, len(truth))))
  • 算之前,兩邊要用同一種字(簡體或繁體)、同樣處理標點與數字寫法(例如「3」與「三」),否則會把寫法差異算成錯字。
  • 確認沒有外送:用瀏覽器開發者工具的「網路」分頁,載入並辨識一次,應該只有本站網域的請求(頁面、程式、選配包的檔案),沒有其他網域,也沒有上傳。
  • 核對選配包檔案:用 sha256sum 對 v237-packs/asr/ 底下的檔案計算,與 pack.json 內的值比對;README.txt 與 LICENSES 說明各檔來源與授權。
SMALL SAMPLE

模型怎麼選的(少量公開範例錄音,非代表性樣本)

下面的數字來自極少量的公開範例錄音,不是代表性樣本,不能推論到你的錄音。它是我們選模型時的內部比較,不是對辨識結果好壞的承諾。

候選有三個小型中文模型。比較用了模型發布頁附的 3 段國語範例錄音(共 72 個字),每段做成 4 種版本:原音、降到 8 kHz 的電話音質、加白雜訊(約 10 dB 訊雜比,3 種亂數)、加粉紅雜訊(同上,3 種亂數),共 24 個音檔。

字錯誤率(CER,越低越好):括號內為「錯字數/參考字數」
模型原音8 kHz 電話音質加雜訊(合計)全部合計速度(處理時間/錄音長度,中位數)
A zipformer-ctc-small-zh(int8) 本頁採用0.0%(0/72)0.0%(0/72)0.6%(3/504)0.5%(3/576)0.087
B streaming-zipformer-small-ctc-zh(int8)0.0%(0/72)1.4%(1/72)7.7%(39/504)6.8%(39/576)0.096
C paraformer-zh-small4.2%(3/72)5.6%(4/72)9.1%(46/504)8.5%(49/576)0.059
PERFORMANCE / LIMITS

速度、記憶體與已知限制

常見誤解

建議的使用流程

  1. 保留原始錄音,不要修改它;記下檔案的 SHA-256。
  2. 選檔後看頁面顯示的長度、取樣率與警告;很長的檔案先確認裝置記憶體夠。
  3. 載入語音模型,用「自動判斷」開始;結果不理想時,改選另一種切段方式再辨識一次。
  4. 逐段播放核對,修改文字;數字、人名、地名與金額一定要聽原始錄音。
  5. 匯出時選你要的格式;草稿聲明會跟著輸出,請不要刪掉。
  6. 要交給他人時,連同原始錄音一起提供,並說明這份文字是機器產生的草稿。