ワダチを作る #21:タイマーの鐘と環境音を、本物の録音に替えた(AI で作るか、素材を使うか)
前回(#20)は、用意したアイコンから選べるようにした話でした。今回は、坐禅のタイマーの鐘と環境音を作り直した話です。
- 合成の音から、録音された素材に替えた
- 音楽の AI(Suno)は、環境音には向かなかった
- 聞き比べて、音を作る周波数を 2 倍にした
- 日ごとに音が変わる「ランダム」を足した
合成の音は、機械的だった
ワダチのタイマーは、開始の鐘 → 環境音(雨・波)→ 終わりの鐘を、1 本の音声にして流しています(#4)。この音は、録音ではなく、ブラウザの中で計算して作った仮の音でした。
聞くと、どうしても機械的です。鐘は電子音のようで、雨は「ザー」という雑音に近い音でした。最初は「合成の作りを直して、自然に近づける」予定でした。ですが、合成のまま直しても、限界がありそうです。
どうやって、よい音にするか
Claude Code に、手段を挙げてもらいました。「スノー AI(Suno)とかの音楽制作 AI の活用も視野に入れて」とも頼んでいます。
| 手段 | 音の質 | 利用条件の要点 |
|---|---|---|
| フリー素材(Freesound の CC0 など) | 本物の録音 | CC0 なら条件なし |
| 自分で録る | マイクと風の音しだい | 自分のものなので、心配なし |
| 効果音の AI(ElevenLabs) | 短い効果音は得意 | 無料プランでは、表示が要る |
| 手元で動かす AI(Stable Audio Open) | まずまず | 動かすまでの準備が重い |
| 音楽の AI(Suno) | 環境音には不向き | 無料プランは商用に使えない |
意外だったのは、Suno が環境音に向かないことでした。Suno は、歌や BGM のような「曲」を作る AI です。雨や焚き火のような「その場の音」は、得意ではありません。しかも無料プランで作った曲は、公開しているサービスでは使えません。
将来、瞑想用の BGM を足すことがあれば、そのときに考えます。今回は、Freesound の CC0(条件なし)の録音から選ぶことにしました。
素材を選び、聞き比べる
Freesound で、CC0 の素材を探しました。探すときの言葉(rain loop・campfire crackling・singing bowl など)と、選ぶこつ(1 分以上・雷やカラスのような目立つ音が入っていない・音の大きさが一定)を教えてもらっています。
鐘・雨・波・焚き火・森(鳥)の 5 つを選んで、フォルダに入れました。Claude Code は、そこから次のことをしてくれました。
- 各素材のページで、CC0 であることを確かめる
- 音の大きさが、いちばん安定している 1 分を、自動で選ぶ
- つなぎ目を 3 秒重ねてループにし、3 回つないだ試聴用のファイルを作る
1:00 と 2:00 がつなぎ目です。聞いて、つなぎ目が気にならないかを確かめられます。
11kHz と 22kHz
試聴用のファイルは、2 つずつ作ってもらいました。今のタイマーと同じ 11,025Hz と、その 2 倍の 22,050Hz です。
11,025Hz では、5,500Hz より高い音が出ません。そして、雨のさらさら・焚き火のぱちぱち・鳥の声・鐘の響きは、その高い音にあります。聞き比べると、11kHz のほうは、こもって聞こえました。
22kHz にすると、音声の大きさが 2 倍になります(30 分のタイマーで、約 40MB → 約 80MB)。ワダチは、タイマーの長さ分の音声を、ブラウザの中で 1 本作ってから流すからです。iPad mini で 80MB を扱えるかが心配でしたが、実機で 30 分、最後まで流れました。
「海」は「波」に、川も足す
もともとの計画では、新しい環境音を「焚き火・川・森(鳥)・海」にしていました。選んだ波の素材は、浜に寄せる波の音だったので、「海」は「波」にまとめました。川の素材も、1 つ足しています。

習慣の設定の、環境音の選択肢
ところが、受入確認で聞くと、川の音に鳥の声が入りすぎていました。川の素材を、別の録音に差し替えています。
素材の扱い方
作りで気をつけたのは、次の 2 つです。
- mp3 にした:iPhone・iPad の Safari と、自動テストで使う Chromium の、両方で読めるため(AAC は、Chromium では読めない)
- つなぎ目は、アプリが作る:素材は、ループに加工しない 63 秒のまま置き、アプリが音声を作るときに、3 秒重ねてくり返す。mp3 は、始めと終わりに少し無音が入るが、重ねる部分で隠れる
素材は、タイマーの画面を開いたときに読み込みます。読み込めるまで、「開始」は押せません。
素材の出どころ(Freesound のページ・作者・使った部分・作り方)は、リポジトリの文書に残しました。CC0 は表示の義務がありませんが、あとから自分で見て分かるようにです。
日ごとに変わる「ランダム」
毎日同じ音だと飽きるので、「ランダム」も足しました。

ランダムのときは、今日の音が出る
決まりは、次の 3 つです。
- 日ごとに、なし以外の環境音から 1 つ選ぶ(同じ日は、何回開始しても同じ音)
- 前の日と同じ音は、続かない
- 選んだ音は、保存しない
3 つ目と 2 つ目が、少し難しいところでした。前の日の音を保存しないなら、「前の日と違う音」を、どう選ぶか。
答えは、日の番号の偶数・奇数で分けることでした。
- 偶数の日:習慣と日付から、自由に選ぶ
- 奇数の日:前の日と次の日(どちらも偶数の日)の音を、計算で出して、それを除いて選ぶ
日のとなりは、必ず「偶数の日と奇数の日」の組み合わせです。奇数の日が、となりの偶数の日の音を避けて選ぶので、どの日も、前の日と同じ音になりません。候補が 3 つ以上あれば、除いても 1 つは残るので、必ず選べます(候補が 2 つのときは、交互にします)。テストでは、400 日分を回して、前の日と同じ音にならないことを確かめています。
リリースの PR を、先にマージしてしまった
最後に、ちょっとした失敗がありました。
録音の音(#105)の本番リリースの PR を作ったあと、ランダム(#106)も一緒に出そうと、先にランダムを作っていました。ところが、ランダムを develop にマージする前に、本番リリースの PR を、まちがえて先にマージしてしまいました。
結果は、録音の音だけが、先に本番に出ただけでした。困ることはありません。ランダムは、お知らせと一緒に、もう 1 回のリリースで出しました。
このとき、お知らせの PR を develop に先にマージしてから、リリースの PR をマージする順番にしています。リリースの PR は「develop → main」なので、develop に入ったものは、自動でリリースの PR にも入るからです。
おわりに
- 音楽の AI は、曲を作るもので、環境音には向かない。目的に合う道具を選ぶ
- 音の違いは、説明より、聞き比べたほうが早い
- 前の日の音を保存しなくても、「偶数の日・奇数の日」で分ければ、となりの日と同じにならない
- リリースの PR は、マージの順番が大事
次は、積み上がりの見せ方の見直し(メニューの画面・習慣化の目安 66 日)を進めます。