[{"data":1,"prerenderedAt":193},["ShallowReactive",2],{"content-/tts-beat-alignment-japanese-rap":3,"all-pages-for-dir":172,"related-/tts-beat-alignment-japanese-rap":173,"og-image-/tts-beat-alignment-japanese-rap":192},{"id":4,"title":5,"body":6,"category":152,"concepts":153,"description":154,"extension":155,"meta":156,"navigation":157,"ogImage":153,"path":158,"project_name":159,"published":160,"publishedAt":161,"seo":162,"source":163,"stem":164,"tags":165,"todo":153,"unpublished":160,"updatedAt":153,"__hash__":171},"pages/2026-08/2026-08-19/tts-beat-alignment-japanese-rap.md","ずんだもんの声をBPM120に乗せる。日本語ラップの制約と、削除した英語版",{"type":7,"value":8,"toc":145},"minimark",[9,13,22,26,29,32,45,48,51,54,57,68,71,79,82,85,88,91,94,105,112,115,118,128,131,142],[10,11,12],"p",{},"AIで作った落語のラップの動画を見た。\nむちゃくちゃ面白い。\nラップなので、当たり前のように韻を踏んでいる。",[10,14,15,16,21],{},"前日に",[17,18,20],"a",{"href":19},"/tts-narration-bpm120","自分の声を複製してBPM120のビートに乗せる","検証をやったばかりだった。\n文の頭を小節の頭にそろえるところは、もう動いている。\n足りないのは韻のほうだ。",[23,24,25],"h2",{"id":25},"声を替えても同じテンポで乗るか",[10,27,28],{},"まず声を替えて、同じことをやらせた。\n前回は自分の声を複製したもの、今回はVOICEVOXのずんだもんにする。\n自分の声である必要はないので、ナレーターの声でいいと伝えた。\nUIも配置ロジックも前回のページを流用させ、2つを並べて聞き比べられるようにした。\n途中でモデルをFable 5に切り替えて、同じ指示をもう一度考え直させている。",[10,30,31],{},"出てきた数字はこうなった。",[33,34,35,39,42],"ul",{},[36,37,38],"li",{},"ずんだもんの素の話速は383モーラ/分（前回の自分の声は356モーラ/分）",[36,40,41],{},"BPM120（480モーラ/分）に合わせる speedScale は 1.24986、再合成後の実測はBPM119.89",[36,43,44],{},"12文すべてが小節の頭に乗り、ズレは0ms",[10,46,47],{},"速さの調整では、合成した音をffmpegで伸び縮みさせない。\nVOICEVOXにspeedScaleを渡して、その速さのまま合成しなおす。\n音質が落ちない。\n文の前後に入る無音は0にしておいて、間は自分で設計する。",[10,49,50],{},"読みが1か所だけ崩れた。\n「一小節」が「イチショオセツ」と読まれる。\n表示は漢字のまま、渡す読みだけ「いっしょうせつ」に差し替えて直した。",[23,52,53],{"id":53},"韻と日本語の文末",[10,55,56],{},"原稿は、普通の解説として読めるのに2文ずつ文末の母音がそろう12文にさせた。",[58,59,64],"pre",{"className":60,"code":62,"language":63},[61],"language-text","この声は、ボイスボックスのキャラクター、ずんだもん。\n話す速さも、文のあいだも、ぜんぶ数値で組んだもん。\n","text",[65,66,62],"code",{"__ignoreMap":67},"",[10,69,70],{},"「ずんだもん／組んだもん」で、う-ん-あ-お-んの5モーラが完全に一致する。\n以下、「先頭／連動」「音声合成／音の構成」「一小節／直結」「検証／テンポ」「解説／配列」と続く。",[10,72,73,74,78],{},"聞きながら気づいた。\n12文の文末が全部名詞で終わっている。\n当たり前だ。\n",[75,76,77],"strong",{},"韻は文末で踏むのに、日本語の丁寧語は全部「です」「ます」で終わってしまう","。\n「〜しています」の文を2つ並べても、韻を踏んだことにはならない。\n同じ語尾が並んだだけだ。\n日本語でラップをやるなら、少なくとも丁寧語は捨てることになる。今回は体言止めでそろえた。",[10,80,81],{},"では英語はどうなのか。\n英語は単語の終わりと次の単語の頭がつながって発音される。\n文末の縛りが日本語ほどきつくないなら、そのぶん自然にラップへ乗るのではないか。",[23,83,84],{"id":84},"英語なら楽なのか",[10,86,87],{},"先に、VOICEVOXへ英文をそのまま入れたら何が起きるかを実測させた。\n返ってきた結論は「本物の英語発音は出せないが、カタカナ英語のラップなら実用レベルで可能」だった。",[10,89,90],{},"それならと、音がつながるネイティブ寄りの発音のほうで作らせた。\n「チェケラ」「ゲラップ」「スターツォンダワン」のように、リンキングしたまま片仮名に落とす書き方だ。\n8行、各行16モーラ以内で1小節に収め、毎小節のキックの1拍目から声が立ち上がる設計にさせた。",[10,92,93],{},"数字はまたきれいにそろった。",[33,95,96,99,102],{},[36,97,98],{},"BPM120に対して実測119.99",[36,100,101],{},"8行すべてズレ0ms",[36,103,104],{},"行間の息継ぎは0.08〜0.47秒",[10,106,107,108,111],{},"再生した。\n何を言っているのか分からなかった。\n英語として聞き取れず、日本語としても意味が取れない。\n",[75,109,110],{},"ズレ0msは「ビートに乗っている」ことしか保証しない","。\n言葉として耳に届くかどうかは、別に確かめるしかない。",[10,113,114],{},"英語版はやめると決めた。\n「これはもう全部削除でいい」と言ったあとで、日本語版まで消えると気づいて「英語だけ」と言い直している。\n削除の途中では再帰削除のガードに止められ、ファイルを1件ずつ消す形に切り替えさせた。\nそのとき「関係ないファイルが1件リストから消えている」と報告が上がってきた。\n確認させたところ、これは自分が別件で削除を頼んだものだった。",[10,116,117],{},"日本語のずんだもん版だけが残った。\nそれだけをコミットしてプッシュさせた（学習ゲートはスキップ）。",[10,119,120],{},[17,121,127],{"href":122,"target":123,"rel":124},"/labs/tts-beat-preview-zundamon.html","_blank",[125,126],"noopener","noreferrer","→ ずんだもん版の検証ページ（波形にビートと文頭のズレを重ねて表示）",[23,129,130],{"id":130},"残ったもの",[33,132,133,136,139],{},[36,134,135],{},"韻を踏む原稿は、文末をそろえる設計とセットになる。少なくとも日本語では丁寧語をあきらめることになる",[36,137,138],{},"検証ページの数値がそろっても、意味が伝わるかは自分の耳で聞くまで分からない",[36,140,141],{},"カタカナ英語は、音の並びをどれだけ丁寧に写しても英語には聞こえなかった",[10,143,144],{},"丁寧に喋りながら韻を踏む方法は、まだ思いついていない。\n体言止めだけで12文書くと、解説としては少し硬い。\n英語をやるなら英語を喋れるエンジンに替えることになるが、そこまでして英語版が要るのかは決めていない。",{"title":67,"searchDepth":146,"depth":146,"links":147},2,[148,149,150,151],{"id":25,"depth":146,"text":25},{"id":53,"depth":146,"text":53},{"id":84,"depth":146,"text":84},{"id":130,"depth":146,"text":130},"dev",null,"自分の声で作ったビート整列の検証ページを、VOICEVOXのずんだもんでも作らせた。文末の母音を2文ずつそろえた12文。日本語は丁寧語で終わると韻にならない。英語なら楽かと思ってカタカナ英語版も作らせたが、聞き取れずに削除した記録。","md",{},true,"/tts-beat-alignment-japanese-rap","mdx-playground",false,"2026-08-19T00:00:00.000Z",{"title":5,"description":154},"make-diary","2026-08/2026-08-19/tts-beat-alignment-japanese-rap",[166,167,168,169,170],"音声合成","VOICEVOX","ラップ","ビート","実験","H0ytavQaKlX645A7Ke8IkRMxQs9wjsrBxR15axCHRQU",[],[174,177,181,185,188],{"title":175,"path":19,"publishedAt":176},"自分の声を複製して、BPM120のビートに乗せる — TTSで講義音声を作る実験","2026-08-18T00:00:00.000Z",{"title":178,"path":179,"publishedAt":180},"ナレーションの話速をBPMで設計する。実測BPM98と、間をビートに乗せる試み","/narration-bpm-beat-grid","2026-08-14T00:00:00.000Z",{"title":182,"path":183,"publishedAt":184},"2026年5月16日の開発日記 - 投資判断クイズ75問の音声化とマイクロン決算チャートの作り込み","/2026-05-16-diary","2026-05-16T00:00:00.000Z",{"title":186,"path":187,"publishedAt":184},"投資判断クイズ75問をVOICEVOXで音声化：WAV合成→MP3→Cloudflare R2まで一気通貫の自動化ログ","/quiz-narration-pipeline",{"title":189,"path":190,"publishedAt":191},"ずんだもん音声解説を財務3表コクピットに組み込む：132ステップ一括生成とR2デプロイ","/voicevox-zundamon-audio-r2","2026-05-06T00:00:00.000Z","https://log.eurekapu.com/og/blog/tts-beat-alignment-japanese-rap.png?v=2026-08-19T00%3A00%3A00.000Z&title=%E3%81%9A%E3%82%93%E3%81%A0%E3%82%82%E3%82%93%E3%81%AE%E5%A3%B0%E3%82%92BPM120%E3%81%AB%E4%B9%97%E3%81%9B%E3%82%8B%E3%80%82%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%83%A9%E3%83%83%E3%83%97%E3%81%AE%E5%88%B6%E7%B4%84%E3%81%A8%E3%80%81%E5%89%8A%E9%99%A4%E3%81%97%E3%81%9F%E8%8B%B1%E8%AA%9E%E7%89%88&author=Kei%20Komatsu&sig=34694c6682197f95",1787187401455]