テキスト入力した文章をVoiceTextで音声合成して、SlackやDiscordのマイク入力に流してみました
始めに
この記事は以下のような人向けです。
- PC(Windows)で、SlackやDiscordを使用している人
- ビデオ/音声通話の参加時に、テキスト入力した内容を音声合成で喋らせたい人(別アプリにテキスト入力した内容を音声合成します。SlackやDiscordにテキスト入力した内容を喋らせるという意味では無いので注意)
- 音声合成のWebAPIの利用規約を読んで理解でき、ルールを守れる人
- ある日突然利用できなくなっても泣かない人
設定方法は結構面倒です。利用する為のハードルは高いと思います。
以前書いたブログ記事に、Discordのマイク入力に音声合成を利用したい場合はどうしたら良いかとコメントを頂いてました。私自身もそのような使い方をしたいと思っており、多少は需要はあるように思いましたのでまとめてみました。ただ、とりあえず試してみたい方でも、最後まで記事を読んでから使えるかどうか判断してもらった方が良いとは思います。
使用する音声合成サービス
恐らく有料版の方のWebAPIでも利用可能と思われますが、今回は無料版のWebAPIを使った方法を書いて行きます。ちなみに無料版で使用できる話者は以下の6人です。
- Show
- Haruka
- Hikari
- Takeru
- Santa
- Bear
ちょっとだけ技術的な話
Skybeje.SpeakerというWindowsのネイティブアプリ使います。
(HOYAのWebAPIを呼び出すプログラムでC#で作りました。オープンソースです)
以下はSlackやDiscordのマイクに音声が流れるまでの簡単なフローです。
- Skybeje.Speaker が、HOYAのWebAPIをコールして音声データを取得
- Skybeje.Speakerが、仮想スピーカーに対して音声を再生(※)
- NETDUETTOが、仮想スピーカーから仮想マイクに音声を流す(※)
- SlackやDiscord上のマイク入力デバイスに仮想マイクを選択する(※)
- SlackやDiscordのマイク入力に、仮想マイク経由で音声が流れる
(※)仮想スピーカー/仮想マイクという表現は正しくないかもしれません。
環境設定方法
1.YAMAHAの「NETDUETTO」をインストールする。
2.HOYAの「Voice Text Web API」の利用登録をする。
3.「Skybeje.Speaker」をダウンロードする。
ここからダウンロードできます。ダウンロードしたZipを解凍し、「Skybeje.Speaker.exe」をクリックすると「WindowsによってPCが保護されました」という青いパネルのメッセージ表示されて実行できないと思います。これは署名の無いWindowsアプリの為です。
パネル左側の「詳細情報」をクリックするのことで「実行」ボタンが表示されて起動できるようになります。一回その手順で実行すると、次回からは普通に起動できるようになるのですが「このアプリ本当に大丈夫なの?」と不安になると思いますし、そう思うのが当然です。ですが正式なコード証明書はSSL証明書よりも遥かに高いみたいで、ちょっとしたフリーソフトやOSSに適用するには厳しいのです。
不安な人は、プログラム自体は以下のGitHubに公開していますので、Visual Studioを使って自分でビルドしてexeを作るのが良いかなと思います。自分自身でビルドしたexeの場合は警告がでません。但しビルドの方法等は自分で調べてください。github.com
音声合成サービスの動作確認
Skybeje.Speakerを起動すると、以下の画面が表示されます。
- 普段音を再生しているスピーカーデバイスを選択します。
- 「ライン(Yamaha NETDUETTO Driver)」を選択します。
- HOYAのWebTextのAPIキーを入力します。
- 「Sample Voice」をボタンを押します。
Showの声で"VoiceTextの音声合成サンプルです"と①で選択したスピーカーから聞こえれば成功です
※ちなみに中央タブの「AITalk」は、DocomoのDeveloper support経由でのWebAPI利用が出来なくなった為、現在利用できなくなっています。
とりあえず Slack / Discordのマイクに音声を流す方法
サンプルボイス再生デバイスにて「NETDUETTO」を選択します。
Slackのマイク側にも「NETDUETTO」を選択します
※通常のマイクは無効になり喋っても相手には聞こえなくなる事に注意してください。
普通のビデオ通話に戻したい場合は設定を元に戻す必要があります。
Discordの場合、ユーザー設定の「音声・ビデオ」から
以下の入力デバイスに「NETDUETTO」を選択します
後は、Slackのビデオ通話やDiscordの音声通話の時に、Skybeje.Speakerのサンプルボイス(赤枠)の部分に、発言したい文章を入力して「Sample Voice」ボタンを押せばOKです。
マイクに音声を流しつつ、自分でも聞こえるようにする方法
NETDUETTOのデフォルトの設定だと、再生デバイスに「NETDUETTO」が選択されていると、自分自身には音声が聞こえなくなります。ちゃんと音声合成されているかのか、相手にどのように聞こえているか不安になると思いますので、マイクに音声を流しつつ自分でも音声を聞こえる設定にする方法です。
どこからでも構いませんがWindowsの「サウンドの設定」を開きます。
※ 画像ではコルタナに「サウンドの設定」と入力して開いています。
録音のライン(NETDUETTO)を選択します
「聴く」タブの「このデバイスを聴く」にチェックを入れるとSlackやDiscordのマイクに音声合成音を流しつつ、自分のPCのスピーカーからも音声合成音が聞こえるようになります。
Skybejeで音声合成を利用する
Skybeje.Speakerは名の通り、私が開発しているSkybeje(チャット/ビデオ通話サービス)で利用する事を目的として作ったツールです。Skybeje経由で使用するともっと便利で入力しやすい形にできるのですが、また色々と設定が必要になって面倒です。
大抵の人は、ここまでの設定で十分だと思われますので、Skybejeでの利用方法は別途また記事を書きたいと思います。
ちなみに共通設定の「クリップボードを監視」や、VoiceTextタブの「VoiceCode」というは、Skybejeで音声合成する為のものです。ですが、Skybejeを使わなくても、開発者の方であれば、入力補助の為のツールは結構簡単に作れると思います。
前述の設定が全て完了していて、音声合成ができる状態の人は「クリップボードを監視」にチェックをいれて、以下の文字列をコピーしてみてください。
{"Speaker":"Hikari", "Emotion":"Default", "EmotionLevel":"Default", "Volume":80, "Speed":90, "Pitch":100, "VoiceType":"VoiceText", "Message":"あとは分かるよね?"}
こんな感じの仕組みで、クリップボード経由で、Skybeje(ブラウザ)から音声合成音の指示をSkybeje.Spekaerに出して音声合成してます。
最後に
最初にも書きましたが、この方法はいつまで使えるか正直分かりません。
HOYAのVoiceTextも、基本的には有料版の利用を前提としたお試し用として公開しているように思います。またYAMAHAのNETDUETTOは、新サービスへの移行に伴い2020年秋頃にサービスを終了するそうです。www.netduetto.net
アプリ自体はダウンロード済みであればそのままこういった使い方はできるとは思われます。また新サービスのSYNCROOMでも同様の使い方ができる可能性もあるとは思います。いずれにしても今後どうなるかはちょっと分からないですね。
ただ、新型コロナウィルスの影響で、テレワークの人が一気に増えて、まさに「今」困っている人が多いだろうと思いました。小さい子供がいる家庭も多いでしょうし、様々な家庭の事情があって、仕事に関係の無いノイズが入るケースもあると思います。
そういった場合に、音声合成でテレワークに参加できれば、お互いに気を使わずに仕事に集中できるケースもあると思い、このようなブログ記事をまとめてみました。
Discordは仕事に使わんだろ!というツッコミもあるかも知れませんが、個人的にはDiscordでテレワークも有りなんじゃないかなと思っています。
以上。最後まで読んで頂き、ありがとうございました。