「我做了一個可以偵測速度、移調、重複播放片段、調整分軌比例的播放器。」
起因
身為一個樂手,每次抓歌跟練習都會對音檔動一些手腳,例如偵測速度、移調、重複播放片段、把某些樂器調大聲等。
雖然每個環節都有辦法做到,但都有一些「不方便」的地方。
以我要抓一首 YouTube 的歌為例,以下是我的流程:
- 到 YouTube 搜尋歌曲並複製網址
- 到終端機用 yt-dlp 下載音檔
- 打開編曲軟體
- 打開檔案管理,並把檔案拖曳進去編曲軟體
- 開始用又肥又大的編曲軟體,用一堆麻煩的操作
在實際開始抓歌之前,我可能已經花十分鐘在這些沒意義的小事上,興致都被用光了。
於是想說:
「如果有辦法把這些功能全部都整合在同一個地方,應該可以省去很多麻煩吧。」
然後就花點時間弄出了這個網站。
原本要花十分鐘的瑣事,現在只要 30 秒。就算要產分軌,我還是可以同時做其他事(Logic Pro 產分軌期間什麼事都做不了)。
技術相關
套件們:
- 下載音檔:
yt-dlp、FFmpeg - 移調:
@soundtouchjs/audio-worklet - 節拍器:
Tone.js - 偵測速度、調性:
librosa - 產生分軌:
demucs並透過 Replicate API 呼叫
部署:
- 程式放到 Github Repo,然後前端跟後端分開部署
- 前端:Vercel
- 後端:Linode
- 把網域指向 Vercel(前端部署的地方)
一些注意事項
- 由於 YouTube 限制,線上轉換功能高機率無法運作,只能先下載再上傳檔案(伺服器 IP 會被 YouTube 擋,本地可以)
- SoundCloud 跟 StreetVoice 目前測試可以
- 推薦用電腦操作,手機可能會有一堆詭異問題
- 產生分軌會花我一點小錢錢,不要惡意狂用
去玩玩看吧!
歡迎需要抓歌練歌的人可以用用看,有遇到什麼 bug 都可以回報給我,感謝!
有想要許願也歡迎。
🚪 再附上一次連結:https://stream.revolchu.com