Sonido (音訊處理) 是做什麼的?
音訊的每一步都以測量為基礎:峰值、音量、頻率範圍以及每個音效擊點的影格位置。而在展示音樂或音效選項之前,會先用「聽覺」工具替你過濾。所有規則都來自真實的修正案例,每一條都說明其存在的理由。
用途
- 人聲: 清理、調整音量、逐字轉寫,如果是合成語音,則確保其正確唸出標記。
- 音效 (SFX): 每個動畫的每個手勢,精確對應到其影格位置。
- 音樂: 每個片段都搭配新的背景音樂,在剪切點進入,並以淡出結束。
- 混音與交付: 將音量調整至適合社群平台,並經過測量。
工具:ffmpeg 用於所有測量與混音;whisper-cli 用於轉寫;Adobe Podcast 或本地清理工具用於人聲;ElevenLabs 或其他生成器用於音樂、音效與語音(務必在 presupuesto 技能之後使用);以及「聽覺」(參考資料/oido.md)。
工作流程
- 人聲優先。 在剪輯確認後,匯出語音音軌的混音、清理、調整音量,然後放回原位(在下方)。
- 擊點清單。 每個動畫的每個手勢,包含其精確秒數與對應音效。時間點來自合成使用的相同常數,而非目測。
- 音效。 每個片段一個腳本,將每個音效放置於其時間點,並設定音量,同時固定其持續時間 (參考資料/sfx-con-ffmpeg.md)。音效會經過測量,並混入動畫的影片檔中。
- 音樂。 風格與前一片段不同;經過「聽覺」篩選出 2 個選項;在剪切點以方形方式進入;在出口標記處約有 2 秒的淡出;設定背景音量及其在語音下的降低量。
- 混音與交付音量 調整。
- 檢查 (最後) 並在
pieza.md中加入一行記錄。
人聲
預設為真人錄音。 配音是真人或播音員的錄音。請不要自行提議使用合成語音;如果缺少配音,請提出需求。
清理
- Adobe Podcast (Enhance Speech), 使用其免費版本且不調整設定,是目前聽起來效果最好的:在測試中,它將人聲相對於背景的清晰度提升了 3.3 dB;而本地的 DeepFilterNet 和 Resemble Enhance 僅提升約 0.3 dB,且聽起來「悶、模糊」。該人聲的問題是房間殘響,而非噪音。本地工具作為備用 (DeepFilterNet 約為 50 倍即時速度;Resemble 在 CPU 上約為 2 倍)。
- 將他人的語音上傳到外部服務需要取得其明確許可。 請不要試圖用腳本或自訂規則繞過此限制;如果沒有許可,請在本地進行清理。
- 每個片段上傳一次,而非每個剪輯: 上傳已剪輯好的語音混音。如果服務有大小限制,則使用 320 kbps 的 MP3 格式,並在靜音處分割較長的檔案。
- 放回時: 測量其與原始音訊的延遲 (應為 ~0 ms),將其音量調整至與原始音訊一致,從相同時間點放入新音軌,並將原始音軌靜音 (不要刪除)。
轉寫 (用於字幕、音效與剪輯)
- 針對時間軸上現有狀態的語音,進行逐字轉寫:
whisper-cli -m <model> -l es -ml 1 -sow -oj。如何重建:請參考motion技能中的 字幕。 - Whisper 會將拉長的字詞提前至多 2 秒關閉。切勿切斷句子: 真正的結尾應在原始音訊中測量 (300 至 3400 Hz 之間的包絡線)。
合成語音 (僅在被要求時使用,並需搭配 presupuesto 技能)
- 數字需寫成中文,每次呼叫一句話,每句話生成 2 個版本並選擇最佳者;一次最多 5 個並行生成;輸出為 48 kHz / 24 位元,音量與現有語音一致。
- 剪輯時,靜音應位於句子之間,而非句子內部。
- 從頭設計語音:使用低「guidance」(約 3);使用高「guidance」(約 8) 會導致語音生硬。
- 不複製真人演員的聲音: 而是尋找其風格。由本人演出台詞,再透過變聲器改變音色,保留其節奏。
- 如果有人對著鏡頭說話,就應聽到其聲音。 複製別人的聲音或進行嘴形同步,必須取得本人許可。
標記的正確發音
- 如果一個標記與英文單字相同,即使語音是拉丁語系,也會以英文發音。請為語音使用注音或音標寫法 (例如「Social」→「Sosiál」),並在其後加上逗號測試。
- 測量它: Whisper 會相同地轉寫兩種發音。字詞內部超過 70 ms 的停頓 = 表示它被切成了兩個字。對於起始的「u」,其前 50 ms 的 F2 頻率可用來區分西班牙語 (低於 ~1000 Hz) 與英語「iu」(高於 2000 Hz 並下降),例如使用 Praat 測量。
- 沒有任何測量方法能完美判斷口音:生成一批語音,丟棄那些會切斷字詞的版本,然後僅將每個倖存版本中標記的部分拼接成一個單獨的 .wav 檔案,讓使用者憑聽覺選擇。每當合成語音唸出一個標記時,務必提醒使用者。
音效
| 畫面手勢 | 對應音效 |
|---|---|
| 訊息進入模擬聊天視窗 (或代表訊息的東西) | 該應用程式的真實音效,也就是觀眾能辨識出「收到訊息」的聲音 (通常是通知音),剪輯至約 1 秒;如果是連續訊息,約 0.4 秒且音量更低 |
| 訊息已送出、語音訊息已送出 | 該應用程式對應的真實音效 |
| 鏡頭移動、橫搖 | 低沉的聲音或音調滑動,切勿使用持續噪音;位於語音下方,音量更低,或是一個撞擊聲,或無聲 |
| 撞擊、強烈出現 | 在中頻 (200–2000 Hz) 有力量感,並帶有些許低頻的撞擊聲 |
| 計數器、滴答聲、介面彈出聲 | 合成的短音調;在連續提示時,每次音調升高一個半音 |
| 高潮 | 鐘聲 + 低頻 |
| 人物手勢 (出現、打破、劃掉、按下) | 擬真的音效庫 (資料庫或生成),並測量其高頻部分 |
| 語音中的關鍵字 | 在其重音節上的一個短促有力的重音 |
應用程式的真實音效需從手機錄製或從官方應用程式中提取;它們的音量不同,需要進行統一等化。擬真的音效庫也會有嘶聲 (實測的時鐘、升級與金幣音效中,70% 到 97% 的能量集中在 3 kHz 以上):請測量並對其進行低通濾波,或使用音調合成。
音樂
- 一支現場演奏的樂隊: 器樂、活潑、帶有半即興風格與和弦;而非聽起來像廣告的素材庫循環。一個基本風格 (例如有機搖滾) 並在片段之間輪替:放克、爵士、R&B 或某些當地風格,用於需要歡樂氣氛的片段。
- 提示詞描述聲音,而非畫面: 類型、能量、樂器、BPM 以及其發展方式。曾經有效的提示詞 (英文):「Starts instantly with no intro, full band from the very first beat」、「Keeps full energy to the end」、「Instrumental. Not corporate, not stock music, not lounge」。
- 兩個選項: A = 基本風格,B = 輪替風格。為了在剪輯器中比較,第二個選項放在另一條已靜音的音軌中。
- 在選擇前先測量: 大約一半的生成音檔會在結束前消失或有空白。查看最後 3 秒,尋找超過 0.5 秒的靜音,並提取每秒的包絡線 (在哪裡上升,何時消失)。約 50 秒長的音檔通常會在第 46 秒左右自行消失:選擇開頭剪輯,使淡出落在音量的飽滿部分。
- 音樂進入點應對齊影像剪輯點和語音停頓處。 將音軌向前或向後移動,或在最能無縫銜接的接縫處重複前奏的一個小節。切勿拉伸音軌,也不要為了配合音樂而移動影片。
- 如果歌曲提前結束,在進入點之後重複一個 4 小節的樂句。
- 約 2 秒的淡出 (cos² 曲線,直接燒錄於 WAV 檔案中) 精確結束於出口標記處,落在節奏律動上,而非最後的強拍。
- 在系列作品 (例如故事 1 → 2 → 3) 中,音樂應連續播放並保持相同音量。
- 音樂可能經過重度母帶處理 (−12 至 −14 LUFS,真實峰值接近 0 dB):這是正常的;只需將其降低至背景音量即可。
不可動搖的原則
- 預設使用真人語音。 原因: 真人的聲音是使影片片段可信的關鍵,合成語音在第一個說錯的名字就會露出馬腳。
- 動畫應配合語音, 反之則否:不應為了配合圖形而在語音中加入停頓。
- 每個動畫都應有對應的音效, 無需要求,且每個擊點都應落在測量出的影格上。 原因: 無聲的動畫感覺像是半成品,而延遲的擊點效果更糟。
- 如果一個聲音沒有對應的畫面手勢或語音重音,就是多餘的。 原因: SFX 是輔助性的;它不是環境音。
- 沒有「嘶嘶」聲。 任何動作都不使用白噪音或持續噪音;噪音僅可作為毫秒級瞬態使用。 原因: 嘶聲聽起來廉價,會干擾旁白,而且是最常被退回的項目。
- 在模擬畫面中,使用應用程式的真實音效。 原因: 熟悉的聲音讓聊天模擬看起來真實;而通用的「啵」聲則會暴露它是動畫。
- 每個聲音應有各自獨立的音量。 不應對整個音軌進行標準化;限制器僅用於控制峰值。 原因: 如果對所有聲音一起進行標準化,最響亮的擊點會壓低其他聲音。
- 需要被聽到的聲音應在中頻有力量感。 原因: 純粹的低頻 (幾乎所有能量低於 120 Hz) 在手機喇叭上聽不見。
- 聲音應隨著想法的方向而變化。 原因: 一個下沉且無法解決的問題,與一個上升並閉合 (例如在五度音程上) 的解決方案,可以用無聲的方式敘述故事。
- 每個片段都使用新的音樂。 原因: 重複的歌曲是最容易令人厭倦的 (「除了歌以外都喜歡」)。
- 切勿讓音樂突然中斷。 如果片段長度改變,應重新製作背景音樂 (重新剪輯並添加淡出);不要在剪輯器中直接裁剪音軌。 原因: 突然中斷的結尾在交付時會很明顯。
- 語音優先。 如果語音改變,應重新調整音樂的降低幅度。
- 在展示前先行篩選,僅展示 2 或 3 個最佳選項。 原因: 盲目地提供九個選項會讓人疲倦並消耗信任。
- 「聽覺」用於篩選,而非選擇。 原因: 曾有獲得「聽覺」最高分的音檔仍被拒絕;最終決定權在工作人員的聽覺。
數值
| 項目 | 數值 |
|---|---|
| 無語音背景的獨立音效 | 峰值 ≈ −5.5 dB;RMS ≈ −22 至 −25 dB |
| 位於語音下方的音效 | 峰值 ≤ −9 dB;RMS ≤ −27 dB |
| 聊天訊息音效 | 與語音音量相當 (在音軌中約為 −21 dB RMS) |
| 聊天對話框的擊點 | 在其影格時間點 + 0.02 秒 |
| 位於語音下方的橫搖聲 | 中心頻率 ≤ 750 Hz,低通至 2.5 kHz,峰值 ≈ −20 dB |
| 嘶聲 | 任何段落在 3.5 kHz 以上的能量不得超過 35% |
| 限制器 | alimiter=limit=0.52:level=disabled (上限 ≈ −5.7 dB) |
| 有旁白的背景音樂音量 | 在空白處為 −20 LUFS;低於語音 4.5 dB |
| 有對鏡頭說話者的背景音樂音量 | 在空白處為 −23 LUFS;低於語音 7 dB |
| 淡出 | 約 2 秒,cos² 曲線,結束於出口標記處 |
| 未經處理的鏡頭前語音音量 | 約 −26 LUFS:如果提高語音,音樂和音效也應隨之提高 |
| 社群平台交付音量 | −14 至 −15 LUFS 積分音量;真實峰值 ≤ −1 dBTP |
| 手機測試 | 音量下降 2–6 dB:正常;下降超過 6 dB:表示中頻不足 |
用於測量每項數值的指令: 參考資料/sfx-con-ffmpeg.md。
已知陷阱
alimiter預設會自動調整音量: 啟用level後,上限不再是上限,峰值會洩漏。務必設定level=disabled。- 限制器並非線性的: 它會反覆進行標準化 (測量、修正、重建;最多 4 次)。
volume=…:eval=frame會以約 21 毫秒為區塊改變增益: 以高於約 5 Hz 的頻率調變會產生階梯狀失真 (破碎的嗡嗡聲)。快速調變應在aevalsrc中進行逐樣本處理。-t會裁剪但不會填補長度: 使用apad+-t來固定持續時間。- 如果 Remotion 的渲染在 .mov 中產生一條靜音音軌 (取決於版本),SFX 應取代它 (
-map 0:v -map 1:a),並使用-t <影片持續時間>;在 MOV 中使用-shortest會吃掉最後幾個影格。 - Whisper 在只有音樂或噪音時會產生幻覺 (例如「Gracias por ver el video」、「Thank you」):這些地方沒有語音。
- 剪輯中連結的音訊可能會蓋過其他音軌:SFX 應最後放置,並使用一條獨立的音軌。
- 拔掉藍牙耳機後 Premiere 變靜音: 耳機被設置為輸入和輸出設備 (免持模式)。請至偏好設定 → 硬體音訊:將輸入設為「無輸入」,輸出設為電腦喇叭。在 macOS 上,使用
system_profiler SPAudioDataType查詢預設裝置。 - 加快語音訊息但不改變音調: 使用
atempo=1.1。
交付項目與驗證項目
交付項目: 清理後的人聲 (.wav);每個動畫的音效 .wav,長度與動畫完全相同 (影格 0 對應影格 0),已混入其 .mov 或作為獨立檔案;包含燒錄淡出的背景音樂;最終混音;以及在 pieza.md 中加入一行,說明已完成的工作、測量結果與待辦事項。
驗證項目 (需透過測量):
- 積分音量在 −14 至 −15 LUFS 之間,真實峰值 ≤ −1 dBTP。
- 背景音樂在空白處保持設定音量,並在語音下方降低。
- 音樂在出口標記處以淡出結束。
- 每個擊點落在正確的影格上 (比對擊點清單與波形)。
- 沒有任何段落有嘶聲 (超過 35% 的能量位於 3.5 kHz 以上)。
- 關鍵擊點在手機測試中可聽見。
- 清理後的人聲與原始人聲無延遲。
- 音效的持續時間與影片相同。
- 如果使用了合成語音:標記的發音經過測量並由工作人員聽過確認。