SE生成AIプラットフォーム「Plop」を作成しました！〜技術の話〜

こんにちは、ひさふるです！

私は現在、KDDIアジャイル開発センター(以降KAG)という会社の新入社員として働いています。

この度、同じくKAGの新入社員である沢井と共に、インターン+研修の一環として生成AIを活用したアプリケーションを開発し、その関連技術を特許出願しました！

そこで今回は、アプリケーションの内容や使用した技術についてご紹介したいと思います！

## 開発の経緯
※開発の経緯は別記事で詳しくご紹介しています！

https://qiita.com/kyuko/items/d2708709827411feb292

私達二人は、2023年10月~2024年3月の期間で、内定者インターンとして音声生成AIを使ったアプリケーションを作成しました。

その結果、最終的に社内の共有会での発表を経て、研修期間中に特許出願まで行うことが出来ました。

今回は、その特許出願までを1つの区切りとして、アプリケーションの内容をここでご紹介いたします。

## SE生成AIプラットフォーム「Plop」
まずは、今回作成したアプリケーションの簡単な概要についてご紹介いたします。

![スクリーンショット 2024-10-07 21.19.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655545/688f0b42-b721-d9b6-f81f-b851c1d98030.png)

作成したアプリケーション「Plop」は、生成AIとベクトルデータベースを用いることでSE(Sound Effect, 効果音)の検索と生成を相互に結びつけ、クリエイターのSE利用を促進することを目的としたアプリケーションです。

近年では，YoutubeやTikTokの普及に伴う個人クリエイターの増加や、ゲーム制作の現場における生成AIの普及などにより、SEを気軽に使いたいという需要が高まっています。

一方で、"SE"に特化した生成AIサービスは(当時)非常に少なかったため、私達はそこに目をつけ、SEに特化したサービスを作ることにしました。

ちなみに「Plop」という名前は、KAGが得意とするアジャイル開発の流動性や青いコーポレートカラーから連想される波や水から連想し、「水がポチャリと落ちる音」を意味する「Plop」という単語から命名しました。

## 「Plop」の使い方
Plopは主にSEの検索と生成が行え、検索と生成は相互に関連しています。

最初、ユーザーは自分の求める音を検索することを想定しています。

もし、検索で音が見つからなかった場合はSE生成AIで作成することができ、作成した音はDBに保存することで次の人が音を見つけやすくなります。

将来的には音に対する評価機能等も実装したいと考えており、評価の高い音を優先的に表示することで、ユーザーがより効率的に音を見つけることが出来るようになると考えています。
![スクリーンショット 2024-10-08 0.09.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655545/3b1f6d70-a04e-57f2-037a-78310f107c76.png)

### Plopの検索
Plopの検索ではベクトルデータベースとCLAPを使用することで、より直感的に音を検索出来るようになっています。

ベクトルデータベースはベクトルで表せるデータの検索に特化したDBで、似ている音声や画像の検索に向いています。

CLAP(Contrastive Language-Audio Pretraining)は音声とテキストを対照学習したもので、そのテキストが示す"音"の特徴量を取得することが出来ます。

この2つを組み合わせることで、Plopでは**テキストが示す音**と**テキストが示す音に似ている音**を総合的に検索することが出来るようになっています。

![スクリーンショット 2024-10-07 22.16.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655545/3c75c7a1-3dec-ebcc-c7d3-04fdd4b3e94f.png)

また、Plopの特徴として**マップ表示**という機能があります。(上記画像の左下)

これは、**音同士の特徴の距離**を視覚的に表したもので、直感的にどの音が似ているのかを把握することが出来ます。

これらの機能により、ユーザーが自分の求める音に最短でアクセス出来ることを目指しました。

### Plopの生成
もし検索で探している音が無かった場合は、その場で生成してしまいましょう。
Plopは生成AIを搭載しているため、プロンプトから自分の求める音を生成できます。

![スクリーンショット 2024-10-07 23.13.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655545/8e14deb6-eb9e-4916-f24e-db1cd18dce62.png)

PlopではMetaの開発した音声生成AI:**AudioGen**を使用しているため、周囲の環境の指定等、複雑なプロンプトによる音声の生成にも対応しています。

また、生成した音はベクトルデータベースに格納しておくことで、同じ音を探しているユーザーが音を見つけやすくなります。

この検索と生成の相互活用により、ユーザーが増えれば増えるほど音を探しやすくなる、というのがPlopの特徴でもあります。

## 「Plop」の使用技術
今回、Plopを作成するのに使用した技術を簡単にご紹介します。

### 技術スタック
フロントエンドにはNext.jsを使い、バックエンドは主にAWSのAPI GatewayとLambdaを活用し構成しました。

ベクトルデータベースにはPineconeというサービスを使用しています。
![スクリーンショット 2024-10-08 0.23.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655545/20f266c3-948c-a6f5-0705-3e1fdd0ea3ca.png)

アーキテクチャは以下の通りです。

生成AIモデルはAmazon Sagemakerを使い動作させています。
非常に単純なモデルではありますが、今回はPoC(概念実証)として役割が主であったため、これで十分でした。

![スクリーンショット 2024-10-08 0.23.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655545/eddfc557-7e9c-0a5a-b9a1-2d70dad86af3.png)

もし実際にサービスとして稼働させることがあれば、アーキテクチャから見直す必要がありそうですね。

## 今後の課題点
1. 権利関係(著作権・ライセンス等)
    - メディア系の生成AIを使用しているため、著作権等、権利関係には十分に気をつける必要があります。今回はインターンの一環でPoCとして開発したため、一旦ライセンス等は考えずに開発を進めましたが、実際にはモデルや学習データ、生成されるコンテンツ等に注意する必要があります。

1. コスト・セキュリティ
    - 実際にサービスとして展開することを考えた場合、セキュリティ面やコストなど考慮しなければいけない点は多数存在します。特に音声生成AIは画像生成と同様に、モデルを実行するのに高機能なGPUを搭載したサーバーが必要であるため、稼働させておくだけで非常にコストがかかる点が問題となります。

## おわりに
今回は、新入社員2人がインターンで作成した、生成AIを活用したアプリケーションをご紹介しました。

生成AIはKAGとしても力を入れている分野であるため、インターンで生成AI活用を体験出来たのはとても貴重な経験だったと感じております。

私達としても、自分たちの思い描くアプリケーションを実際に実装出来たのは非常に楽しい経験でした。

このように、KDDIアジャイル開発センターには、このような社員・内定者の自主的な活動を積極的に後押しする社風があります！

今回の記事でKAGに興味を持たれた方は、ぜひ公式サイト・採用情報等もご覧ください！

https://kddi-agile.com/