在你的瀏覽器裡跑 · 音訊不上傳
放一首歌給它聽。錄音當下就把和弦與音高推上畫面,看得到它在跟著動; 停止之後拿整段波形重新判讀一次,用更準的結果覆蓋掉它。 然後你可以整首轉調、把詞貼進小節、印成 PDF。
mp3 / wav / m4a 都行,拖進這張卡片也可以。
一首完整的歌會比一小段準——判調號需要聽夠久。
也吃 .songsheet.json 分析檔(見下方「YouTube 怎麼辦」)。
直接彈唱,或對著喇叭放。這條路才看得到即時判讀—— 錄的時候畫面就會跟著動,停止之後才重判。
因為「馬上看到」跟「判得準」是兩個互相打架的需求。這支工具不挑一邊,兩個都給你,並且講清楚哪個是哪個。
它看不到未來。聽到新的證據就改答案,錄不到 8 秒甚至不會講調號——因為它真的還沒聽夠。
價值不在準,在於你看得到它在跟著你彈的東西動。
拿整段波形重跑一次。先聽完全部拿到最終調號,再用那個調號一次算對級數,不必邊聽邊修。
兩條路共用同一套訊號處理,差別只有串流餵與整段重跑。
虛線框+琥珀色=暫定,還會改。
實線+綠色「定稿」=可以照著彈。
重判完成後,那一行會直接寫出兩版差在哪——調號有沒有被改、和弦幾段變幾段。
三步,中間不需要等網路。
丟音檔,或按麥克風直接彈唱。至少十幾秒——不到 3 秒判不出調號,也估不出速度。
調號、和弦、簡譜旋律、小節線。推不出來的東西它會說推不出來,不會硬掰。
轉到好唱的調、把詞貼進小節,然後印出來或存成 PDF。
這個頁面不會、也不該自己去抓 YouTube 的音訊——那需要把網址送到別人的伺服器, 「音訊不離開這個頁面」就不成立了。所以取音訊那一步留在你自己的電腦上。
用 scripts/transcribe.mjs(yt-dlp → ffmpeg → 分析),產出一個 .songsheet.json。
node scripts/transcribe.mjs <網址> --id my-song
拖進左上角那張卡片就好。譜、轉調、貼詞、列印全部照常。
分析用的是同一支 analyze(),所以結果跟你自己丟音檔進來一模一樣。
繞出去的只有「把聲音弄下來」那一步。
好處是你的網址跟音訊都沒有離開過你的電腦。
寫在這裡而不是藏起來。一個自信的錯誤比一個誠實的空白傷害大得多。
· 判調號、和弦進行、單音旋律的簡譜
· 推小節線與拍號(4/4),推不出來就不畫
· 整首移到任何調,拼法跟著目標調選升降
· 減時線、附點、休止符、跨小節連結線
· 全程離線,音訊不離開這個頁面
· 和弦只認七種:大/小/7/m7/maj7/dim/sus4。加九、分數和弦會被判成最接近的那個
· 旋律是單音管線:有完整編曲的錄音很可能抓到和聲不是主旋律
· 歌詞不做辨識(刻意):對著伴奏唱的歌聲辨識率低到不值得端上來,所以是貼上+自己對齊
· 只推 4/4:三拍子的曲子會推不出小節線,於是不畫
用麥克風時,瀏覽器的回音消除/雜訊抑制/自動增益都已經關掉了——那三個是為人聲通話調的,會把音樂的低頻與和聲吃掉。
對著喇叭錄的話,音量開大一點、靠近一點。畫面上的音量條看得出來收到多少。