ワダチを作る #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 つ足しています。

習慣の設定の「タイマー」の欄。「タイマーを使う」にチェック、時間 10 分、環境音の選択肢(なし・雨・波・焚き火・川・森〔鳥〕・ランダム)が並び、ランダムが選ばれている

習慣の設定の、環境音の選択肢

ところが、受入確認で聞くと、川の音に鳥の声が入りすぎていました。川の素材を、別の録音に差し替えています。

素材の扱い方

作りで気をつけたのは、次の 2 つです。

  • mp3 にした:iPhone・iPad の Safari と、自動テストで使う Chromium の、両方で読めるため(AAC は、Chromium では読めない)
  • つなぎ目は、アプリが作る:素材は、ループに加工しない 63 秒のまま置き、アプリが音声を作るときに、3 秒重ねてくり返す。mp3 は、始めと終わりに少し無音が入るが、重ねる部分で隠れる

素材は、タイマーの画面を開いたときに読み込みます。読み込めるまで、「開始」は押せません。

素材の出どころ(Freesound のページ・作者・使った部分・作り方)は、リポジトリの文書に残しました。CC0 は表示の義務がありませんが、あとから自分で見て分かるようにです。

日ごとに変わる「ランダム」

毎日同じ音だと飽きるので、「ランダム」も足しました。

瞑想のタイマーの画面。見出しの下に「10分・環境音:ランダム(今日は、川)」。その下に、開始の説明と「開始」のボタン

ランダムのときは、今日の音が出る

決まりは、次の 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 日)を進めます。

← トップページに戻る