Skip to content

音訊標註

Potato 音訊標註完整指南:整段分類、多標籤打標、在波形上做聲音事件檢測、轉寫、品質(MOS)評分、情緒識別與說話人分離。

音訊標註的範圍很廣,從給整段音訊打一個標籤("這是語音還是音樂?"),到在波形上標出某個聲音出現的確切時刻。 Potato 會顯示一條可互動的波形,帶播放控制和時間標記,因此分類、打標、時間對齊的事件檢測、轉寫、品質評分和說話人相關的任務都能在同一個工具裡完成。功能參考見音訊標註

本指南把常見的音訊任務逐一對應到 Potato 的配置方式和一個可直接執行的示例設計。

整段分類

給整段音訊打一個類別標籤。這類任務包括聲學場景分類環境聲音分類關鍵詞檢出呼吸音分類

yaml
annotation_schemes:
  - annotation_type: radio
    name: scene
    description: "What environment was this recorded in?"
    labels: [Street, Park, Office, Home, Vehicle]

多標籤打標

當多個聲音或標籤同時成立時——比如音樂打標AudioSet 式事件分類——使用 multiselect

yaml
annotation_schemes:
  - annotation_type: multiselect
    name: tags
    description: "Select every instrument you can hear."
    labels: [Guitar, Drums, Piano, Vocals, Bass, Synth]

聲音事件檢測:波形上的區間

要標出一個聲音何時開始、何時結束,就在音訊時間軸上標註區間。這就是聲音事件檢測,相當於音訊版的區間標註

yaml
annotation_schemes:
  - annotation_type: span
    name: events
    description: "Mark the start and end of each sound event and label it."
    labels: [Speech, Music, Dog bark, Siren, Silence]

從零開始轉寫

音訊轉寫時,把播放功能和一個自由文本欄位搭配起來。標註者可以一邊拖動波形一邊輸入。

yaml
annotation_schemes:
  - annotation_type: text
    name: transcript
    description: "Type what is said in this clip."

在已有轉寫稿上標註

從零開始轉寫是成本最高的情形。多數項目手上已經有一份轉寫稿——來自 Whisper、某個雲端 ASR 介面,或是隨影片一起下載的字幕。Potato 能讀取 21 種轉寫與字幕格式,並把其中的話輪渲染成與音訊同步的說話人氣泡,標註者只需給這些片段打標,而不必重新切分。

yaml
instance_display:
  fields:
    - key: conversation
      type: audio_dialogue
      label: "Transcript"
      span_target: true
      display_options:
        show_timestamps: true
        allow_speaker_assignment: auto

選哪一種取決於你要測量什麼。當轉寫稿本身就是交付物時,或者音訊品質差到 ASR 輸出會把標註者帶偏時,就從零開始轉寫。當你關心的是內容本身,或者你正在檢查 ASR 品質、希望錯誤清晰可見時,就從已有轉寫稿出發。

參見標註 Whisper 轉寫稿標註 YouTube 字幕

品質評分:MOS 與可懂度

主觀音質用平均意見得分衡量,即在多位聽者之間取平均的 1–5 分李克特評分。這類任務包括語音品質(MOS)語音可懂度

yaml
annotation_schemes:
  - annotation_type: likert
    name: mos
    description: "Rate the overall quality of this audio."
    size: 5
    min_label: "Bad"
    max_label: "Excellent"

量表設計方面的建議見評分量表

情緒與情感

語音情緒識別音訊情感分析會把一個類別(情緒)和若干維度評分(喚醒度、效價)結合起來,用 radio 搭配 sliderlikert 實現。

說話人分離

說話人分離回答的是"誰在什麼時候說話"。標註者標出時間區間,並把每段關聯到某位說話人,也就是區間標註加上一個關聯步驟。

如果上游已經跑過分離——用 WhisperX 或某個雲端介面——Potato 會直接讀取說話人標籤,標註者只需修正其中的錯誤。未分配的話輪會顯示為 Unassigned 並附帶一個選擇器;在音質糟糕的素材上,人耳判斷往往勝過自動系統。

從 2.9 版起,potato transcripts --transcribe --diarize 也可以在你自己的機器上完成轉寫和說話人分離,不需要 PyTorch,也不需要 Hugging Face 令牌。見在本地轉寫

實踐建議

  • 音訊片段要短到聽一兩遍就能判斷;片段過長會拉低一致性。
  • 做事件檢測時,先就邊界需要多精確達成共識,並在區間層面測量一致性,參見標註者間一致性
  • 對所有片段做響度歸一化,避免品質評分被音量大小左右。

延伸閱讀