以下の記事の中で扱った「Dream Machine」の話です。
●「Luma Dream Machine」公式の JavaScript SDK で動画生成(Text to Video) - Qiita
https://qiita.com/youtoy/items/8de9def353715c6b4e91
上記ではテキスト入力による動画生成を試しましたが、今回はテキスト入力による画像生成をやってみます。
実際に試してみる
公式の情報を見ながら試していきます。
公式ドキュメント
「Dream Machine Image API」について、公式のドキュメントは以下になります。
●Image Generation
https://docs.lumalabs.ai/docs/javascript-image-generation
事前の準備
前回と同様、今回も公式の JavaScript SDK を使うので、未インストールの場合はインストールをします。また、環境変数に APIキーを設定する形にします。
自分が試した環境は Mac ですが、以下のように進めました(前回と同じ内容)。
npm install lumaai
export LUMAAI_API_KEY=【自分のAPIキー】
実際に試していく
それでは、コードを準備して実際に試します。
以下の公式サンプルをほぼそのまま使う形でやりました。
const fetch = require('node-fetch');
const fs = require('fs');
const { LumaAI } = require('lumaai');
const client = new LumaAI({ authToken: process.env.LUMAAI_API_KEY });
async function generateImage() {
let generation = await client.generations.image.create({
prompt: "A teddy bear in sunglasses playing electric guitar and dancing"
});
let completed = false;
while (!completed) {
generation = await client.generations.get(generation.id);
if (generation.state === "completed") {
completed = true;
} else if (generation.state === "failed") {
throw new Error(`Generation failed: ${generation.failure_reason}`);
} else {
console.log("Dreaming...");
await new Promise(r => setTimeout(r, 3000)); // Wait for 3 seconds
}
}
const imageUrl = generation.assets.image;
const response = await fetch(imageUrl);
const fileStream = fs.createWriteStream(`${generation.id}.jpg`);
await new Promise((resolve, reject) => {
response.body.pipe(fileStream);
response.body.on('error', reject);
fileStream.on('finish', resolve);
});
console.log(`File downloaded as ${generation.id}.jpg`);
}
generateImage();
変更した箇所は、プロンプトを「氷と雷と炎のドラゴン、合計3匹が対峙しているシーン」という内容にしたくらいです。
出力結果
上記の内容で試して、得られた結果は以下のとおりです。
雷は出てきてますが、雷のドラゴンは出てないものになりました。
その他
API利用状況
前回と今回の API利用の状況を、以下で見てみました。
https://lumalabs.ai/dream-machine/api/usage
お試しをした時の利用履歴が出ています。