TV番組などで、ボイスチェンジャーを使って声色を変えて放送することがあります。多くはプライバシー保護が目的なのですが、古くからヘリウムガスなどを使って自分の声を変えて楽しむこともあります。自分の声が変わるというのは、とても面白い体験です。そこで、今回は、バイブコーディングで、リアルタイムに遊べるボイスチェンジャーを作ってみましょう。

  • バイブコーディングでボイスチェンジャーを作成してみよう

    バイブコーディングでボイスチェンジャーを作成してみよう

ボイスチェンジャーを作るには、どんな技術が必要?

バイブコーディングを実践する人の多くがぶつかる問題の一つが、どんな技術を使って、目的とするツールを作って良いのか分からないという点にあります。

昨今、多くのオープンソースのツールやライブラリがあり、どの技術をどのように使えば、自分が目的とするツールを完成させられるのかが分からないことがあります。

特に、最初からフワッとした指示をAIに与えると、自分が望む環境で動くのではなく、限られた環境でしか動かなかったりして、結局、作り直しが必要になったりします。

そこで、最初に、ChatGPTやGeminiなどのチャットベースの生成AIで、簡単に技術調査をすると良いでしょう。今回は、Gemini CLIを使ってアプリを作ろうと思いますので、あえて別会社のAIである、ChatGPTに質問してみましょう。以下のような質問をしてみました。

これから、ボイスチェンジャーを作りたいと思っています。
どんな技術を使って作るのが良いでしょうか。

ブラウザで動く必要はなく、PC上で手軽に遊べるツールにしたいです。 仲間うちで、気軽にいろいろな声を変えられるようにしたいんです。

まずは、プログラムを作るのではなく、どのような技術が考えられるかを教えて下さい。

すると、ChatGPTは、詳細で長い回答をくれました。箇条書きで要約すると次のような技術が使えるということでした。実際、もっと詳しく知りたい方は、筆者が用意した上記のプロンプトを生成AIに与えてみてください。

- ボイスチェンジャーには、大きく分けて次のような手法がある
  - (1) DSP方式 - リアルタイムで軽量。ピッチを変えるだけなので手軽。
  - (2) RVC系 - AI技術を使って別人の声に変えることができる
  - (3) TTS+VC - 声そのものを生成できるが、リアルタイムに向かない

今回は、簡単なお遊び用途のボイスチェンジャーを作りたいので、まずは、上記の(1)DSP方式を試してみます。それで、少し突っ込んで、下記のようなプロンプトを作って、続く会話で尋ねてみました。

まずは、Pythonで、DSP方式を実装したいと思うのですが、
どんなライブラリを使うとよいのか教えてください。
環境は、Windows/macOSを対象にしたいです。

すると、次のようなライブラリを推薦してくれました。

- sounddevice: リアルタイムでマイク入力とスピーカー出力を扱うライブラリ(win/mac/linuxに対応)
- librosa: 定番の音声解析ライブラリ
- pyworld: 高品質な音声分析・合成ライブラリ (男声←→女声の変換が自然)

いずれも役立ちそうです。これで、プログラム作成に必要そうな情報がそろいました。

いざバイブコーディング

それでは、Gemini CLIを起動して、バイブコーディングを実践してみましょう。

ちなみに、先日、Geminiは最新のモデル「Gemini 3 Pro」をリリースしました。もし、これをGemini CLIから使いたい場合は、「Google AI Ultra」を契約するか、有料の「Gemini APIキー」を設定し、プレビュー機能を有効にする必要があるようです。近く一般ユーザーも使えるようになると予想されるため、今後に期待しましょう。

それでは、プログラムを作成するフォルダを作り、Gemini CLIを起動しましょう。ターミナル(WindowsならPowerShell、macOS/Linuxならターミナル)を起動しましょう。そして、下記のコマンドを実行します。

mkdir voice_changer
cd voice_changer
gemini

続いて、今回の目標である、ボイスチェンジャーを作成するプロンプトを入力しましょう。ここでは、下記のようなプロンプトを入力しました。

Pythonでボイスチェンジャーを作ってください。
### 環境とライブラリ
ローカルPCで動作するものにしてください。
ライブラリとして、sounddevice、librosaを利用してください。
### 仕様
CLIから起動して[Enter]キーを押すまで、マイク入力を拾って、声を変えて出力します。
視覚的にも面白くなるよう、簡単に色とりどりの波形を画面に表示するものにしてください。
まずは、DSP方式の簡単なものを作成してください。

