マジセミドライブ
ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。
AIツール実験室
2023.10.20
【AIツール実験室】アバタートーク動画生成AIツール「 Creative Reality Studio 」②API編🗣
コンテンツ
はじめに
ごあいさつ
日本全国の「APIでアバタートーク動画を作成したい勢」のみなさま、
おつかれさまです。
「マインクラフト」累計販売本数3億突破!
→「マイクラ」累計販売本数3億突破! 公式ブログで15年を振り返る
・ツルハシ総制作数=1500万個
・ダイヤモンド発見数=670万個
「マインクラフト」は、やったことがなく、
「ドラゴンクエストビルダーズ1」をちょっとだけやったくらいなのですが、
はまるとすごいおもしろそうなゆえに手を出していない、
マジセミ担当者Aでございます。
今回の作戦
今回は、
「API」でアバタートーク動画生成AIツール「Creative Reality Studio」を使ってみる
という企画です。
コードから制御できると、
より活用できる幅が広がりそうですね。
前回までのあらすじ
→【AIツール実験室】アバタートーク動画生成AIツール「Creative Reality Studio」①Web編🗣
ご注意点
※本記事は、担当者Aの主観により作成されていますので、なにとぞ、そういうことでよろしくお願いします。
※使用してみる場合は最新情報をご確認ください。
「Creative Reality Studio」API機能まとめ
「Generative AI API」とは
「Generative AI API」を使用することで、
「Creative Reality Studio」で作成する動画を、
シームレスに「コンテンツ」や「プロダクト」に追加できます。
リアルタイムアニメーション生成
・オーディオファイルからのビデオ同期生成をサポート
・レンダリング時間=100FPS :リアルタイムより4倍高速
・数万のリクエストを並行処理
・これまでに1億5000万以上の動画を生成
ステップ①キャラクター画像をセット
・任意の顔画像を使用して、簡単なAPIリクエストで会話させる
・人間味がある魅力的なプレゼンテーションが可能
・コスト効率が高いビジネスコンテンツに
ステップ②音声を選択
・AIプレゼンターに音声を与える
・数百のテキスト読み上げオプションを選択可能
・独自音声データのアップロードもサポート
・100以上の言語に対応
ユースケース
・AIチャットボットと統合
・対面でのCX会話を作成
・リアルタイムのビデオ通話アバターを作成
・キャラクターベースのオンラインゲームに追加 など
オフィシャルサイト
APIガイド
→docs.d-id.com →reference →get-started
API料金プラン
アニメ調イラスト風「マジセミちゃん」(仮)を創造します→フォトリアルになりました
作戦
前回の①Web編では、
アニメ調イラスト風マジセミちゃん画像の生成は、
断念という結果でしたが、
再チャレンジです。
DALL·E 3
「ChatGPT4経由」or「Bing経由」で、
「DALL·E 3」で作成してみます。
画像生成プロンプト作成用プロンプト
■指示
「DALL·E 3」で、
以下のイメージ画像を作成するための「英語プロンプト」を作成してください。
■利用用途
作成した画像を、
「Creative Reality Studio」に登録して利用します。
https://www.d-id.com/creative-reality-studio/
■作成オーダー
・アニメイラスト調
・背景は白色無地
・登場人物の数=1名
・画像中央に直立している
・カメラ目線
・手には何も持っていない
・口を閉じている
・口元を隠さない
・画像サイズ=正方形
■作成キャラクターのイメージ
①女子生徒
・日本の学校に通う 女子生徒
・テクノロジーに興味津々
②ベースカラーは青
・「青色の光線エフェクト」や「アクセント」をキャラクターの衣装やアクセサリーに取り入れる
③スマイル
・明るい表情
・笑顔
・目はキラキラしている
・ポジティブなエネルギー
■顔認識
「人間の顔」として認識される画像を作成してください。
画像生成プロンプト
Create an anime-style illustration of a female student who attends a school in Japan and is fascinated by technology. She should be standing upright in the center of a square image with a plain white background. She is looking directly at the camera, not holding anything in her hands, and her mouth is closed but not covered. She has a bright, smiling expression with twinkling eyes and radiates positive energy. Incorporate blue light effects and accents into her clothing and accessories. Make sure the image is recognized as a human face.
新たなフォトリアル「マジセミちゃん」(仮)できました!
今回のマジセミちゃん(仮)は・・・
前回よりも、
「電子の妖精感」があり、
「マジセミちゃん感」が強まっていて、
なかなかよろしいのではないかと思います。
Step①「APIキー」を生成します
GENERATE NEW KEY
「Account settings」ページで、
「GENERATE NEW KEY」ボタンをクリックします。
→studio.d-id.com →account-settings
APIキーが表示されます
コピペして、大事に保管します。
【参考】APIリファレンスページ「Basic Authentication」
→docs.d-id.com →reference →basic-authentication
【詰まり事案】[username]には何を入れればよいのだ?問題
APIでの呼び出しには、
[username]+[password]での認証が必要です。
よくあるパターンで、
[username]=登録されているメールアドレス
[password]=生成されたAPIキー
なのかなと思い、
いろいろやってみても、
認証エラーコード(401)が返ってきてしまうのです😢
いったい、[username]に何を入れればよいのだろうか?と、
しばらく、半泣きになりながら、さまよっていたところ・・・
ついに、
[username]を発見しました!
なんと、
[username]は「APIキー」に含まれていたのです!!
「APIキー」は、
xxxxxxxxxxxxxxxxxxxxxxxxx:yyyyyyyyyyyyyyyyyyyyy
という構造で、
真ん中に「:」があります。
つまり、
[username]=xxxxxxxxxxxxxxxxxxxxxxxxx
[password]=yyyyyyyyyyyyyyyyyyyyy
だったのです!
なんたる巧妙なトラップ!!
なんということでしょう。
『[username]には何を入れればよいのだ?』と、
さまようAPI使い同志に、
次の言葉を伝えます。
『よくよく見たら、リファレンスページに書いてありましたよ。』と👍
Step②API実行環境「Google Colab」を準備します
「Google Colab」ノートブック
ノートブックを新規作成
「Google Colab」ページを開きます。
「ファイル」→「ノートブックを新規作成」をクリックします。
ノートブックタイトルを設定しておきます。
例:「Creative Reality Studio」API機能テスト
Step③API呼び出しPythonコード作成
困難なるコード作成
参考にできる資料ページが少ないという厳しい状況下において、
ChatGPT4と熟議熟考を重ね、
いろいろな事件が発生した結果、
とりあえず出来たPythonコードがこちらとなります。
※APIキーは伏せ字にしてあります。
Pythonコード(Ver1)日本語会話版
# requestsライブラリをインポート import requests # D-ID APIのエンドポイントURLを設定 url = "https://api.d-id.com/talks" # リクエストのペイロード(送信データ)を設定 payload = { "script": { # スクリプトのタイプをテキストとして設定 "type": "text", # 字幕を無効に設定 "subtitles": False, "provider": { # 音声合成プロバイダーをMicrosoftとして設定 "type": "microsoft", # 音声を日本語(NanamiNeural)に設定 "voice_id": "ja-JP-NanamiNeural" }, # SSML(音声合成マークアップ)を有効に設定 "ssml": True, # 読み上げるテキストを日本語に設定 "input": "これは、Pythonコード(Ver1)日本語会話版です。" }, "config": { # 出力フォーマットをMP4として設定 "result_format": "mp4", # 全身が表示されるように設定 "stitch": True }, # アニメーションする画像のURL "source_url": "https://majisemi.com/topics/______import/2023/10/majisemiChan2.jpeg", # 動画のタイトルを設定 "name": "Pythonコード(Ver1)日本語会話版", # 動画を永続的に保存するかどうかを設定(Trueで保存) "persist": True } # リクエストヘッダーを設定 headers = { # JSON形式でのレスポンスを要求 "accept": "application/json", # 送信するコンテンツのタイプをJSONとして設定 "content-type": "application/json", # 認証情報 "authorization": "Basic ●●●●●:▲▲▲▲▲" } # POSTリクエストを送信してレスポンスを受け取る response = requests.post(url, json=payload, headers=headers) # レスポンスからJSONデータを取得 response_data = response.json() # JSONデータから作成された動画のIDを取得 talk_id = response_data.get('id', '') # 作成された動画のIDを出力 print(f"Created Talk ID: {talk_id}")
Step④APIから動画を生成します
①「Google Colab」でコードを実行します
(1)「Google Colab」ノートブックに、Pythonコードを貼り付けます。
(2)三角の実行ボタンをクリックして、実行します。
②戻り値を確認します
5秒もあれば、完了します。
>Created Talk ID: tlk_C3fhxw29ZmvrehKKptwh8
「作成された動画のID」が出力されたら、成功です。
このようなタイプではない戻り値の場合は、
おそらく失敗しています。
※「日本語で表現できないテキスト」があったりするかもしれません。
Step⑤生成された動画を確認します
生成されました
動画タイトルを付けておかないと、
わけがわからなくなります。
それでは「APIで生成された動画」をご覧ください
とうとうできました
コードから実行できるので、
動画自動生成工場になれてしまうわけですね。
※有り余るクレジットがありさえすればですが・・・。
【改善版】Happyバージョン
作戦
Happyにしてみます。
【ご参考】「expressions」パラメータ
このパラメータは、顔の表情を制御するために使用されます。
・expressions: 表情の配列を指定します。
・start_frame: 表情が開始するフレームを指定します。
・expression: 使用する表情の種類を指定します(例:happy, surprise)。
・intensity: 表情の強度を0から1.0の範囲で指定します。
Pythonコード(Ver2)Happyバージョン
# requestsライブラリをインポート import requests # D-ID APIのエンドポイントURLを設定 url = "https://api.d-id.com/talks" # リクエストのペイロード(送信データ)を設定 payload = { "script": { # スクリプトのタイプをテキストとして設定 "type": "text", # 字幕を無効に設定 "subtitles": False, "provider": { # 音声合成プロバイダーをMicrosoftとして設定 "type": "microsoft", # 音声を日本語(NanamiNeural)に設定 "voice_id": "ja-JP-NanamiNeural" }, # SSML(音声合成マークアップ)を有効に設定 "ssml": True, # 読み上げるテキストを日本語に設定 "input": "Pythonコード(Ver2)Happyバージョン" }, "config": { # 出力フォーマットをMP4として設定 "result_format": "mp4", # 全身が表示されるように設定 "stitch": True, # 表情を設定 "driver_expressions": { # 表情の配列を設定 "expressions": [ { # 表情が開始するフレームを設定(0は動画の開始) "start_frame": 0, # 使用する表情の種類を設定(ここでは「happy」) "expression": "happy", # 表情の強度を設定(1は最大の強度) "intensity": 1 } ] } }, # アニメーションする画像のURL "source_url": "https://majisemi.com/topics/______import/2023/10/majisemiChan2.jpeg", # 動画のタイトルを設定 "name": "Pythonコード(Ver2)Happyバージョン", # 動画を永続的に保存するかどうかを設定(Trueで保存) "persist": True } # リクエストヘッダーを設定 headers = { # JSON形式でのレスポンスを要求 "accept": "application/json", # 送信するコンテンツのタイプをJSONとして設定 "content-type": "application/json", # 認証情報 "authorization": "Basic ●●●●●:▲▲▲▲▲" } # POSTリクエストを送信してレスポンスを受け取る response = requests.post(url, json=payload, headers=headers) # レスポンスからJSONデータを取得 response_data = response.json() # JSONデータから作成された動画のIDを取得 talk_id = response_data.get('id', '') # 作成された動画のIDを出力 print(f"Created Talk ID: {talk_id}")
それでは「Happyバージョン」をご確認ください
Happyに変わりました?
そこはかとなく、
Happyになっている気がします。
なってますよね?
【ご参考】APIリファレンスまとめ
概要
ChatGPT4にまとめてもらいました。
※ご利用時には、最新のリファレンスを参照してください。
多くのパラメータがありますね。
使えこなせば、いろいろなことができそうです。
APIリファレンスまとめ(2023/10/19時点)
VIDEO ENDPOINTS
パラメータ名 | パラメータの説明 |
---|---|
source_url | アニメーションするソース画像のURL、または提供されたスタジオ俳優のリストからの選択 |
driver_url | トークを制御するドライバービデオのURL、または提供されたドライバーのリストからの選択。提供されていない場合、事前定義されたドライバーバンクからドライバービデオが選択されます。 |
script | テキストまたはオーディオスクリプト(必須) |
config | 高度な設定オプション(オブジェクト) |
user_data | トークレスポンスとWebhookに追加される非機密のカスタムデータ(文字列) |
name | トークビデオの名前(文字列) |
webhook | ペイロード(アニメーションの詳細を含む)を送信するWebhook URL |
result_url | トークビデオのURL。提供されていない場合はデフォルトの宛先を使用します。 |
face | アニメーションする顔(オブジェクト)。それ以外の場合は、自動的に顔を検出します。 |
persist | ビデオがTTLなしでストレージに残るかどうか(真偽値) |
limit | ページネーション – 返すトークの数(double) |
token | ページネーション – 前のレスポンスからのページネーショントークン(string) |
id | 特定のトークを取得するためのID(string、必須) |
Delete a specific talk (特定のトークを削除する)
パラメータ名 | パラメータの説明 |
---|---|
id | 削除するトークのID(string、必須) |
Create a new stream (新しいストリームを作成する)
パラメータ名 | パラメータの説明 |
---|---|
source_url | アニメーションする写真へのURL(string、必須) |
driver_url | トークを制御するドライバービデオのURL、または提供されたドライバーのリストからの選択(string) |
face | アニメーションする顔(object) |
config | 高度な設定オプション(object) |
Start a stream (ストリームを開始する)
パラメータ名 | パラメータの説明 |
---|---|
id | ストリーム識別子(string、必須) |
session_id | セッション識別子情報(string) |
answer | Jsep answerオブジェクト(object、必須) |
Submit network information (ネットワーク情報を送信する)
パラメータ名 | パラメータの説明 |
---|---|
id | ストリーム識別子(string、必須) |
ICECANDIDATE | ICE候補(オプション) |
Create a talk stream (トークストリームを作成する)
パラメータ名 | パラメータの説明 |
---|---|
id | ストリーム識別子(string、必須) |
session_id | セッション識別子情報(string) |
result_url | ビデオ結果を保存するURL(string) |
script | スクリプト(必須) |
config | 高度な設定オプション(object) |
user_data | トークレスポンスとWebhookに追加される非機密のカスタムデータ(string) |
name | トークビデオの名前(string) |
Delete a talk stream (トークストリームを削除する)
パラメータ名 | パラメータの説明 |
---|---|
id | ストリーム識別子(string、必須) |
session_id | セッション識別子情報(string) |
Get actors list (俳優のリストを取得する)
パラメータ名 | パラメータの説明 |
---|---|
limit | ページネーション – 返す俳優の数(double) |
token | ページネーション – 前のレスポンスからのページネーショントークン(string) |
Get driver list of an actor (俳優のドライバーリストを取得する)
パラメータ名 | パラメータの説明 |
---|---|
id | 俳優のID(string、必須) |
limit | ページネーション – 返すドライバーの数(double) |
token | ページネーション – 前のレスポンスからのページネーショントークン(string) |
Get a list of the presenters (プレゼンターのリストを取得する)
パラメータ名 | パラメータの説明 |
---|---|
limit | ページネーション – 返すプレゼンターの数(double) |
token | ページネーション – 前のレスポンスからのページネーショントークン(string) |
Get presenter by id (IDによるプレゼンターの取得)
パラメータ名 | パラメータの説明 |
---|---|
id | プレゼンターのID(string、必須) |
Create a clip (クリップを作成する)
パラメータ名 | パラメータの説明 |
---|---|
presenter_id | プレゼンターID(string、必須) |
driver_id | ドライバーID(string) |
script | スクリプト(必須) |
config | 高度な設定オプション(object) |
created_by | クリップを作成したユーザー(string) |
presenter_config | 高度なプレゼンター設定オプション(object) |
background | クリップ結果の背景色(object) |
user_data | クリップレスポンスとWebhookに追加される非機密のカスタムデータ(string) |
name | クリップの名前(string) |
webhook | ペイロード(アニメーションの詳細を含む)を送信するWebhook URL |
result_url | クリップビデオのURL(string) |
raw_result_url | 生のクリップビデオのURL(string) |
persist | ビデオがTTLなしでストレージに残るかどうか(boolean) |
Get clips (クリップを取得する)
パラメータ名 | パラメータの説明 |
---|---|
limit | ページネーション – 返すクリップの数(double) |
token | ページネーション – 前のレスポンスからのページネーショントークン(string) |
Get a specific clip (特定のクリップを取得する)
パラメータ名 | パラメータの説明 |
---|---|
id | クリップのID(string、必須) |
Delete a specific clip (特定のクリップを削除する)
パラメータ名 | パラメータの説明 |
---|---|
id | クリップのID(string、必須) |
Get presenter drivers by id (IDによるプレゼンタードライバーの取得)
パラメータ名 | パラメータの説明 |
---|---|
id | プレゼンターのID(string、必須) |
Create an animation (アニメーションを作成する)
パラメータ名 | パラメータの説明 |
---|---|
source_url | アニメーションするソース画像のURL(string、必須) |
driver_url | アニメーションを駆動するドライバービデオのURL(string) |
result_url | アニメーションビデオのURL(string) |
face | アニメーションする顔(object) |
webhook | ペイロード(アニメーションの詳細を含む)を送信するWebhook URL(string) |
config | 高度な設定オプション(object) |
user_data | アニメーションレスポンスとWebhookに追加される非機密のカスタムデータ(string) |
Get animations (アニメーションを取得する)
パラメータ名 | パラメータの説明 |
---|---|
limit | ページネーション – 返すアニメーションの数(double) |
token | ページネーション – 前のレスポンスからのページネーショントークン(string) |
Get a specific animation (特定のアニメーションを取得する)
パラメータ名 | パラメータの説明 |
---|---|
id | アニメーションのID(string、必須) |
Delete a specific animation (特定のアニメーションを削除する)
パラメータ名 | パラメータの説明 |
---|---|
id | アニメーションのID(string、必須) |
Get Voices (Text-to-Speech対応の音声を取得する)
パラメータ名 | パラメータの説明 |
---|---|
provider | プロバイダーによるフィルタ(string) |
id | 音声IDによるフィルタ(IDはプロバイダーごとに一意)(string) |
Upload an image (画像をアップロードする)
パラメータ名 | パラメータの説明 |
---|---|
image | 画像のバイナリデータ(file) |
detect_faces | 顔を検出するかどうか(string) |
metadata | メタデータ(string) |
source_url | 画像をアップロードするためのURL(string) |
result_url | 画像がアップロードされた後のURL(string) |
Delete image (画像を削除する)
パラメータ名 | パラメータの説明 |
---|---|
id | 画像のID(string、必須) |
Upload an audio file (オーディオファイルをアップロードする)
パラメータ名 | パラメータの説明 |
---|---|
audio | アップロードするオーディオファイル(file、サイズは6MB以下) |
source_url | オーディオをアップロードするためのURL(string) |
result_url | オーディオがアップロードされた後のURL(string) |
Delete an audio file (オーディオファイルを削除する)
パラメータ名 | パラメータの説明 |
---|---|
id | オーディオファイルのID(string、必須) |
Upload audio file (オーディオファイルをアップロードする)
パラメータ名 | パラメータの説明 |
---|---|
script | オーディオに変換されるスクリプト(object、必須) |
スクリプトオブジェクト内のパラメータ:
パラメータ名 | パラメータの説明 |
---|---|
type | スクリプトのタイプ(string) |
subtitles | 字幕を使用するかどうか(boolean) |
provider | プロバイダーのタイプ(object) |
ssml | SSMLを使用するかどうか(boolean) |
プロバイダーオブジェクト内のパラメータ:
パラメータ名 | パラメータの説明 |
---|---|
type | プロバイダーのタイプ(string) |
voice_id | 音声ID(string) |
Get credits (ユーザーのクレジットを取得する)
パラメータ名 | パラメータの説明 |
---|---|
なし | このAPIエンドポイントにはパラメータがありません |
Upload logo (ロゴをアップロードする)
パラメータ名 | パラメータの説明 |
---|---|
logo | アップロードするロゴのファイル(file、必須) |
top | ロゴの上端の位置(string、必須) |
left | ロゴの左端の位置(string、必須) |
Delete logo (ロゴを削除する)
パラメータ名 | パラメータの説明 |
---|---|
なし | このAPIエンドポイントにはパラメータがありません |
Asynchronous Errors (非同期エラー)
エラーの種類 | 説明 |
---|---|
DriverError | ドライバが無効または読み込めない |
SourceError | ソース画像が読み込めないまたは無効な形式 |
LogoError | ロゴ画像が読み込めないまたは無効な形式 |
FaceError | 有効な顔が検出されない |
UnknownError | 未知の内部エラー |
終わりの会
「微課金」推奨
APIの場合、何回も実行して確認する必要があるため、
無料プランの配布クレジットだけでは、足りないかもしれません。
「微課金しないといけないかもしれない」心意気が、
必要かもしれません。
※今回は「最小プラン」で課金しました。
マジセミちゃん(仮)のごあいさつ
【お知らせ】AI関連 記事リストポータル
こちらのページでは、
【ChatGPTプラグイン探訪】および【AIツール実験室】の記事一覧を参照できます。
【お知らせ】「マジセミ」のご紹介
「マジセミ」では、日々、多くのIT関連セミナーを開催しています。
多くのセミナーの中から「ご自身のスキルやビジネスを強化できるセミナー」を見つけて、ぜひ1度、参加してみてください。
マジセミ関連プラットフォーム
プラットフォーム | 説明 | URL |
---|---|---|
マジセミ | マジセミで実施されるさまざまなセミナーの開催情報を確認できます。 「IT関連セミナー」「製造業関連セミナー」など、ご自身のビジネスを強化できるセミナーを検索できます。 |
→majisemi.com |
マジセミサービス | 「セミナーを開催したい方」向けの情報を確認できます。 トライアルからの利用が可能です。 |
→majisemi.com →service |
YouTubeマジセミ動画① IT製造業DX |
「マジセミ」で開催している年間1000回のウェビナーの中から、「IT業界と製造業DX」の最新トレンドをサマリー動画でお届けします。 | →youtube.com →@majisemi |
YouTubeマジセミ動画② ITセキュリティ |
ITセキュリティの最新トレンドに関するものを集めてサマリー動画でお届けしています。 | →youtube.com →@majisemisecurity |
マジセミドライブ | 「AIツール実験室」などの、IT関連コンテンツを紹介しています。 | →majisemi.com →topics |
マジセミFacebook | 毎日「マジセミ関連情報」や「IT関連ニュース」などを紹介しています。 | →facebook.com →OSSNews |
マジセミX(Twitter) | マジセミFacebookと同様に投稿しています。 | →twitter.com →Majisemi_it |
マジセミInstagram | マジセミFacebookと同様に投稿しています。 | →instagram.com →majisemi_it/ |
マジセミThreads | マジセミFacebookと同様に投稿しています。 | →threads.net →@majisemi_it |
マジセミBluesky | マジセミFacebookと同様に投稿しています。 | →majisemi.bsky.social |
フリーワード検索
カテゴリー一覧
アクセスランキング
- 🏆ランク1位🏆
【無料で使える】「 プロジェクト管理 」ツールまとめ - 🏆ランク2位🏆
【無料で使える】「 マルウェア 」対策ツールまとめ - 🏆ランク3位🏆
【無料で使える】「 ドキュメント管理 」ツールまとめ - 🏆ランク4位🏆
【OSS情報アーカイブ】FreeBSD - 🏆ランク5位🏆
【ツール紹介】無料オープンソース「 ビデオ監視 ツール 」まとめ3選 - 🏆ランク6位🏆
【OSS情報アーカイブ】LibreSSL - 🏆ランク7位🏆
【AIツール実験室】楽曲作成ツール「 Suno AI 」〜AI生成ミュージックフェス〜 - 🏆ランク8位🏆
【無料で使える】API統合プラットフォーム「 Pipedream 」 - 🏆ランク9位🏆
【AIツール実験室】画像生成AIツール「 Emi 」(前編) - 🏆ランク10位🏆
【無料で使える】「 RPA 」ツールまとめ