
D-IDと同じことをAIイラスト、AI音声、AIアバターを通してPythonで実現してみた。
D-IDという会社は、AIアバター作成のサービスを提供しています。このサービスでは、ユーザーが画像をアップロードし、その画像に合わせて音声を選択したり、話したい文章を入力すると、ウェブ上で自動で話すアバターを作成してくれます。
Pythonを使用して同様のことを実現することもできます。最初に、AIイラスト作成で、アバター用の画像を用意します。次に、AI音声で音声ファイルを作成して、アバターに話させる準備をします。最後に、画像と音声ファイルを使用して、アバターを作成することができます。
AIイラストの準備
ベースとなる画像が必要になるので、Anything v4.0で画像を作成してみます。Anything v4.0の簡単な使い方は、下記のNoteを参考にしてみてください。いきなり全部実施しようとすると、うまく行かない可能性があるので、スモールステップで進んでいくことがおすすめです。
今回は、Anything v4.0のPythonプログラムでは、256x256のjpgファイルが必要なので以下のPythonプログラムにします。
!pip install torch
!pip install --upgrade diffusers transformers scipy
!pip install datetime
from diffusers import StableDiffusionPipeline
import torch
import datetime
model_id = "andite/anything-v4.0"
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16)
pipe = pipe.to("cuda")
prompt = "masterpiece, best quality, 1girl, focus clear mouth, black hair, medium hair,looking at viewer, :3, cute, scarf, jacket, outdoors, Sampler: DPM++ 2M Karras, CFG scale: 7"
for i in range(1):
image = pipe(prompt,width=256,height=256).images[0]
timestamp = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
image.save(f"image_{timestamp}.jpg")
promptのところは、好みに合わせて、色々と指定して下さい。
今回は、こちらの画像を使用します。

AI音声ファイルの準備
アバターに話をさせる時の音声ファイルを用意します。音声ファイルは、.wav形式のファイルとなります。
音声ファイル作成の簡単なPythonプログラムは、下記の記事を参考にしてもらえればと思います。
今回は、下記のPythonプログラムを使用して、.wavファイルを作成いたします。
!pip install gTTS
from gtts import gTTS
from IPython.display import Audio
import os
# テキストを指定
text = "今回は、Pythonプログラムを使用して、AIイラスト作成、AI音声作成、AIアバター作成を体験してみました。Pythonには、様々なプログラムがあり、それらを組み合わせることで、新しいアプリケーションを作成することができます。ですので、皆さんもぜひPythonプログラムを使って、自分でAIアプリケーションを作成してみてください"
# gTTSを使用して音声を生成
tts = gTTS(text, lang='ja')
# 音声ファイルを保存
tts.save("output1.wav")
# 生成された音声を再生
Audio("output1.wav")
ここで作成された、output1.wavをダウンロードしておきます。
AIアバターの作成
AIアバターの作成では、こちらのホームページのPythonスクリプトを流用させて頂きました。
先ほど、作成したimage1.jpgとoutput1.wavを/content/MakeitTalk/examplesに配置しましょう。

実行してみますと、下記のような動画ファイルが作成されます。

動画を載せることができないですが、アバターということで口をしっかり動かさないと話をしているように見えなくなってしまいます。そのため、作成する画像は、口の輪郭がハッキリしている画像が良いです。