每首歌都有一層「鈴鈴聲」
AI 生成的歌從頭到尾有很密的高頻金屬聲。一開始以為是某個頻率,加了濾波也沒用;在描述裡寫「不要鈴鐺」反而更嚴重。
解法:比較三種模型的頻譜,發現模型習慣把這個聲音放在右聲道,高頻右邊比左邊大了 17 dB。後製改成「2 kHz 以上右聲道用左聲道的內容」,再換成高頻最乾淨的模型。之後又把偵測寫成程式,有殘留的歌自動淘汰,不用再靠耳朵一首一首抓。
lofi puppy radio 是我經營的 lofi 音樂頻道。主角是一隻戴耳機的像素小狗,陪你讀書、工作。從做歌、檢查、後製、串合輯、做動畫到剪短片,我把大部分步驟寫成程式,一行指令就能跑完。
問題
一支 2 小時的 lofi 合輯大約需要 60 首歌。就算用 AI 生成,每首還是要有人聽:有沒有破音、有沒有刺耳的雜音、音量是不是一致、結尾會不會突然斷掉。歌做好之後,還要做 2 小時的動畫、剪短片、寫說明、上傳到好幾個平台。
全部手工做,一支合輯就要花好幾天。我想要的是晚上按下去,早上起來歌已經做好、挑好、後製好,我只要負責試聽和決定。
做法
每支合輯一份設定檔,寫好主題、樂器、速度、調性。程式自動排出 70 首的組合,一首一首送進 ComfyUI 跑 AI 音樂模型。中斷了重跑同一行指令就會接著做,不會重複生成。
每首做完立刻量:破音的直接丟掉;另外用頻譜分析找出「整首一直存在的固定音高叮聲」,有的話也淘汰。剩下的才進入下一步。
濾掉聽不到的超低頻、修正左右聲道、壓掉刺耳的高頻,再把每首的音量統一到串流平台的標準,輸出 24-bit 的無損音檔。
自動剪掉頭尾多餘的安靜段,依照調性和速度算出每兩首相接的突兀程度,排出聽起來最順的順序,接上淡入淡出,同時產生章節時間表。
用 Python 逐格畫出像素動畫:小狗每換一首歌換一個動作(散步、坐著、睡覺),場景可以替換。影片做好後,程式再挑出最平穩的段落,剪成 3 支直式短片。
用 YouTube Data API 上傳;兩台電腦用 Git 交接,成品自動同步到雲端。網站 push 到 GitHub 就自動部署。
卡關與解法
AI 生成的歌從頭到尾有很密的高頻金屬聲。一開始以為是某個頻率,加了濾波也沒用;在描述裡寫「不要鈴鐺」反而更嚴重。
解法:比較三種模型的頻譜,發現模型習慣把這個聲音放在右聲道,高頻右邊比左邊大了 17 dB。後製改成「2 kHz 以上右聲道用左聲道的內容」,再換成高頻最乾淨的模型。之後又把偵測寫成程式,有殘留的歌自動淘汰,不用再靠耳朵一首一首抓。
2 小時的影片裡有一張會旋轉的唱片,前面都正常,16 分鐘之後卻停住了。只看開頭幾分鐘根本發現不了。
解法:查到 FFmpeg 的旋轉濾鏡內部會把角度轉成整數,角度累積太大就溢位。改成每轉一圈歸零之後就正常了。從此每支長影片都會抽查開頭、中段、結尾的畫面。
合輯是一首接一首播的,有的歌最後 30 秒慢慢變小聲,整支聽起來就忽大忽小。
解法:調整生成時的段落描述,讓節奏維持到最後、只做簡短收尾;串合輯時再自動剪掉尾端的安靜段。音量起伏的指標從 9.4 降到 4.0。
結果