Blog

社内Webアプリでもずんだもんに喋ってほしいのだ

この記事は、ニフティグループ Advent Calendar 2024 19日目の記事です。

はじめに

おはようございます。IWSです。

少しいきなりにはなるのですが、みなさんはずんだもんは好きですか?好きですよね?

前々からゲーム実況の動画などで活躍していたり、「Cevio AI Song」 や 「NEUTRINO」 なども出て歌うずんだもんがいたりと見かける機会が多くなったのではないかと思います。
私も 「VOICEPEAK 東北きりたん」 を購入して一緒についてきた ずんだもん を喋らせて遊んだりしました。

ですが、喋らせて終わりでは少し寂しいし、私もずんだもんでなにかしたいなぁ〜と思ったのでちょっとやってみました。

やりたいこと

ニフティには「もじこえ」 というテキストを投稿すると音声に変換してコミュニケーションが取れる社内Webアプリがあります。(もじこえについてはぜひこちらのブログをご覧ください)

音声は Amazon Polly を使って生成しているのですが、ここにみんなが大好きな ずんだもん を追加しようというのが目標です。

イメージとしてはこんな感じでしょうか

もじこえが Node.js で作られているのでこちらもそれに合わせます。
クライアント側からテキストを送信してもらいサーバー側へ渡す。サーバー側はそれをVOICEVOXのコンテナへさらにリクエストを飛ばして音声データを生成してもらうという形です。

VOICEVOX

喋るずんだもんには「Cevio AI」や「VOICEPEAK」などありますが今回はAPIで利用したいというのもあるので「VOICEVOX」を使用します。
https://voicevox.hiroshiba.jp/

core, engine, editor の3種類がありますがAPIとして呼び出して音声合成ができればいいので VOICEVOX_engine を選んでいます。
https://github.com/VOICEVOX/voicevox/blob/main/docs/全体構成.md

Docker Hubでイメージが公開されているのがありがたいですね
https://hub.docker.com/r/voicevox/voicevox_engine
docker-compose.yml にこれを追加するだけでコンテナを立ち上げられます

ずんだもんボイスを生成しよう

VOICEVOXのAPIにリクエストを投げることで音声を生成することができます。

APIには「テキストを音声クエリに変換するAPI」と「音声クエリを音声データに変換するAPI」の2種類があり、2つのAPIをそれぞれ呼ぶことでテキストから音声データの生成までを行います
https://github.com/VOICEVOX/voicevox_engine?tab=readme-ov-file#http-リクエストで音声合成するサンプルコード

APIを呼ぶ際にクエリパラメーターで speaker={id} とすることで音声ライブラリの好きなキャラクターに喋らせることができます。3 でずんだもん、8 で 春日部つむぎ に喋ってもらうことができ、一部キャラは喋り方を変えたりもできます。(セクシーずんだもんにしたりささやきずんだもんにしたり……)

音声ライブラリの一覧はコンテナを立ち上げて /speakers にアクセスすると見ることができます。

音声合成ができたらファイルに保存しておきます。

トークンをつかって適当な名前で保存しているだけです。ファイルの保存ができたらそのファイルへのPathを返しています。

Pathを返しているのはクライアント側で /audio/${token}.mp3 を再生するという実装をしているからです。返ってきた speakUrl のURLを使用して

のようにしてあげればブラウザ側で音声が再生ができます。

コード全体

まとめ

VOICEVOXをつかってずんだもんを触ってみました。APIが提供されているおかげでもじこえに簡単にずんだもんを組み込むことができましたね。これでずんだもんライフが充実します!

ぜひ皆さんもVOICEVOXを使ってなにかやってみてください!

明日は @takatakanian さんの記事です!お楽しみに!

クレジット

VOICEVOX:ずんだもん

ニフティでは、
さまざまなプロダクトへ挑戦する
エンジニアを絶賛募集中です!
ご興味のある方は以下の採用サイトより
お気軽にご連絡ください!

ニフティに興味をお持ちの方は
キャリア登録をぜひお願いいたします!

connpassでニフティグループに
参加いただくと
イベントの
お知らせが届きます!