FlutterとChatGPTで作る！音声クローンアプリ

年末年始の休暇期間中、私はChatGPTを最大限に活用し、ゼロショットで自分や他人の声を再現する音声クローンアプリ「Mirra Voice」を作成しました。本記事では、このアプリの開発過程や使用した技術について詳しく記載します。

https://apps.apple.com/jp/app/mirra-voice/id6740045116

#### ゼロショットとは
「ゼロショット（Zero-shot）」という用語は、主に機械学習や人工知能（AI）の分野で使用され、モデルが特定のタスクや対象に対して事前に学習していない状態で、それらを実行できる能力を指します。今回で言うと、モデルが新しい話者の音声をクローンする際に、事前にその話者の音声データを大量に用意する必要がないというものです。

# OpenAIが年末にリリースしたChatGPT-o1とSearchGPTの新機能

年末にOpenAIは、ChatGPT-o1に加えて、新たな検索機能であるSearchGPTを正式にリリースしました。有料会員として、これまでもo1のプレビュー版を利用できていましたが、ついに正式版が公開されました。

### ChatGPT-o1の特徴

ChatGPT-o1には、「チェーン・オブ・ソート（Chain of Thought）」という技術が導入されています。この技術により、複雑なタスクにも対応可能となっています。
元々、「チェーン・オブ・ソート」はプロンプトのテクニックとして考案されていました。しかし、今回のアップデートで推論部分に組み込まれたことで、以下のようなメリットが生まれました。
	•	多角的な思考：タスクを多方面から分析・考察することが可能に。
	•	段階的な処理：タスクを段階的に分解し、順序立てて処理できるように。

これにより、従来は複雑で長いタスクに対して誤りが生じやすかった状況が大幅に改善されました。

### SearchGPTの導入
さらに、ChatGPT上でSearchGPTによる検索機能が利用可能になりました。個人開発において、ChatGPTからの回答が最新情報に基づいていない場合や、過去の情報のままで最新バージョンによるエラーに対応できないことが課題でした。しかし、SearchGPTを組み合わせることで、以下のような利点が得られます。
•最新情報へのアクセス：リアルタイムで最新の情報を検索し、回答に反映させることが可能に。
•エラー対応の強化：最新バージョンのエラーにも迅速に対応できるようになるため、個人開発がさらにしやすくなりました。

これにより、開発者は最新の情報を活用しつつ、高品質なアプリケーションを効率的に開発できるようになります。

# 音声クローンアプリ「Mirra Voice」詳細解説
今回は、Flutterを用いて開発した音声クローンアプリ「Mirra Voice」について詳しくご紹介します。本アプリは、わずか10秒程度の録音からユーザーの声を再現し、任意のテキストを自然な音声で発話させることが可能です。音声クローンの生成には、GitHubで公開されている「VALL-E-X」を活用しています。

### ユースケース
1. 普段は話さないような言葉を友達に喋らせて楽しむ
友達が普段は口にしないユニークなフレーズやジョークを音声クローンを通じて再現することで、会話に新たな楽しみを加えることができます。例えば：
•サプライズメッセージ：特別なイベントや誕生日に、友達の声でメッセージを再生して驚かせる。
•ジョークの再現：友達がよく言う面白いフレーズを使って、笑いを誘う。
•ストーリーテリング：友達の声でオリジナルの短編ストーリーを作成し、共有する。

2. 好きな人の声を録音して自分を応援してもらう
大切な人の声をクローンし、日常のモチベーションアップに活用することができます。具体例として：
•朝の目覚ましメッセージ：好きな人の声で優しいメッセージを設定し、毎朝の目覚めを心地よくする。
•励ましの言葉：困難な時や疲れた時に、好きな人の声で励ましのメッセージを受け取る。
•目標達成のサポート：目標に向かって頑張る際に、応援メッセージを再生して自分を鼓舞する。

### VALL-E-Xとは？
VALL-E-Xは、短時間の音声サンプルからユーザーの声を高精度にクローンすることができるオープンソースのモデルです。特徴として以下が挙げられます。
•ゼロショット学習：事前の学習データなしで、新しい声のクローンを生成可能
•高精度：短時間の録音からでも自然な音声を再現
•オープンソース：自由に利用・カスタマイズが可能

# 使用技術
#### フロントエンド（アプリ側）
•Flutter：クロスプラットフォーム対応のモバイルアプリケーションフレームワーク
•Dart：Flutterアプリケーションのプログラミング言語
•HTTPパッケージ：サーバーとの通信を行うために使用

#### バックエンド（サーバー側）
•FastAPI：Python製の高速なAPIフレームワーク
•VALL-E-X：ゼロショットで高精度な音声クローンを生成するモデル(MITライセンス)
•Whisper:OpenAIが提供している文字起こしツール(MITライセンス)
•DigitalOcean Droplet：サーバーホスティングに使用

