追加ソフトのインストール無しで、ボイスロイド品質のTwitchチャット読み上げを行う。

概要

先日、棒読みちゃんなどのインストール無しで簡単にTwitchチャットの読み上げを行うという記事を書いた。この記事では、StreamLab の Chat Box と、Web Speech API を組み合わせることで、追加のソフトウェアをインストールすることなく、Twitch チャットの読み上げを行う方法を書いた。

上記の方法を応用すると、Twitch チャットの情報を Web Speech API に限らず、Web API として提供される任意の読み上げエンジンに渡すことができる。NTT ドコモが提供する音声合成 API を利用して読み上げられないか試してみたところ成功したので、その記録を公開する。なおこの API では、株式会社エーアイ、すなわちボイスロイドを提供している企業による音声合成エンジンを利用することができる。特に、「結月ゆかり」「弦巻マキ」「月読アイ」の3名はほぼ同等の音声が利用できることを確認した。

以下に実際に読み上げを行ったデモ動画を示す。左側には Twitch を開いており、右側には設定を行った StreamLabs Chat Box を表示している。どちらも Chrome 上で表示している。Twitch のチャットに書き込むと(0:03 周辺)、Chat Box にも書かれた文章が表示され、読み上げられていることが分かる。

設定方法

1) docomo Developer Support ページに登録して 読み上げAPI の API キーを取得することと、2) StreamLabs Chat Box を設定する 2つのステップに分け、以下で読み上げるまでの具体的な流れを説明する。

1. API キーを取得する

今回取り上げた音声合成 API を利用するためには、音声合成 API を利用するための API キーを取得する必要がある。このためには、docomo Developer Support へのアカウント作成と、アプリケーション登録が必要になる。まずはアカウントの作成を行う。

docomo Developer Support を開き、上部にある、「ログイン/新規登録」ボタンをクリックする。Facebook や Google のアカウントで登録することもできるし、メールアドレスとパスワードを入力して登録することもできる。好きな方法で登録する。ぼくは Google のアカウントで登録した。

docomo Developer Support のトップ画面。ログインボタンの位置を赤線で囲って示した。
docomo Developer Support のトップ画面。ログインボタンの位置を赤線で囲って示した。

作成したアカウントで docomo Developer Support にログインし、アプリケーション登録を行う。サイト上部の「マイページ」をクリックし、「API 利用申請・管理」→「新規 API 利用申請」と進む。

docomo Developer Supportマイページの画面。新規API利用申請画面を開くためにクリックすべき部分を赤線で囲って示した。
docomo Developer Support マイページの画面。新規 API 利用申請画面を開くためにクリックすべき部分を赤線で囲って示した。

