M.

打鍵音づくりに AI を使ったら、品質は上がったが楽にはならなかった(TaktKey)

TaktKey は、キーを打つたびにメカニカルキーボードの打鍵音を鳴らす Windows アプリです。ノート PC のキーボードでも、コトコト・カチカチという音で打てるようになります。

TaktKey の設定画面。物理音8種類とビープ音4種類から音色を選べる

この音づくりに、Claude Code を全面的に使いました。結論から書くと、試せる数と仕上がりは上がりましたが、大変さは変わりませんでした。何を良い音とするかを決めるのは、最後まで自分の耳だったからです。

この記事では、試した順に何がうまくいかず、何が効いたかをまとめます。

1. 合成だけで作る:AI でパラメータを大量に出す

最初は、素材を使わずに 物理モデルの合成だけ で打鍵音を作ろうとしました。キーが底に当たる音、クリック機構の音、バネの音を、それぞれ減衰や共鳴のパラメータで作る方法です。

パラメータはいじる場所が多く、自分で一つずつ試していたら終わりません。そこで、Claude Code にパラメータの組を大量に出させ、書き出した音を聴いて、気に入ったものを残しては耳で微調整する、というやり方にしました。

数を出すことについては、AI はとても頼りになります。「もっとコトコトした感じ」「底打ちを重く」と言えば、それらしい組をすぐに何通りも出してくれます。

ただ、合成だけの音には限界がありました。

  • 電子音っぽい:どう調整しても、ピコピコ・ポコポコした人工的な音が残る
  • 質感が薄い:プラスチックのキーキャップや金属のバネの手触りが出ない

それらしい音にはなるのですが、ずっと聴いていたい音にはなりません。最終的に、合成だけで作る部分は削り、実際の録音を土台にすることにしました。

2. 自分で録音する:音は良いが種類が足りない

次に、手元のキーボードを録音しました。本物の音なので、質感は合成とは比べものになりません。

問題は、手持ちのキーボードが少ない ことでした。録れるのは持っている数台の音だけで、リニア・タクタイル・クリッキー・静音といった種類をそろえられません。

3. フリー素材を集めて選ぶ:打鍵音は数がないと成り立たない

そこで、ネット上で公開されているフリー素材(CC0 と CC BY)を探し、使えるものを選んで加工する方法に切り替えました。

打鍵音は、同じ音を繰り返すとすぐに機械っぽく聞こえます。1つの音色を作るにも、底打ちの音が何種類も要ります。バリエーションの数がそのまま品質になる ので、素材は多く集める必要がありました。

ただ、集めた素材の多くは連続でタイプした長い録音で、そのままでは使えません。1打ずつ切り出し、聴いて選ぶ作業が待っています。ここが一番時間を食うところだったので、Claude Code にツールを作ってもらいました。

ツールしていること
extract_candidates.py無音を検出して1打ずつ切り出し、単発の打鍵らしい長さのものだけを残す
screen_candidates.pyffmpeg で平均音量とピークを測り、聴く価値がありそうな上位だけを並べる
preview.pyフォルダ内の音をキー操作で順に再生。Space で次、r でもう一度、y で採用フォルダにコピー

機械で絞れるところは絞り、最後の「採用するかどうか」だけを耳で決める 形です。聴く数そのものは減りませんが、1つあたりの手間はかなり減りました。

4. 素材に物理モデルのエフェクトを重ねる

選んだ素材に、物理モデルの考え方で作ったエフェクトを重ねて、音色に仕上げます。最初の合成の試行は、ここで役に立ちました。合成で音を一から作るのではなく、素材の性格を変える処理 として使ったわけです。

特に効いたのは次の3つです。

クリック・タクタイル感

底打ちの音に、クリックの音を別の層として重ねます。

  • タクタイル:クリック音を底打ちより 少し遅らせて 鳴らします。「山を越える感触 → 底に当たる」という2つの出来事として聞こえるようにするためです
  • クリッキー:クリック音の ピッチを少し上げて 底打ちの帯域から離し、「カチッ」が埋もれずに聞こえるようにしています。立ち上がり(アタック)も強調しています

毎打鍵のばらつき

同じ音を同じように鳴らすと、すぐに機械的に聞こえます。そこで、打つたびに ピッチと音量をランダムに少しだけ変えて います。素材を複数用意してランダムに選ぶのと合わせて、「同じ音の繰り返し」に聞こえないようにしています。

