TencentCloudではじめるAI Live配信

# はじめに

この記事は、[むちゃぶりにも応える開発技術があるって？！〜3つのテーマで記事を募集〜 by V-CUBE Advent Calendar 2023](https://qiita.com/advent-calendar/2023/v-cube) の24日目です。

V-CUBEさんはTencent Cloudの日本代理店で、Tencent Cloudに関わるカレンダーです。

近年、個人でも使えるライブ配信サービスは近年急激に増えてきました。
演者として、顔出しのYouTuberや、アバターを演じるVtuberのようなものがあり賑わっています。しかし、そういったサービスを自身で作成するとなると、どうでしょうか。

>②あの有名なWebサービスをTencent Cloud使って作るならどんなアーキテクチャ？
>③あの時Tencent Cloudがあったら苦労しなかった？おじさんエンジニアの昔話

お題の観点で、ここでは、TencentCloudがあったら、こんなTuberを作れるのではということを考えることにしました。そう、23年に大暴れしているAI様の登場です。エンジニアのユートピアである、AI様にご活躍していただき、全てがオートメーションで進行してくれるようなAITuberを構築できるのではないでしょうか。


# AI Live配信とは
AI Live配信（AITuber/AI VTuber）という言葉を見聞きしたことはありますでしょうか。
AI YouTuberと言い換えれば、想像つきますでしょうか。ここでは、AIによるYouTuber（リアルタイム配信者）のことをいいます。具体的には、配信中に、ユーザーからのコメントを拾い、回答を考え、文字と音声で応えることを、自動で行います。また、配信に使っているアバター画像もAI（生成AI）で作成した仮想のキャラクターを使っています。

# イメージ動画

まずは、動作動画を見てください。

<iframe width="560" height="315" src="https://www.youtube.com/embed/cdeWMRggAFs?si=4jKPIChln_j5htTJ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

日本語でのやりとりにはなりますが、いかがでしょうか。
応答速度がもっさりしている？、マシンスペックを上げたり、最新コメントを取得するポーリング時間を短くすることで、ある程度改善するとは思います。

# システム構成図

AI Live配信を実現する上でのシステム構成について、説明します。
順序は、数値１～９の流れに沿って、処理するイメージとなります。

![システムズ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/76959/96675ea8-8cd9-c60e-9452-4d8806d35764.png)

１．配信
　映像をOBS経由でストリーミング動画としてライブ配信します。
　
２．コメント入力
　YoutubeLiveを視聴しているユーザがコメント欄にコメントを入力します。
　
３．コメント取得
　定期的に、YouTubeLiveのコメントが更新されていないか確認します。
　
４．翻訳前コメント文
　ユーザからのコメント文を入力します。
　
５．翻訳後コメント文
　多言語対応を想定し、英語など入ってきても日本語に変換します。
　
６．解析前コメント文
　翻訳後コメント文をAIChatbotへの入力文にします。

７．解析後返信文
　AIChatbotが考えた返信文を受け取ります。
　
８．返信文
　配信文字を、テキストを自然な人間の声に似た音声に変換します。

９．返信音声
　音声データを受け取ります。

➡１．へ戻る
___
AI Live配信を構築・動作させる上で、Tencent Cloudがあれば、すべての処理が賄えます。
そして、サービスを動かすことで、ＡＩによるライブ配信が始まります。
以降、実現していくのに、有益なサービスについて紹介します。

# Tencent Cloud とは
Tencent（テンセント：本社：中国 広東省深圳市）が提供しているパブリッククラウドサービスプロバイダーです。
コンピューティング、ストレージ、データーベース、セキュリティー、CDN、ネットワークの高速化、ゲーム内マルチメディア、セキュリティーサポートなどの製品を提供しています。さらに、Tencent Cloudはライブブロードキャスト・プラットフォームでライブビデオ放送（LVB）機能など様々なソリューションを提供しています。

### Tencent Cloud Lighthouse
[製品概要](https://www.tencentcloud.com/jp/products/lighthouse)

次世代のOOTBなCloud Virtual Machine製品であり、軽量アプリケーションを低コストで運用できることをウリにしている製品です。OSは、LinuxやWindowsを選択可能なため、他のクラウドサービスと遜色無いです。
今回は、WindowsOSでの対応を想定しています。

### AI Chatbot
[製品概要](https://www.tencentcloud.com/jp/products/im)

チャット実装に関するサービスです。

AI Chatbotを実現す上で、公式から参考となるドキュメントがあります。
[チャットのWebhook機能を通じてAIサービス機能をTencentCloudChatに統合し、ユーザーがインテリジェントなカスタマーサービス、クリエイティブアシスタンス、作業アシスタントなどの機能を実装できるAIチャットボットを構築する方法](https://www.tencentcloud.com/jp/document/product/1047/54925)
生成AIとの連携するのもよいですよね。

### Tencent Machine Translation
[製品概要](https://www.tencentcloud.com/jp/products/tmt)、[ドキュメント](https://machinetranslate.org/tencent#language-support)

文字の翻訳をしてくれるサービスです。
多言語対応を想定し、特定の言語（例えば日本語）に変換してから、AIのChatbot機能へ渡すことで、脳みそを特定言語にチューニングするわけです。そして、返答前に、再度入力言語に変換すれば、質問者と同じ言語で返すことが可能となります。
現在、相互翻訳は、19言語をサポートしています。海外対応、ばっちりですね。

### Text to Speech
[製品概要](https://www.tencentcloud.com/jp/products/tts)、[ドキュメント](https://cloud.google.com/text-to-speech/docs/voices?hl=ja)

テキストを擬人化した音声に変換するサービスです。
自然な人間の声に似た生の音声データを作成してくれます。Neural2、Studio、標準、WaveNetがあり、料金が異なる高品質の音声サービスも選択が可能です。
日本語で選べる声色が11種類もあります。当然、海外対応も、ばっちりですね。

# その他のテクノロジー
### obs-websocket
[プラグイン](https://github.com/obsproject/obs-websocket/releases)

Python言語で、OBSを外部から制御する obs-websocket(プラグイン)を導入します。これを導入することにより、WebSocketを用いた通信でOBSの様々な制御が行えるようになります。今回、Live配信の画面は、OBSで作成しており、ユーザからの質問や、AI Tuberの応答を、Python言語を使い、メッセージの書き換えをしています。

### YouTube Data API
[概要](https://developers.google.com/youtube/v3/docs/commentThreads/list?hl=ja)、[参考：PythonでYouTubeのコメントを取得](https://qiita.com/shirayuca/items/0318ee7ac92953a42375)

Python言語で、YouTubeLive配信中のコメントを取得するために、YouTube Data APIを使います。


# おわりに
いかがでしたでしょうか。
AI Live配信を、構築するイメージを持っていただけたのではないでしょうか。
色々な機能を追加していき、自身でプロデュースしたものが、知らぬ間に、人気になって、一攫千金になるかも！？という妄想で良い夢見れそうですよね。Tencent Cloudには、様々なサービスを保有しているため、ホビー層でも受け入れやすいのではないでしょうか。
本記事が、皆様の刺激に繋がれば幸いです。

よりよいご意見有りましたらお待ちしております。