Communitygithub.com

estudio-ia

為影片進行聲音設計與混音,根據每個元素的進出與動作加入音效、配樂、旁白,並輸出最終混音與報告。

estudio-ia 是什麼?

這項技能提供一套完整的影片聲音設計與混音自動化流程,適用於 After Effects、HyperFrames、Remotion 或手動編輯的影片。它根據動畫事件列表(如元素出現、點擊、轉場)自動分配音效,將音效峰值對齊在正確影格,並將背景音樂壓在旁白音量之下。支援測量音樂 BPM 與 Drop(使用 beat_this 模型)、將歌曲分離為人聲與伴奏(MelBand Big Beta 4 或 BS-RoFormer SW)、以及驗證場景音效(ambience/foley)是否過大。輸出包含最終混音(FLAC/WAV)、各分軌檔案(人聲、音樂、音效、調性音)和一份檢查 LUFS、峰值、同步誤差(中位數 ≤ 25 ms)的報告。若數值超出規範,報告會發出警告,必須修正後才能交付。技能也允許透過自訂 Python 映射檔為特定事件類型指定專屬音效組合,支援微調增益、聲像、音高偏移等參數。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/iamjeffia/estudio-ia/tree/HEAD/.agents/skills/som-do-video

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

影片的聲音

日期:2026-10-22 · 類型:技能 · 狀態:現行

摘要: 影片的聲音源自一個事件列表(每個出現在畫面、離開或撞擊畫面的元素各一個事件)和一個指令 som.py,它將每個音效的峰值放在正確的影格,將音樂壓在旁白下方,並交付帶有報告的混音。聲音不需要等待渲染:只要動畫的時間確定,聲音就可以先完成。混音的數值只有一個擁有者:06-metodo/regras.md;這項技能提供了方法、指令與主要表格。

何時使用

  • 任何包含動態、介面、教學、廣告或純音樂的影片,需要同步音效。
  • 有旁白的影片:乾聲放在前方,音樂墊在下方,音效保持低調。
  • 有人物或場景但聽起來「很安靜」的影片:需要場景音(環境音與擬音)。請參閱 references/som-de-cena.md。
  • 處理音樂:測量拍點與 Drop(batida.py)或分離人聲(separar.py)。

方法

  1. 每一個可見的動作都有一個對應的聲音,而聲音描述該動作。 卡片進入發出 pop,按鈕發出 click,畫面切換發出 whoosh,印章發出撞擊聲,數字滾動。密度由動作決定,而非字數:在旁白下方最多同時有兩個音效。
  2. 只有畫面驅動的聲音才能加入。 在靜止的剪接處加入 whoosh、場景中沒有時鐘卻加入時鐘聲、或沒有東西上升卻加入 riser,都會使聲音與影片脫節。在混音之前,先觀看影片並記錄哪些東西在動、何時動、以及用什麼材質。
  3. 峰值落在事件的影格上。 點擊、pop、印章與撞擊:峰值落在元素接觸的影格。Whoosh:峰值落在動作的中段(約起始後 0.2 秒;預設映射已自動處理)。Riser:在 Drop 或剪接處乾收。
  4. 調性音只用在高潮、過場與驚喜。 撞擊時加入和弦、印章與標誌加入和弦;大型過場加入短的 pad;揭露時加入鈴聲。絕不在點擊、pop 或按鍵上使用,否則會變成「小旋律」並造成聽覺疲勞。只有當音樂有已知調性時才傳入 --tom(例如 Am)。
  5. 音樂配合時刻,而非舖滿全程。 開頭輕柔;Drop 前減速;呼吸空間;高潮在 kick 上。有旁白時,音樂音量遠低於旁白,並在呼吸段與無語句段落上升。
  6. Drop 前要有呼吸空間。 在 Drop 前的最後一個拍點上,樂器部分乾收約 0.3–0.5 秒(--drop T 會做到這點),而關鍵字或最大的畫面變化落在 Drop 的第一個影格。使用 batida.py 測量 Drop,不要靠眼睛判斷。
  7. 層次只出現在峰值。 Drop、標誌與結尾處同時有 2–3 個聲音;其餘時刻一個動作一個聲音。當同一個聲音重複出現時要改變音量(映射會自動輪替同一類別中的不同變體)。
  8. 乾的人聲。 旁白不加殘響或迴音。
  9. 聆聽分離的軌道。 som.py 會輸出 escuta/voz.wav、musica.wav、efeitos.wav 與 tonais.wav。同步性要檢查音效分軌,而非混音成品。

主要數值

擁有者:06-metodo/regras.md。如果那裡寫了不同的數值,以那裡為準。控制檯會自動套用這些值。

項目數值
有旁白或音樂的主輸出−14 LUFS 整合值,真實峰值 ≤ −1 dBTP(限制器 4 倍)
旁白下方的音樂約 低 15 dB(報告會測量;可接受 12–18)
無旁白但有真實音樂的混音音軌先標準化至 −19 LUFS,音效 ×2.2,限制器,主輸出 −14
僅場景音片段−25 LUFS 整合值(上限 −24),短時 ≤ −20,瞬時 ≤ −16,峰值 ≤ −3。絕不標準化至 −14
場景音與旁白同時存在場景音分軌 至少低於旁白 15 LU
音效庫短音效瞬時峰值 −20 LUFS,背景音 −24,峰值 ≤ −3 dBTP;位置 at = 事件時間 − 峰值時間/1000
同步性音效分軌中位數 ≤ 25 ms
拍點beat_this,File2Beats(checkpoint_path="final0");剪接點距離拍點 ≤ 2 個影格