わずか8行の指示で、どんなものが完成するのか、楽しみです。しばらくGeminiがプログラムを作るのを待ちます。

  • Gemini CLIにプロンプトを与えたところ

    Gemini CLIにプロンプトを与えたところ

プログラムの完成を待とう

途中で、何度かコマンドを実行してよいか、プログラムを書き込んでよいのかを尋ねられますので許可しましょう。筆者が試した時には、作成まで3-4分かかりました。プログラムが完成すると、実行までの手順を示してくれますので、それに従って操作します。

  • 最初にできたボイスチェンジャー

    最初にできたボイスチェンジャー

コマンドを実行すると、ボイスチェンジを行い、声が甲高い感じで再生されました。そして画面に黄色や赤の波が表示されました。とても面白いものです。一発でエラーのないプログラムを作ってくれました。以前は、エラーが表示されることも多かったので、ここしばらくで、かなり改善されています。

改良してみよう

ただし、自分の声だけでなく、スピーカーから出た音をマイクが拾ってしまって、それに対してもボイスチェンジ効果をかけてしまうようでした。そのため、自分が話した後に聞き苦しいノイズが出てしまいます。そこで、下記のような注文を追加で行いました。

作ってもらったプログラムですが、
スピーカーの音に対してもボイスチェンジ効果を与えています。
ハウリングが起きないように修正してください。
小さな音を無視するようにしたり、余分な周波数をカットするなどしてください。

すると、プログラムを改良してくれました。しかし、完全には修正してくれません。そもそも、スピーカーから出る音にも、人間の声と同じ周波数帯が含まれるため、区別が難しいとのことです。加えて、「ヘッドホンを使うとよい」というアドバイスもくれました。確かに、それが一番簡単な解決策です。

次に、声を高くしたり、低くしたりするモードを追加してもらいます。

[h]キーが押されたら、もっと高い声になるように、
[l]キーが押されたら、もっと低い声になるように修正してください。

ここまで、完成したプログラムを、こちらのGistにアップしました。160行程度の簡単なプログラムでした。実際のコードが気になる方は、確認してみてください。

pyworldを試してみよう

なお、冒頭の調査でpyworldも便利だと教えてもらったことを思い出しました。そこで、pyworldを使ったバージョンを作ってもらうことにしました。pyworldは、音声処理エンジンの「WORLD」をPythonから利用できるようにしたパッケージです。音声の「声帯の振動」「声道の形」「周期成分/非周期成分」などを分離して処理できます。

現在のプログラムを参考にしつつ、Pythonパッケージのpyworldを利用して、
高度なボイスチェンジャーを作ってください。

上記の指示を与えると、指示通りにプログラムを改良してくれました。さすがに、何度か試行錯誤をすることになりましたが、動くものができました。改良版も、先ほどのGistにアップロードしました。パラメータを変えすぎると、うまく音が再生されない場合もありますので、パラメータを制限するなど、さらに改良できるでしょう。

まとめ

以上、今回は、バイブコーディングで、ボイスチェンジャーを作ってみました。実際に作成されたプログラムを確認すると、わずか160行と短いものでした。しかし、音声処理の専門ではないと、なかなか作成できないプログラムです。

作成されたプログラムを見て、音声処理について学ぶこともできますし、単にボイスチェンジャーで遊ぶだけでも、十分楽しいものです。思い通りのプログラムが、こんなに簡単にできるようになるとは数年前までは予想もできませんでした。良い時代になりました。これからも、バイブコーディングで面白いツールを実装していきたいと思います。

自由型プログラマー。くじらはんどにて、プログラミングの楽しさを伝える活動をしている。代表作に、日本語プログラミング言語「なでしこ」 、テキスト音楽「サクラ」など。2001年オンラインソフト大賞入賞、2004年度未踏ユース スーパークリエータ認定、2010年 OSS貢献者章受賞。これまで50冊以上の技術書を執筆した。直近では、「大規模言語モデルを使いこなすためのプロンプトエンジニアリングの教科書(マイナビ出版)」「Pythonでつくるデスクトップアプリ(ソシム)」「実践力を身につける Pythonの教科書 第2版」「シゴトがはかどる Python自動処理の教科書(マイナビ出版)」など。