https://github.com/Plachtaa/VALL-E-X

### システム構成
アプリ側の処理フロー
1.音声録音：ユーザーがアプリ上で音声を録音
2.データ送信：録音した音声と発話させたいテキストをサーバーに送信
3.音声受信：サーバーから生成されたクローン音声を受け取り、再生

サーバー側の処理フロー
1.音声受信：アプリから送信された音声データを受け取る
2.文字起こし：受け取った音声を文字起こし（必要に応じて）
3.クローン音声生成：VALL-E-Xを使用して、送られたテキストをクローン音声で生成
4.音声送信：生成したクローン音声をアプリに返送

### なぜDigitalOceanを使用したのか？
AWSなどと比べるとシンプルで操作や料金体系もわかりやすいからです。
また、DigitalOceanでは新規ユーザーに対して、一定期間内で使用可能なクレジットが提供されていたからです。(60日間有効の200ドル)

# 開発期間
本アプリの開発期間は、年末年始の休暇中の約1週間でした。この短期間で音声クローンアプリ「Mirra Voice」を完成させることができたのは、ChatGPTを活用した効率的な開発プロセスと、新たにリリースされたChatGPT-o1の恩恵によるものです。

ChatGPT-o1の利点

ChatGPT-o1のリリースにより、以下のようなメリットを享受しながら開発を進めることができました：
•長いコードの正確な生成：従来のバージョンでは長いコードを扱う際に誤りが生じやすかったものの、o1の登場により、より正確に長いコードを生成・修正できるようになりました。これにより、複雑な機能の実装や細かな調整が迅速に行え、開発効率が大幅に向上しました。
•高度なロジックのサポート：複雑なアルゴリズムやロジックの実装においても、o1が適切なコードスニペットや最適な解決策を提案してくれるため、開発者の負担が軽減しました。

問題解決のためのツール活用

開発中にバージョン関連のエラーや予期せぬ問題が発生した際には、以下のツールを併用して迅速に解決しました：
•SearchGPT：最新の情報を検索し、o1に提供することで、リアルタイムで最新のライブラリ情報やベストプラクティスを反映させることができました。
•Google Gemini：高度な検索機能を持つGeminiを活用し、特定のエラーメッセージや問題に対する詳細な解析と解決策を取得しました。

これらのツールを組み合わせることで、開発中に直面した課題を迅速かつ効果的に解決し、スムーズな開発進行を実現しました。

# 音声クローンアプリ(Mirra Voice)の使用方法
### 1.音声の録音
(1)録音開始:
•画面右下のマイクアイコン（🎤）をタップ。
•最大10秒間録音が自動で行われます。
(2)録音停止:
•自動停止または赤い停止ボタン（⏹️）をタップして手動停止。
(3)録音完了:
•録音が「録音一覧」に保存されます。

![Simulator Screenshot - iPhone 15 Plus - 2025-01-13 at 12.56.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3892822/9564a889-ce89-3c0c-f326-cc53cf81f634.png)

### 2.クローン音声の生成
(1)クローンタブへ移動:
•画面上部の「クローンボイス一覧」タブを選択
(2)フレーズ選択:
•ドロップダウンメニューから生成したいフレーズを選ぶ
(3)録音ファイル選択:
•使用する録音ファイルを選択
(4)クローン生成:
•「クローン生成」ボタンをタップ
　※現時点では、あまり性能の高いサーバーを使用していないのでクローン生成には10〜20秒ほどかかります。たくさんの方に使用されるようであれば、GPUを搭載した高性能サーバーへの変更も検討していこうと思います。
•クローン音声が生成され、「クローンボイス一覧」に追加されます

![Simulator Screenshot - iPhone 15 Plus - 2025-01-13 at 12.56.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3892822/2a3d5444-d58c-d0f2-b028-a8fc8d3d4fe8.png)

### 3.ファイルの管理

録音ファイル
•再生: 再生ボタン（▶️）をタップ
•名前変更: 編集ボタン（✏️）で名称変更
•削除: 削除ボタン（🗑️）でファイル削除
•選択: ラジオボタンでクローン生成に使用する録音を選択

クローン音声
•再生: 再生ボタン（▶️）をタップ
•名前変更: 編集ボタン（✏️）で名称変更
•共有: 共有ボタン（🔗）で他のアプリと共有
•削除: 削除ボタン（🗑️）でクローン音声を削除

# 最後に
今回作成した音声クローンアプリ「Mirra Voice」をご紹介しました。現在、App Storeでのみ公開しているため、iPhoneユーザーのみがご利用いただけます。興味をお持ちいただけましたら、ぜひダウンロードして音声クローンの機能をお試しください！

https://apps.apple.com/jp/app/mirra-voice/id6740045116