逐步操作

所有指令都在工作室根目錄執行。

  1. 音效庫準備好了嗎? 如果 05-biblioteca/som/sfx/catalogo.json 不存在:uv run scripts/som/sintetizar_sfx.py。已錄製的聲音:uv run scripts/som/nivelar.py <音效包資料夾>(詳細資訊請參閱 05-biblioteca/som/README.md)。
  2. 事件。 從動畫引擎匯出 eventos.json 到專案的 audio/ 資料夾。格式、接受的型別以及如何從 After Effects、HyperFrames 與 Remotion 匯出:references/eventos.md。
  3. 音樂有拍點嗎? uv run scripts/som/batida.py musica.mp3 --fps 30 會輸出 BPM、強拍與可能的 Drop 位置。根據這個格線來進行動畫剪接。
  4. 需要音樂的人聲或樂器部分? uv run scripts/som/separar.py musica.mp3(人聲 + 樂器)或 --modo 6(六個分軌)。
  5. 混音:
    uv run scripts/som/som.py --eventos 04-projetos/<video>/audio/eventos.json \
      --voz 04-projetos/<video>/audio/voz.wav --musica 04-projetos/<video>/audio/musica.wav \
      --video 04-projetos/<video>/render/previa.mp4 --drop 12.4
    
    輸出 mix.wav、escuta/*.wav、relatorio-som.json 與 previa-som.mp4(影像為複製,僅聲音改變)。
  6. 閱讀報告並修正直到沒有警告。 「事件無聲音」= 映射無法識別的型別:將型別換成已知的,在事件中加入 "som": "categoria",或撰寫 --mapa(見下方)。LUFS、峰值以及「音樂低於旁白」超出目標範圍也會顯示。
  7. 場景音? uv run scripts/som/verificar_som_de_cena.py <僅場景音混音> 或 ... escuta/efeitos.wav --voz escuta/voz.wav。未通過則不交付。
  8. 聆聽。 帶聲音的預覽會交給工作室擁有者批准。在最終影片上,使用 --video render/final.mp4 執行相同指令:僅是重新封裝,無需重新渲染。

專屬的音效(--mapa)

一個 .py 檔案,內容為 MAPA = {tipo: função(M, e)},會在你列出的型別上覆蓋預設映射:

# 04-projetos/<video>/audio/mapa.py
MAPA = {
    "logo": lambda M, e: (M.poe("logo", e["t"], -11), M.poe("impacto", e["t"], -16), M.golpe(e["t"], -20)),
    "moeda": lambda M, e: M.poe("sucesso/sucesso-2", e["t"], -14, st=3),   # st = 半音階數
}

控制檯中可在映射中使用的函式:M.poe(som, t, ganho_db, pan, alinha="pico"|"ini"|"fim", st=semitons, fim=duração, fade=s, sala=True)、M.tonal(t, lufs)、M.golpe(t, lufs)、M.textura(t0, t1, lufs)、M.riser(t_pico)。som 可接受類別("whoosh",會輪替不同變體)、音效庫中的檔案("whoosh/whoosh-2")或路徑。

指令

指令用途
uv run scripts/som/som.py --eventos E.json [--voz V] [--musica M] [--video P.mp4] [--tom Am] [--drop T] [--mapa mapa.py]完整混音、報告與影片嵌入聲音
uv run scripts/som/sintetizar_sfx.py [--amostra prova.wav]生成初始合成音效庫
uv run scripts/som/nivelar.py PASTA [--categoria X] [--cama] [--destino D]將音效包標準化並更新目錄
uv run scripts/som/verificar_som_de_cena.py MIX.wav [--voz VOZ.wav]拒絕音量過大的場景音(退出碼 1)
uv run scripts/som/batida.py MUSICA [--fps 30] [--json grade.json] [--video render.mp4]拍點、強拍、BPM 與 Drop(基於 beat_this)
uv run scripts/som/separar.py MUSICA [--modo voz|6] [--saida PASTA]人聲 + 樂器(MelBand Big Beta 4)或 6 分軌(BS-RoFormer SW)

som.py 的其他選項:--voz-entra、--musica-entra、--musica-de(對齊片段)、--dur、--impacto T0 T1(音樂上升到人聲音量)、--lufs、--pico、--fx -10(音效相對於人聲的 LUFS)、--saida。

batida.py 與 separar.py 使用 AI,需要額外套件:uv sync --extra cpu(或 NVIDIA 顯卡時使用 --extra gpu)。模型會在首次使用時自動下載(beat_this 約 80 MB;每個分離模型約 300–700 MB,儲存在 ~/.cache/estudio-ia/)。若未安裝額外套件,這兩個指令會暫停並顯示安裝指引。

常見錯誤

症狀可能原因處理方式
場景影片的音效「太大聲」場景音被標準化至 −14som.py 在無旁白無音樂時已設定目標為 −25;使用 verificar_som_de_cena.py 確認
無旁白影片中音效被音樂淹沒母帶處理過的音軌(−8 至 −11 LUFS)控制檯會將音軌標準化至 −19 並將音效放大 ×2.2;如果仍然被淹沒,在事件中提高 vol
whoosh 聲音「延遲」事件標記在動作結束時標記動作的開始;映射會將峰值設在 0.2 秒後
重複相同音效聽起來像機器人該類別只有一個變體在該類別中標準化更多音效,或使用 --mapa 中的不同 st
報告:「類別交換」音效庫中沒有該類別執行 sintetizar_sfx.py 或標準化包含該類別的包

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

相關技能