| name | run-utau |
| description | うたうちゃん(このリポジトリ)を起動して歌わせる。「うたを鳴らして」「うたわせて」「実行して」「WAVにして」「ブラウザで開いて」「run-utau」などと言われたとき、または譜面(.uta)を書いて音を確認したいときに使う。CLI(node sing.js)でWAV生成、ブラウザ(index.html)で再生の両方に対応。 |
run-utau — うたうちゃんの起動ランブック
このリポジトリは、テキスト譜面「うたテキスト(.uta)」を歌声WAVに合成する、依存ライブラリ不要のちいさな歌声合成器。声は録音を使わずフォルマント合成でその場生成する。起動方法は2つ:
- CLI —
node sing.js 譜面.uta で WAV を書き出す(Node.jsだけ)
- ブラウザ —
index.html を開いて再生(Windows 97風UI)
前提の確認
- Node.js があること:
node --version(v18+ 目安。追加の npm install は不要)
- 実行はリポジトリのルート(
sing.js / index.html / songs/ がある場所)から。
いちばん速い起動(CLI)
node sing.js songs/kirakira.uta
成功すると 🎤 うた / うたこ / 調教:ふつう / ♩=104 / 42音 / 29.3秒 のような1行と出力先が表示される。出力は 16bit・モノラル・44.1kHz の WAV。
聴く: aplay songs/kirakira.wav(Linux)/ afplay …(mac)/ xdg-open … でOSの既定プレーヤ。
サンプル譜面(songs/)
| ファイル | 内容 |
|---|
kirakira.uta | きらきら星メロディ・うたこ・調教ふつう(基本デモ) |
mofumofu.uta | メリーさんのひつじ・うたこ |
neko.uta | かえるの合唱・ちびすけ |
robo.uta | べたうち(無調教)のロボまる声デモ |
yozakura.uta | 演歌・おじさま・調教スタイル「こぶし」 |
yoru.uta | @mode かたり のポエトリーリーディングdemo(ささやき) |
全部書き出す例:
for f in songs/*.uta; do node sing.js "$f"; done
CLIの他の使い方
node sing.js songs/kirakira.uta -o /tmp/out.wav
echo "@tempo 120
ど4:ら ど4:ら そ4:そ:8" | node sing.js -
node sing.js --help
ブラウザで起動
index.html をブラウザで開くだけ(ビルド不要・そのままファイルを開いて動く)。サンプルボタンを押すと再生される(好きなジャケット画像も設定できる)。ローカルで確実に見せたいときは簡易サーバ経由が安定:
python3 -m http.server 8000
譜面はURLに埋め込まれるので、共有リンクとして送れる。GitHub Pages(Settings → Pages → main / root)で公開も可能。
実録音サンプルで歌わせる(重音テト等のUTAU音源)
sing.js は録音を使わないフォルマント合成。対して singteto.js は、UTAU音源(録音WAV+oto.ini)を切り貼りして同じうたテキスト譜面を実録音の声で歌わせるミニUTAUリサンプラー。
node singteto.js songs/kirakira.uta
node singteto.js songs/kirakira.uta --bank "<音源フォルダ>"
UTAU_BANK="<音源フォルダ>" node singteto.js songs/kirakira.uta
node singteto.js songs/kirakira.uta --no-vib --dry
- 連続音(VCV)/単独音(CV)を自動判別。音源フォルダ =
oto.ini のあるフォルダ。未指定なら ~/dev/teto-voicebank/**/(重音テト連続音→重音テト単独音の順)を自動探索。
- 移調はサンプル毎の実測ピッチ(YIN)基準。母音は TD-PSOLA でフォルマント保持(チップマンク感なし)、長音にビブラート、つなぎは等パワークロスフェード、仕上げに軽い残響。
- 品質メトリクスは
node tools/analyze-teto.js 歌.wav 譜面.uta、改善履歴は docs/teto-changelog.md。
- ブラウザからも使える:
index.html の「TETO.EXE — 実録音でうたう」で音源フォルダを指定すると、GUIだけで実録音再生・WAV保存ができる(読み込みはブラウザ内で完結)。
- ⚠️ 音源ファイルは同梱・コミット禁止。重音テト音源(小山乃舞世)は再配布不可のため、各自ダウンロードしてリポジトリ外に置く。
singteto.js はコードのみ(音源も生成WAVも含まない)。
新しい譜面を書いて鳴らす(要点)
高さ:歌詞[:長さ][調教記号] を空白区切りで並べる。詳細は README.md と node sing.js --help。
- 高さ:
ど れ み ふぁ そ ら し + オクターブ(ど4=C4)。#/♭・C4/F#4 式もOK
- 歌詞: かな1音(
ーのばす、っやすむ、にゃ等の拗音OK)
- 長さ: 16分音符いくつぶんか(省略=4=4分音符)。休符は
・:4
- ヘッダ:
@mode うた|かたり @tempo @voice うたこ|ちびすけ|ロボまる|おじさま @style べたうち|ふつう|こぶし|ささやき|げんき
- 調教記号:
<しゃくり >フォール ~ビブ強 _ビブ無 *こぶし !アクセント ?よわく
@mode かたり にすると音符なしで詩をそのまま朗読(抑揚は自動)
書いたら node sing.js 新譜面.uta で即確認。パースエラーは「譜面がよめませんでした」と行が示されるので、その行を直す。
動作確認(スモークテスト)
変更後にサッと壊れていないか見るなら:
node sing.js songs/kirakira.uta -o /tmp/smoke.wav && \
file /tmp/smoke.wav | grep -q "WAVE audio" && echo OK
OK が出れば合成パイプラインは生きている。
バンドちゃん(ライブシンセGUI)で鳴らす
ドラム・ベース・コード・リード・[うた]をまとめて演奏したい「バンドテキスト」を書いたら、band.html をブラウザで開く(index.html と同様、ビルド不要でそのまま開ける)。
python3 -m http.server 8000
サンプルチップ(⚡テクノ風/🎧ポップス風/🌙うた入りバラード)か songs/*.band の内容を貼って▶。演奏中にテキストを直して「✎ 差し替え」(またはCtrl+Enter)すると次の小節から鳴り変わる。「🔗 共有リンク」を押すとURLの #b= にバンドテキストが埋め込まれるので、そのまま送って共有できる。パーサだけならNodeでも require('./synth.js').parse(text) で確認可能。詳しい書式は README.md の「バンドちゃん」セクションへ。