EQ でキーボードの違いを再現する

キーボードの鳴りは、ケースの材質やキーの構造で変わります。これを EQ(周波数ごとの音量調整) で再現しています。下の図は、同じ素材から作った4つの音色のスペクトルです。

同じ Classic 素材から作った Linear・Tactile・Clicky・Silent のスペクトル。Clicky は 3〜4kHz が持ち上がり、Silent は高域が大きく削られている

  • Linear:クリック機構のない素直な底打ちなので、主な帯域の芯を少し削り、中低域の丸みを前に出す
  • Tactile:逆に主な帯域の中心を持ち上げ、「コクッ」という張りを出す
  • Clicky:クリックの成分がある 3〜4kHz を強く持ち上げる
  • Silent:主な帯域と高域を大きく削り、柔らかいノイズを重ねて「ポフッ」という雨音のような音にする

素材は同じでも、EQ だけでかなり違うキーボードに聞こえます。

5. 組み合わせを増やすより、仕上げた数を絞る

最初は、プリセットを 「音源 × 効果」の2軸 で作っていました。音源(素材のセット)と効果(EQ などの処理)を自由に組み合わせられれば、選べる音色が多くなると考えたからです。

ところが、組み合わせの中には、聴いてみると微妙なものがたくさん混ざります。音源と効果には相性があり、どの組み合わせでも良い音になるわけではありませんでした。

そこで、耳で仕上げた完成品だけを並べる1軸 に作り直し、物理音を8種類に絞りました。選べる数は減りましたが、どれを選んでもちゃんと良い音、という状態のほうが使う人にとって親切です。

8つの音色を聴く

それぞれ4打ずつ鳴らしています。音量に注意して再生してください。

音色試聴
Classic Linear
Classic Tactile
Classic Clicky
Classic Silent
Topre Soft
Thock Deep
Vintage PC
Typewriter

音色ごとの体感の音量がそろうよう、最後に音量の補正もかけています。EQ を変えると聞こえる大きさも変わるので、音量を実測して補正値を出すツールも作りました。

素材の出典:Vintage PC の素材は crz1990「Keyboard Typing Sounds」(CC BY 3.0)を切り出して加工したものです。そのほかの音色の素材は CC0 です。

AI で何が変わり、何が変わらなかったか

変わったこと

  • パラメータの組を、自分では思いつかない分まで大量に試せた
  • 切り出し・音量チェック・試聴のツールを、必要になったその場で作れた
  • 結果として、一人で作るにしては多くの素材を試し、仕上がりも良くなった

変わらなかったこと

  • 試せる数が増えた分、聴く量も増えた。楽になったわけではない
  • コトコトの心地よさ、タクタイルの感触が「良い」かどうかは、AI には決められない。最後の判断は自分の耳
  • 合成の限界や、組み合わせを増やすと品質が落ちることは、実際に聴いて初めて分かった

AI は「試す」ことをとても速くしてくれますが、「何を良しとするか」は人に残ります。音のように感覚で決めるものほど、その傾向は強いと感じました。

この記事をシェア

関連する記事

Claude Code の auto mode に止められた操作を1か月分集計した(64件の内訳と、許可リストの落とし穴)

Claude Code の auto mode が拒否した操作を、会話ログから1か月分集計しました。2.2万回のツール呼び出しのうち止められたのは64件。半分近くは本番デプロイで、読むだけの grep が止められた例もありました。公式ドキュメントと照らし合わせて分かった、許可リスト(permissions.allow)が効く・効かない条件もまとめます。

Claude Code に GCP の課金を棚卸しさせたら、月1万円が半分になった(失敗込みの記録)

個人開発で使っている GCP の全プロジェクトを、Claude Code と一緒に横断して見直しました。gcloud での調査、ストレージの掃除、通信料の削減、そして CUD の二重契約という失敗まで。AI に任せられたこと・人間がやる必要があったことを整理します。

Claude Code の会話は30日で消え、compact で要約される。何をどこに残すか

Claude Code の会話ログは既定で30日で削除され、長い会話は compact で要約されます。1か月分のログを数えると、3割のセッションで compact が起きていました。compact のあとに何が残り、何が落ちるのかを公式ドキュメントで確かめ、CLAUDE.md・auto memory・リポジトリのドキュメントの使い分けをまとめます。

テーマから探す