Potato 能把 Whisper、WhisperX、字幕、TextGrid 和 ELAN 轉寫文本連同錄音一起載入,讓標註者對照波形修正文字和說話人話輪;Potato 也能執行 MUSHRA 和 P.808 式 MOS 等標準聽音測試。Potato 免費開源,執行在你自己的電腦或伺服器上,還能在標註開始前於本地完成錄音的轉寫和說話人分離。
如今大多數語音項目都從自動轉寫文本起步,標註工作就是修正轉寫:改正文字、拆分與合併話輪、指定說話人。Potato 按原樣讀取轉寫文本,不需要轉換指令碼。從 2.9 版起,Potato 也能在你自己的機器上生成轉寫文本。potato transcripts --transcribe --diarize 用 faster-whisper 轉寫、用 sherpa-onnx 做說話人分離,不需要 PyTorch,也不需要 Hugging Face 令牌,錄音始終不離開本機。
Potato 中的語音與音訊任務
每一行是 Potato 自帶的一種標註類型或工作流,連結頁面給出了它的配置。
| 任務 | Potato 的做法 | 文件 |
|---|---|---|
| 修正 ASR 轉寫 | 話輪以說話人氣泡顯示並與音訊同步,每條都可編輯,來源可以是 Whisper JSON、SRT、VTT 等格式 | 標註 Whisper 轉寫文本 |
| 說話人分離 | 在波形上繪製片段並按說話人標註,或由標註者修正已自動分離話輪的說話人 | 音訊片段 |
| 聲音事件與標記 | 帶標籤的時間片段,或用單選和多選給整段音訊打標籤 | 音訊標註指南 |
| 聽音測試 | listening_test 方案,支援 MUSHRA、BS.1116、ACR、DCR、CCR、P.835 和 ABX,刺激材料盲化並含隱藏參考 | 聽音測試 |
| 情緒與副語言 | 對每段音訊或每個片段給出類別標籤,或李克特量表和滑塊評分 | 音訊標註指南 |
| 頻譜圖框 | 用時頻框標出鳴叫、音符或其他事件 | 頻譜圖標註 |
| 語音層級 | 匯入 TextGrid 和 ELAN 層級供修正,再匯出回去 | 轉寫格式 |
在你自己的機器上轉寫和分離說話人
下面的命令把一個錄音資料夾變成一份資料檔案,裡面是已分離說話人、帶時間戳的轉寫文本,供標註者修正。如果知道每段錄音裡有幾個人說話,就傳入 --num-speakers。
pip install 'potato-annotation[transcribe]'
potato transcripts ./interviews --transcribe --diarize --num-speakers 2 -o data/interviews.json模型權重在首次使用時下載,所以第一次執行需要聯網。系統會先做語音活動檢測,因此 Whisper 不會在靜音處編造文字。同樣的檢測也可能在沒有任何提示的情況下丟掉輕聲或耳語。如果一段你確定有語音的錄音返回的結果偏短,用 --asr-no-vad 重新執行。轉寫格式介紹瞭如何為離線機器預先準備模型。
聽音測試
Potato 不附帶測試材料,刺激材料由你提供。listening_test 方案對每個條目執行一項標準主觀測試,樣本經過盲化、順序隨機,匯出時每個評分都能對應回它的條件。listening_test 匯出會寫出每個條件的 MOS 和 MUSHRA 均值及 95% 區間、ABX 結果,並應用 ITU-R BS.1534-3 事後篩選規則。測試前可以把耳機檢查作為一個執行時階段來執行。如果聽者來自眾包,Potato 以 Prolific 作為招募平臺,詳見眾包整合。
與 ELAN、Praat 和 Label Studio 的分工
ELAN 面向單人完成的精細多層時間對齊標註,Praat 面向語音學分析。Potato 能匯入和匯出這兩種格式,團隊可以在瀏覽器裡修正層級,再繼續用 Praat 或 ELAN 分析。Label Studio 提供轉寫和說話人切分的模板。Potato 額外提供的是本地轉寫和說話人分離、帶篩選規則的標準聽音測試方法,以及研究所需的功能,例如每個條目分配多名標註者、時間片段上的一致性和注意力檢查。音訊標註工具對比逐項比較了這些差異。
常見問題
如何修正 Whisper 轉寫文本,而不是從頭轉寫?
保留 Whisper 帶片段時間戳的 .json 輸出,對資料夾執行 potato transcripts,把每份轉寫文本和對應音訊配對寫入資料檔案。標註者隨後會看到與音訊同步的話輪,並修正文字和說話人。如果時間戳還要交給 ELAN 或 Praat,就匯出為 EAF 或 TextGrid。
如何為說話人分離標註說話人話輪?
使用 audio_annotation 方案,每個說話人一個標籤,標註者在波形上為每個話輪繪製片段。如果錄音已經用 WhisperX 或 potato transcripts --diarize 自動分離過說話人,標註者只需修正每個話輪的說話人,不必逐個繪製片段。時間維度上的一致性可以測量兩名標註者的片段吻合到什麼程度。
如何線上執行 MOS 或 MUSHRA 聽音測試?
新增一個 listening_test 方案,把 method 設為你需要的測試,例如 mushra,或用於 MOS 測試的 acr,併為每個條目提供參考樣本和待比較的條件。Potato 會盲化樣本、為每位聽者打亂順序、為 MUSHRA 加入隱藏參考和錨點,並在 listening_test 匯出中應用 BS.1534-3 事後篩選規則。聽音測試列出了所有方法和選項。
能匯入或匯出 Praat TextGrid 和 ELAN 檔案嗎?
可以。potato import 讀取 .TextGrid 和 .eaf 檔案以及同名錄音,把每個層級轉成同一個 tiered_annotation 方案中的一層。textgrid 和 eaf 匯出器會把修正後的層級寫回去。
延伸閱讀
- 音訊標註指南:所有音訊任務類型及其配置
- Think-Aloud 模式:在本地轉寫口述的理由
- 基於同一套音訊工具的領域:語言學和生態學