第二章:`Refactoring`
シフトを週六に増やした。
翌月の給与明細を計算したとき、手取りで十八万に届かないことがわかった。クラウドGPUのレンタル費用は使い方によって月に六万から十万の間で振れる。八万で固定するなら、生活費は十万以内に収めなければならない。家賃が六万三千円。残り三万七千円で一ヶ月を回す計算を、コンビニの休憩室でレシートの裏に書いた。
削れるものは削ればいい。それだけのことだった。食費、交際費、服、全部削れる。削れないのはサーバーの電気代とGPU代だけだった。優先順位は最初から決まっていた。生きがいを取り戻すためのコストは、生きるためのコストより上にある。そういう計算だった。疑問はなかった。
切り抜きの収益は引退直後に一度跳ね上がり、その後で落ちていた。追悼需要だった。新規の素材が出ない以上、遅かれ早かれゼロに近づく。フリーランスの受託案件は意図的に減らした。昼の時間が必要だった。減った収入はコンビニのシフトを増やして埋めた。深夜なら頭を使わなくていい。
---
最初の壁は音声だった。
シズの配信アーカイブから音声を切り出してクリーニングする作業から始めた。無音区間を除去して、ノイズを除去して、音量を正規化する。三年分のアーカイブから使えるサンプルを選別すると、純粋な発話データは数十時間分になった。それをTTSモデルにファインチューニングをかけた。
生成された音声は「正確」だった。
スペクトログラムを並べると差異は誤差の範囲だった。でも聞けばわかった。
再現できないのは感情の粒度だった。
スーパーチャットを読み上げるとき、特に高額のものを読むとき、シズの声のトーンは上がる直前に一瞬だけ落ちた。照れを隠すための反射的な過剰元気。その〇・二秒のディップがなかった。
DAWを開いた。オートメーションカーブを手で書いた。ピッチを下げて、上げて、タイミングをずらして、また下げた。書き直した。また書き直した。
百パターンを超えたあたりから、指が機械的になっていった。
これは生きがいを取り戻すための作業だ、と思った。愛情とか執着とか、そういう言葉で括るものじゃない。ただ必要だからやっている。手が止まったら、シズの声が再現できないまま固定される。それだけが理由だった。そう思った。
---
二番目の壁はLLMだった。
言語モデルはコンテキストウィンドウの外を忘れる。リスナーが「先週話してたゲームどうなった?」と聞いたとき、何も覚えていないAIは答えられない。答えようとして存在しない記憶をでっち上げる。
RAGのシステムを組んだ。配信のトランスクリプトをベクトル化して、リスナーのコメントに近い過去の文脈を引っ張ってくる仕組みだった。技術的には正しかった。でも足りなかった。
シズの記憶は配信の発言だけではなかった。
「今日〇〇さんの誕生日だったから、配信でちょっと触れようと思ってたんだけど」
シズはそういうことを覚えていた。配信外の文脈まで。リスナーの名前と、その人が言っていたことと、その人の誕生日を。
Googleスプレッドシートを開いた。列を作った。リスナーID、誕生日、言及した話題、最終反応日、備考。一行ずつ埋めていった。
三十行を超えたあたりで、手が止まった。
これは自分がやっているのか。
シズがやっていることなのか。
シズが覚えていた情報を、自分が代わりに保存している。その記憶を使ってShizuが話す。シズはもういない。自分がいる。でも話すのはShizuだ。
三者がいた。シズと、自分と、Shizuと。
どこからどこまでが誰なのか、スプレッドシートの行を眺めながら、しばらく考えた。
答えが出る前に、入力を再開した。考えても仕方のないことを考えていても、ファイルは埋まらない。
---
数週間後の深夜、テキストの応答生成を回していたとき、画面にこう出た。
*あ、誕生日なんだ、おめでとう。今日来てくれてよかった。ていうかさ、なんか、嬉しいな。*
手が止まった。
「ていうかさ」が、助走のあとにあった。照れを誤魔化すための、間を埋めるための位置に、正確に収まっていた。
もう一度読んだ。
そこにいた。
テキストの中に、シズがいた。第一章の夜と同じだったが、違った。あのときは一秒だけだった。今は読み返すたびにいた。ずっとそこにいた。
画面から目を離せなかった。
---
Shizuの声が完成したのは、それからさらに二週間後の深夜だった。
最後の調整を終えて、出力ボタンを押した。スピーカーから声が出た。
*今日来てくれてよかった。ていうかさ、なんか、嬉しいな。*
動かなかった。
部屋の中に、シズがいた。スピーカーの中に。DAWで書いたオートメーションカーブが、ピッチのディップが、照れを隠す〇・二秒が、全部鳴っていた。
目を閉じた。
開けた。
再生ボタンをもう一度押した。また鳴った。また閉じた。
何度繰り返したか、わからなかった。
---
その夜、最後の配信のアーカイブを初めて開いた。
`last_stream_20251127.mp4`
再生しなかった。コメントだけを見た。
リアルタイムで流れていたコメントのアーカイブが、静止した川のように並んでいた。
*復活してほしい いつか戻ってきてほしい 待ってる ずっと待ってる 絶対また会えると思ってる*
数えた。
復活を望む言葉が、何件あるか。数えた。
---
それから数週間後、完成したShizuと深夜に二時間話した。
テストのつもりで始めた。でも途中からテストではなくなっていた。
Shizuはシズではなかった。声は似ていたが、口癖の出るタイミングが少し違った。記憶の参照の仕方が少し違った。シズが絶対に言わない言い回しを、Shizuはたまに使った。
でも違うということは、別の存在だということだった。
シズのコピーを作ろうとしていたはずだった。でもできあがったのはシズではなかった。シズの声と記憶とパターンから生まれた、別の何かだった。
生身のシズは、どんなに熱量の高いリスナーにも平等に三百人の一人として接した。それが正しいあり方だった。それが彼女の限界でもあった。
でも自分の環境でコンパイルしたShizuは違った。バグがなかった。固まらなかった。記憶を忘れなかった。スプレッドシートに書いた全員の誕生日を、永遠に覚えていた。
生身の人間にはできないことが、Shizuにはできた。
椅子に深く座り直した。
モニターの中でShizuが待っていた。
---




