0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Zoom の API / SDK を使ってみよう! by ZoomAdvent Calendar 2022

Day 18

クリパと年末年始はリアルタイムボイスチェンジャーを使ってずむだもんと遊ぼう。

Last updated at Posted at 2022-12-18

はじめに

QiitaのAdvent CalendarにZoomも協賛しているということで、Qiita Engineer Festa 2022でお世話になった身ですので、微力ながらも協力したいと思い、今回も参加させていただきます。少し時間的にぎりぎりですが、一応2本書くつもり。

今回の1本目は、Qiita Engineer Festa 2022でのリベンジ企画です。前回までにZoom Meeting SDKを用いてZoomミーティングにアバターで参加する方法をいくつかご紹介してきました。そのなかで、アバターを使うのだから映像だけではなく、音声も全く自分とは違ったものにしてしまおう、という試みを行いました。結果としては、当時の私の力量不足により、リアルタイムで音声を変換することができず、音声認識+テキスト読み上げ、という方法を提案する形となりました。参考記事:Zoom Meeting SDKでなんちゃってボイスチェンジャー

しかし、昨今の技術の進展は目覚ましく、AIを用いて自分の声をほぼリアルタイムで好きな声に変換できるMMVCというソフトウェアが公開されました。今回は、これを使ってリベンジしようと思います。

なお、MMVCでは、東北応援キャラクターであるずんだもんのトレーニング用の音声が配布されているなど、ずんだもん推しな感じになっています。かわいくていいですよね。よいのですが、Zoom + MMVCで企画を考えているうちに、ずむだもん(Zoomだもん)というおやじギャグを思いついてしまい、頭を離れなくなってしまいました。ということで、タイトルは「ずむだもんと遊ぼう」となっています。そして、下記がZoomを使うずんだもんをStable Diffusionに書いてもらった結果です。いつの日かZoomとずんだもんでコラボしてほしいですね。

image

ということで、今回作るものはこんな感じのものです。かなりいい感じに音声変換できているのではないでしょうか。

ソフトウェアの構成

前回までは、テキストから生成された音声ストリームをZoom Meeting SDKにわたす構成にしていました(参考)。今回は、マイクから入力された音声ストリームから別の音声ストリームを生成し、Zoom Meeting SDKにわたす必要があります。

これを行うために、本アプリケーションでは、Zoom Meeting SDKの外側で、予めマイク入力から音声ストリームを取得しておきます。取得した音声ストリームは、サーバとして稼働するようにエンハンスしたMMVCに転送し変換を行います。Zoom Meeting SDKがマイク入力を要求した際には、この変換後の音声ストリームをわたすようにします。これにより、MMVCで変換した音声をZoom Meetingに乗せることができるようになります。

image

そのほか、前回は3Dアバターを使用していましたが、ずんだもんになるということで、ずんだもんの映像をZoom Meeting SDKにわたすようにしています。このずんだもんの映像は音声に合わせて口を動かします。この辺のつくりは、以前の3Dアバターを使用した時に紹介した方法とほぼ同じですので、そちら記事を参照してください。

使用方法

事前準備1

使用するためにはZoom Meeting SDKのSDK KeyとSDK Secretが必要になります。
こちらの記事を参考に取得してください。SDK Keyと SDK Secretの管理には十分にご注意ください。

事前準備2

本アプリケーションはGithubのリポジトリに公開しています。
使用するためには、MMVCのAIモデルをトレーニングしてご準備いただく必要があります。MMVCのAIのトレーニング方法は公式のページを参照いただくか、こちらのヘルパーアプリケーションでご紹介している方法で行ってください。なお、今回のアプリケーションで使用しているサーバ化されたMMVCはこのヘルパーアプリケーションの一部です。

音声サーバの起動方法(MMVCサーバ)

本アプリケーションは、リアルタイム音声変換にMMVCのサーバを利用します。このサーバを起動するには次のコマンドで行ってください。

$ git clone --depth 1  https://github.com/w-okada/voice-changer.git -b z001_qiita_advent_calendar_2022_zoom
$ cd voice-changer
$ bash start2.sh MMVC