新規 API 利用申請画面には、いくつかの入力項目があるが、入力が必須である項目について、上から順に説明する。

  • アプリケーション名: 適切な任意の名前を設定する。例: 「Twitch 読み上げ」
  • アプリケーション概要: 適切な任意の概要を入力する。例: 「映像配信サイトTwitchのコメントを読み上げます」
  • サービス開始予定日: 今日の日付を入れておけばいいのではないだろうか
  • アプリケーションタイプ: 「ウェブアプリケーション」を選ぶ
  • コールバックURL: 説明中にあるダミー値(https://dummy)を入力する
  • 提供者名: 利用者の名前やハンドルネームを入力する
  • メールアドレス: 利用者メールアドレスを入力する

なお、今回の利用方法では OAuth で他の人を認可することはしないため、提供者名やメールアドレスを第三者が見ることはないと思われるが、ぼくは一応ハンドルネームで登録した。入力が終わったら「API 機能選択へ」をクリックして次の画面へ進む。

新規API利用申請画面の様子。入力すべき項目がいくつかある。
新規 API 利用申請画面の様子。入力すべき項目がいくつかある。

「API 機能選択」画面では、登録したアプリケーションで使う API を選択する。今回はもちろん「音声合成【Powered by エーアイ】」を選択する。この時、ついでに「音声合成【Powered by NTTテクノクロス】」も選択してもいいかもしれない(本記事では後者の使い方の説明はしないが、知識のある人はAPI リファレンスを見ながら試してみるのもいいだろう)。API を選択したら、確認画面を経て登録を完了させる。審査後に API キーが発行されると書かれているが、ぼくの場合は即座に審査が終わった。

利用するAPI。【Powered by エーアイ】を選択する。音声合成【Powered by NTTテクノクロス】も選択した。
利用する API を選択する画面。【Powerd by エーアイ】を選択する。音声合成【Powered by NTTテクノクロス】も選択した。

審査が完了した後、再度マイページ内の「API 利用申請・管理」を見ると、登録アプリケーション一覧内に先ほど登録したアプリケーションが表示されているはずだ。この中に "API key" という項目が表示されているはずなので、これを控えておく。

審査が完了すると、マイページに API キーが表示される。
審査が完了すると、マイページに API キーが表示される。

2. StreamLabs Chat Box を設定する

次に StreamLabs Chat Box を設定する。ほとんどの部分は前回の記事(棒読みちゃんなどのインストール無しで簡単にTwitchチャットの読み上げを行う)で説明しているのでそちらを参照してほしい。

注入するカスタムコードの部分を、今回利用する API に合わせて変更する必要がある。入力すべきは以下だ。コード中の「ここにAPIキーを貼る」は、上記までで手に入れた API キーに置き換えてほしい。

(表示されない場合、Gistへのリンクはこちら

コードを簡単に説明すると、Twitch チャットから取得した文字列から、SSML と呼ばれる XML 形式の読み上げ内容記述を作成し 音声合成 API に渡している。API からは、符号付き 16 ビット、つまり -32768 ~ +32767 の範囲で表現された音声波形が返されるので、これを -1 ~ +1 の範囲にスケールして Web Audio API で再生している。

上記のコードでは、弦巻マキの(ような)声で読み上げられる。API リファレンスに従い、対応している他の話者名に変更することができる。なお、sumireが結月ゆかり、makiが弦巻マキ、anzuが月詠アイの(ような)声になっている。

上記の設定をすることで、Chat Box をブラウザで開いておけば、Twitch で入力されたチャットがそのブラウザ内で読み上げられることになる。なお、前回の記事で

この Chat Box は Streamlabs OBS で挿入される Chat Box と共通である。このことを考えれば、Streamlabs を起動して配信するだけで、別でブラウザを立ち上げることなく読み上げができそうだが、Streamlabs の内蔵ブラウザが読み上げに対応していないのか、音声が再生されなかった。

と書いたが、今回の方法ではブラウザの機能を使わず、 API から取得した音声データをそのまま再生しているので、OBS 上で Chat Box を表示すれば読み上げが行われる。つまり、配信する際に OBS さえ開けば、他に(ゲーム以外)何のソフトも起動することなくチャットを読み上げてくれて便利だ。

懸念事項

今回利用した音声合成 API だが、共通ガイドライン を読むと分かる通り、あくまで開発目的での利用のために API キーが発行されている。また、個別ガイドライン によれば、この API を利用したアプリケーションは無償で提供しなければならない(広告収入も不可)とされている。

1. 本APIを用いたアプリケーションは無償で提供すること。

2. 本APIを用いたアプリケーション内で広告収入を含む収益行為を行わないこと。

音声合成 | docomo Developer support | NTTドコモ

この規定は、API を使ったアプリケーションを他のユーザーに利用させることを想定しているようなのだが、今回のように API からの結果をそのまま利用する場合、どのように扱われるのかは分からない。特に、収益を目的としている配信者は商用利用とみなされるかもしれない。商用目的とみなされた場合、本登録申請を依頼される可能性があるそうだ。なお、本登録をする場合は企画書を含む審査書類の提出が必要なようで、難易度が高いようにみえる。

開発用 API キーに有効期間がない API についても、商用利用時に「本登録申請」を行う必要があり ます。「本登録申請」を行わずに商用利用されている場合、ドコモから「本登録申請」を依頼するご連絡を させていただくことがございます。商用利用とは、開発、検証目的以外でのアプリケーション利用を言い、 Google Play※、App Store などのアプリケーションマーケットへの登録、ウェブサイト上での一般公開、社 内利用などを含みます。 API共通ガイドライン_v2.0.9  p.4

おわりに

本記事では、NTT ドコモ が提供する音声合成 API を利用して、Twitch のチャットを読み上げる方法を説明した。今回説明した方法を使えば、OBS 以外に何も起動することなく、品質の高いチャット読み上げを行うことができる。複数の話者が利用可能であり、コード上で簡単に切り替えられるため、ランダムに話者を切り替えたり、発言者によって話者を切り替えるといった応用も可能だろう。本記事内では利用することに重点をおき、コードの説明に関しては省略したが、詳細をは後日別記事で解説するかもしれない。

上に書いた通り、開発用ライセンスの使用範囲は懸念点だ。かなり便利なので、手が届く範囲であれば課金してもいいぐらいだと個人的には思っているのだが、価格が公開されておらず、また申請の手順も主に法人向けで「ちゃんとした」アプリケーションしか対象とされていないように見える。音声合成 API に限らず、他にも楽しそうな API がいろいろと提供されているので、個人で遊ぶ程度でもカジュアルに本申請できるようになれば良いなと思う。(でもお金にならないよね...。わかる...(๑´•.̫ • `๑))

宣伝

これは本題とは全く関係のない宣伝だが、複数のFPSタイトル(現在のところ、Rainbow Six Siege、Overwatch、PLAYERUNKNOWN'S BATTLEGROUNDS)のレーティングを自動でまとめることができるサイト、8quad というサイトを作ったので、FPSを遊ぶ方はぜひ使ってみてほしい。


参考文献

  1. github:Leko/WEB-EGG docomoの音声合成APIを利用して無料でVOICELOIDっぽい声を生成してみる
  2. 音声合成 | docomo Developer support | NTTドコモ
  3. audio - Play PCM with javascript - Stack Overflow
  4. AudioBuffer.getChannelData() - Web API | MDN