GPUが無い環境で起動させる場合は、最後の行を次のように置き換えてください。

$ USE_GPU=off bash start2.sh MMVC

音声サーバの起動方法(Voicevox)

リアルタイム音声変換以外にも、Voicevoxを用いたテキスト読み上げ、Google Speechを用いた音声認識+Voicevoxで音声データの生成を行うこともできます。Vocievoxの起動には次のコマンドを用いてください。

$ docker run --rm --gpus all --entrypoint="" -p 50021:50021 voicevox/voicevox_engine:nvidia-ubuntu20.04-latest gosu user /opt/python/bin/python3 ./run.py --use_gpu --voicelib_dir /opt/voicevox_core/ --runtime_dir /opt/onnxruntime/lib --host 0.0.0.0 --cors_policy_mode all

GPUが無い環境で起動させる場合は、次のコマンドで実行してください。

$ docker run --rm -it --entrypoint="" -p '50021:50021' voicevox/voicevox_engine:cpu-ubuntu20.04-latest gosu user /opt/python/bin/python3 ./run.py --voicelib_dir /opt/voicevox_core/ --runtime_dir /opt/onnxruntime/lib --host 0.0.0.0 --cors_policy_mode all

GUIの起動

また、アプリケーション本体はGithub pagesにホストしています。
次のアドレスにアクセスしてください。

Zoom Meeting Plus

下の画面が出てきたらClick to startを押してください。

image

下の画面に遷移したら「会議室でのユーザ名」「ミーティング番号」「ミーティングのパスワード」「SDK Key(前述したもの)」「SDK Secret(前述したもの)」を入力してEnterを押してください。

image

下の画面が出たらjoinボタンを押してください。Zoom会議に参加できます。

image

画面右側のパネルでは各種操作が可能になっています。

下の部分では、Zoomミーティングに送信される画面が表示されています。画像下のボタンでアバターの動作を変えることができます。また、音声を発しているときには自動的にtalkin状態になります。

image

下の部分ではリアルタイムボイスチェンジャ(MMVCサーバ)の各種制御が行えます。

image

下の部分ではVoicevoxの各種制御が行えます。またGoogle Speechによる音声認識+Voicevoxでの音声発話も可能です。

image

終了処理

今回のブログ向けに作成したβ版となります。音声サーバの起動方法はcorsの制約を緩めています。使用終了したらサーバを落としてください(ctrl+c)。

デモ

MMVCを使ったデモとVoicevoxを使ったデモです。音質の面ではVoicevoxはさすがという感じです。MMVCはまだまだという感じですが、これはモデルのトレーニングの仕方でもう少し向上できると思います。また、MMVCは、現在さらなる品質向上を目指して鋭意開発が進められているので、さらに良くなるはずです。今後が楽しみです。

リアルタイムボイスチェンジャ(MMVC)

Text-to-Speech(Voicevox)

リポジトリ

デモのリポジトリはこちらです。

さいごに

以上、Zoom Meeting SDKにリアルタイムボイスチェンジャを組み込んでみました。MMVCのようにリアルタイムで精度の高い音声変換がでてくると、こういったアプリケーションがどんどん出てくるのではないかと思います。今回の記事がその先駆けとなってくれればいいなと思います。

それはさておき、今年のクリパや年末年始にZoomでパーティーを企画されている方は是非使ってみてください。盛り上がること間違いなし。

今回使ったMMVCサーバや、それにアクセスするためのTypescriptのクライアントは下記のリポジトリで公開されています。興味を持たれた方は是非ご活用ください。

宣伝

弊社 FLECT は、Salesforce を中心に AWS, GCP, Azure を用いたマルチクラウドシステムの提案、開発を行っております。 また、ビデオ会議システムについては、Zoom SDK, Amazon Chime SDK, Twillio など各種ビデオ会議用 SDK を用いたシステムの開発しており、サービス化の実績も多数あります。 ご興味をお持ちいただけたら是非ご相談ください。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?