วิธีสร้างวิดีโอ AI Influencer ด้วยอวตารผ่าน Google Vids API
อ่าน 15 นาที • 7 ตุลาคม 2026 (6 พฤศจิกายน 2026)
useapi.net เป็น API ของบุคคลที่สาม (third-party) ไม่มีส่วนเกี่ยวข้องกับ Google และไม่ได้รับการรับรองจาก Google
สารบัญ
- บทนำ
- ใช้โควตาไปเท่าไร
- ก่อนเริ่ม
- สร้างทีละขั้นตอน
- ตัวอย่าง
- อวตารพูดได้จากรูปถ่าย
- เสียงพูดอย่างเดียว
- สิ่งที่เราได้เรียนรู้
- คำถามที่พบบ่อย
- สรุป
บทนำ
Google Vids API ของ useapi.net สร้างวิดีโอ AI influencer ที่พูดได้จากอวตาร บันทึกภาพหนึ่งภาพและเสียง Gemini หนึ่งใน 30 เสียงไว้ครั้งเดียวด้วย POST /avatars แล้วส่ง id ของอวตารไปในวิดีโอ Gemini Omni 1.2 Flash ยาวสูงสุด 15 วินาทีได้เลย อวตารจะพูดบทที่คุณเขียนไว้ใน prompt หรือให้อวตารอ่านสคริปต์ของคุณเองในวิดีโอแบบ talking head ยาวสูงสุด 30 วินาทีก็ได้
API นี้ทำงานบนบัญชี Google Vids ของคุณ ที่มีแพ็กเกจ Google AI แบบเสียเงิน (Google AI Pro หรือ Ultra) บทความนี้สร้าง influencer สองคน แล้วให้ทั้งคู่เปิดตัวรองเท้าผ้าใบ อวตารของ Mia มาจากภาพพอร์ตเทรตที่สร้างด้วย API ส่วนอวตารของ Leo นั้น Google วาดขึ้นจากคำบรรยาย ทั้งสองนำเสนอ AeroLoop รองเท้าผ้าใบสมมติ บนเวทีโรงละครในคลิปเดียวยาว 10 วินาที ที่มีทั้งสองอวตารและภาพสินค้า แล้วต่อความยาวอีกสองครั้งจนได้ 30 วินาที การแก้ไขหนึ่งครั้งย้ายฉากไปบนดาดฟ้า และอีกสองคลิปแสดงว่าคำสั่งเดียวกันสร้างอะไรได้เมื่อไม่มีอวตาร อวตารคนที่สาม Amber เริ่มจากรูปถ่ายของคนจริง ปรับสไตล์ด้วยประโยคเดียว แล้วอ่านสคริปต์ 327 ตัวอักษรในวิดีโอ talking head ยาว 24 วินาที สุดท้าย เสียงเดียวกันอ่านเรื่องสั้น 2,426 ตัวอักษรเป็นเสียงพูดอย่างเดียว ทุกคำขอด้านล่างคือคำขอที่สร้างสื่อในหน้านี้จริง เพียงเปลี่ยน id และเพิ่ม async: true ผ่าน helper run คลิปเหล่านี้สร้างในเดือนตุลาคม 2026 ด้วย Omni 1.1 Flash ซึ่ง Vids เปลี่ยนเป็น Omni 1.2 Flash เมื่อ 5 พฤศจิกายน 2026 และคำขอเดียวกันใช้กับ 1.2 ได้ ถ้าอยากดู Omni 1.2 ใน Google Vids และ Google Flow เทียบกัน พร้อมวิดีโอ 15 วินาทีและราคาต่อคลิป อ่านวิธีใช้ Gemini Omni 1.2 Flash API
คลิปสุดท้ายยาว 30 วินาทีที่ 720p: สร้างหนึ่งครั้ง 10 วินาที และต่อความยาวอีกสองครั้ง ครั้งละ 10 วินาที (ขั้นตอนที่ 6 ถึง 8)
ใช้โควตาไปเท่าไร
useapi.net เป็น API ไม่ใช่บริการวิดีโอของตัวเอง ทุกคำขอทำงานบนบัญชี Google ที่คุณเชื่อมไว้ผ่านการตั้งค่า Google Vids ซึ่งมีแพ็กเกจ Google AI แบบเสียเงิน และใช้วินาทีวิดีโอกับภาพที่แพ็กเกจนั้นให้ใน Google Vids ทุกเดือน Google AI Ultra $199.99 ให้วิดีโอ 10,000 วินาทีและภาพ 1,000 ภาพต่อเดือน และ useapi.net ไม่คิดเงินเพิ่มต่อวิดีโอ วิดีโออวตารพูดได้และเสียงพูดไม่ใช้วินาทีวิดีโอ ทั้งสองมีตัวนับรายเดือนของตัวเอง คือ AI avatar videos และ Gemini uses ซึ่ง GET /accounts/email แสดงเป็น avatarVideo และ speech ข้าง video และ image ดูสิ่งที่แต่ละแพ็กเกจได้ สำหรับแพ็กเกจอื่น
ผลลัพธ์แต่ละชิ้นที่เก็บไว้ใช้โควตาไปเท่าไร (ดูจากค่าที่เปลี่ยนใน result.quota) และแต่ละงานใช้เวลานานเท่าไร (result.elapsedMs):
| ขั้นตอน | Endpoint | ใช้ไป | เวลา |
|---|---|---|---|
| ภาพพอร์ตเทรตของ Mia | POST /images | 1 ภาพ | 9 วิ |
| ภาพสินค้า AeroLoop | POST /images | 1 ภาพ | 9 วิ |
| อวตารของ Mia จากภาพพอร์ตเทรต | POST /avatars | ไม่ใช้ | ราว 2 วิ |
| อวตารของ Leo จากคำบรรยาย | POST /avatars | 1 ภาพ | ราว 20 วิ |
| คลิปเปิดตัว 10 วินาที | POST /videos | 10 วิ | 38 วิ |
| ต่อเป็น 20 วินาที | POST /videos/extend | 10 วิ | 70 วิ |
| ต่อเป็น 30 วินาที | POST /videos/extend | 10 วิ | 85 วิ |
| อัปสเกลคลิป 20 วินาทีเป็น 1080p | POST /videos/upscale | 20 วิ | 62 วิ |
| แก้ไขเป็นฉากดาดฟ้า | POST /videos/edit | 10 วิ | 64 วิ |
| แก้ไขคลิป 30 วินาที | POST /videos/edit | 10 วิ | 87 วิ |
| คลิปโชว์สินค้า | POST /videos | 10 วิ | 62 วิ |
| นกพิราบ | POST /videos | 5 วิ | 54 วิ |
อวตารของ Amber จากรูปถ่ายพร้อม refine | POST /avatars | ไม่ใช้ (สร้างบนแพ็กเกจที่ไม่มีภาพ ถ้าแพ็กเกจมีภาพจะใช้ 2 ภาพ) | ราว 30 ถึง 45 วิ |
| วิดีโอพูดได้ 24 วินาทีของ Amber | POST /videos/avatar | 1 AI avatar video, 1 Gemini use | ราว 2.5 นาที |
| เรื่องสั้น 2,426 ตัวอักษร | POST /speech | 1 Gemini use | 20 วิ |
| รวม | วิดีโอ 85 วิ, 3 ภาพ, 1 AI avatar video, 2 Gemini uses |
การต่อความยาวใช้เฉพาะวินาทีที่เพิ่มเข้าไป ไม่ใช่ความยาวทั้งคลิป การอัปสเกลใช้ความยาวทั้งคลิปอีกรอบ ส่วนการแก้ไขใช้ไม่เกินจำนวนวินาทีที่แก้ (กับ Omni 1.2 การแก้คลิป 15 วินาทีใช้ไป 10 วินาทีในการทดสอบของเรา) ตอนสร้าง 720p และ 1080p ใช้วินาทีเท่ากัน คลิปที่สร้างซ้ำจะใช้วินาทีซ้ำอีกรอบ ภาพแต่ละภาพที่ Google สร้างให้อวตารใช้ 1 ภาพ รูปถ่ายที่ถูกจัดเฟรมใหม่บวกกับ refine จึงใช้ 2 ภาพ บนแพ็กเกจที่ไม่มีภาพ เช่นบัญชี Google ฟรี ภาพของอวตารไม่ใช้อะไรเลย Amber สร้างบนบัญชีแบบนั้น วิดีโออวตารพูดได้ใช้ 1 AI avatar video บวก 1 Gemini use สำหรับเสียงพูด แม้ Google จะปฏิเสธวิดีโอที่สร้างเสร็จแล้วก็ตาม วิดีโอหนึ่งคลิปคิดเป็นเงินเท่าไรเมื่อเทียบกับ API ทางการ ดูได้ในตารางราคา Google Vids
ก่อนเริ่ม
คุณต้องมีโทเคน API ของ useapi.net และบัญชี Google ที่มีแพ็กเกจ Google AI แบบเสียเงิน เชื่อมไว้ผ่านการตั้งค่า Google Vids บัญชี Google ฟรีไม่มีวินาทีวิดีโอหรือภาพใน Vids แต่ยังเพิ่มเข้ามาได้ และในการทดสอบของเรา (พฤศจิกายน 2026) บัญชีฟรีสร้างอวตาร วิดีโออวตารพูดได้ และเสียงพูดได้ ทุกคำขอมีอยู่ในคอลเลกชัน Postman ด้วย
ถ้าไม่อยากเขียนโค้ด เทมเพลต n8n Talking Avatar App สร้างวิดีโออวตารพูดได้จากฟอร์ม ขั้นตอนทั้งหมดยังมีบน GitHub เป็นสคริปต์เดียว ทั้ง Node.js และ Python: influencer-avatars/ ใน useapi/google-vids-api ส่วนอวตารพูดได้และเสียงพูดอยู่ใน talking-avatar/
ขั้นตอนต่าง ๆ ใช้ curl, jq และตัวแปรกับ helper เหล่านี้:
เปิดดูตัวแปรและ helper
export USEAPI_TOKEN="user:12345-..."
export EMAIL="[email protected]"
API=https://api.useapi.net/v1/google-vids
AUTH="Authorization: Bearer $USEAPI_TOKEN"
enc() { jq -rn --arg v "$1" '$v|@uri'; }
post() { curl -sS -X POST "$API/$1" -H "$AUTH" -H "Content-Type: application/json" -d "$2"; }
get() { curl -sS "$API/$1" -H "$AUTH"; }
download() { curl -sSf "$API/media/$(enc "$1")" -H "$AUTH" -o "$2"; }
# รันงานวิดีโอแบบ async: ส่งงาน แล้ว poll GET /jobs/{jobid} ทุก 10 วินาที และบันทึก job record สุดท้ายลง $1
run() {
local job id
job=$(post "$2" "$(jq '. + {async: true}' <<< "$3")")
id=$(jq -r .jobid <<< "$job")
while [ "$(jq -r .status <<< "$job")" = processing ]; do
sleep 10
job=$(get "jobs/$(enc "$id")")
done
echo "$job" > "$1"
jq '{status, error, duration: .result.duration, resolution: .result.resolution, videoLeft: .result.quota.video.left}' "$1"
}
การสร้างทุกครั้งทำงานเป็นงาน (job) ถ้าไม่ใส่ async คำขอ POST จะรอได้ราว 100 วินาที แล้วตอบกลับเป็น job record ที่เสร็จแล้ว หรือ 202 ถ้างานยังไม่เสร็จ คลิปใหม่ 10 วินาทีใช้เวลา 38 ถึง 62 วินาทีในบทความนี้ การต่อความยาว การแก้ไข และการอัปสเกลใช้ 62 ถึง 87 วินาที ส่วนวิดีโออวตารพูดได้ใช้ราวสองนาทีครึ่ง บางงานนานเกินเวลารอแบบ sync ดังนั้น run จึงส่งงานวิดีโอด้วย async: true แล้ว poll GET /jobs/jobid ถ้า run แสดง status อื่นที่ไม่ใช่ completed ให้หยุดตรงนั้นและอ่าน error เพราะคำสั่งถัดไปต้องใช้คลิปที่เสร็จแล้ว
ถ้าอยากให้เรียกกลับแทนการ poll ให้เพิ่ม replyUrl: "https://example.com/hooks/vids" (และ replyRef: "launch-push-in" ถ้าต้องการ) ลงใน body ใดก็ได้ด้านล่าง เมื่องานเสร็จหรือล้มเหลว API จะส่ง POST หนึ่งครั้งพร้อม job record สุดท้ายเป็น JSON ไปที่ URL นั้น
id มีอักขระ : และ @ ดังนั้น enc จึงเข้ารหัส URL ให้ทุกครั้งที่ id อยู่ใน path ของ URL อินพุตทุกชิ้นของวิดีโอหนึ่งคลิปต้องมาจากบัญชี Google เดียวกัน ภาพและไฟล์ที่อัปโหลดระบุ email ไว้ อวตารของ Mia ใช้บัญชีเดียวกับภาพพอร์ตเทรต และงานวิดีโอจะทำงานบนบัญชีที่ถืออินพุตของมัน คลิปนกพิราบไม่มีอินพุต ถ้าเชื่อมไว้มากกว่าหนึ่งบัญชีให้เพิ่ม email ลงไปด้วย
สร้างทีละขั้นตอน
1. ภาพพอร์ตเทรตของ Mia
POST /images สร้าง JPEG หนึ่งภาพต่อคำขอ ในที่นี้เป็นแนวตั้ง (9:16, 768×1376) สไตล์ photography
curl — POST /images
post images "$(jq -n --arg email "$EMAIL" '{email: $email, aspectRatio: "9:16", style: "photography",
prompt: "Full-length studio portrait of a confident 24-year-old female fashion influencer, platinum bob, oversized cream hoodie, wide-leg cargo pants, gold hoops, plain light-grey backdrop, facing camera"}')" > mia-portrait.json
MIA_IMAGE=$(jq -r .result.mediaId mia-portrait.json)
download "$MIA_IMAGE" mia-portrait.jpg

ภาพที่สร้างขึ้นใช้งานได้แค่ไม่กี่ชั่วโมง ให้สร้างอวตารจากภาพนั้นทันที และดูคลิปโชว์สินค้า สำหรับวิธีใช้ภาพในภายหลัง
2. ภาพสินค้า AeroLoop
คำขอเดียวกันในแนวนอน (16:9, 1376×768) ให้ภาพอ้างอิงสินค้าที่คลิปต่าง ๆ ใช้
curl — POST /images
post images "$(jq -n --arg email "$EMAIL" '{email: $email, aspectRatio: "16:9", style: "photography",
prompt: "The AeroLoop sneaker: chunky white-and-electric-blue running shoe with a translucent air sole, on a concrete pedestal, dramatic side light, dark background"}')" > aeroloop.json
SHOE_IMAGE=$(jq -r .result.mediaId aeroloop.json)
download "$SHOE_IMAGE" aeroloop.jpg

3. เลือกเสียง
GET /voices แสดงรายการเสียงทั้ง 30 เสียง พร้อมตัวอย่างภาษาอังกฤษของ Google สำหรับแต่ละเสียง endpoint นี้เป็นสาธารณะ ไม่ต้องใช้โทเคน Mia พูดด้วยเสียง Aoede (ใน Vids ชื่อ Tova สไตล์ “Breezy”) และ Leo พูดด้วยเสียง Puck (Neo สไตล์ “Upbeat”) POST /avatars รับได้ทั้งสองชื่อ
curl -sS "$API/voices" | jq -r '.voices[] | "\(.name)\t\(.voice)\t\(.style)\t\(.preview)"'
4. อวตารของ Mia จากภาพพอร์ตเทรต
POST /avatars ที่ตั้ง image เป็น mediaId ของภาพพอร์ตเทรต จะบันทึก Mia เป็นอวตารบนบัญชีเดียวกันในราว 2 วินาที ไม่ใช้อะไรเพิ่มนอกจากภาพที่สร้างไปแล้ว
curl — POST /avatars และคำตอบ
post avatars "$(jq -n --arg img "$MIA_IMAGE" '{name: "Mia", voice: "Aoede", image: $img}')" > mia-avatar.json
MIA_AVATAR_ID=$(jq -r .avatarId mia-avatar.json)
{
"avatarId": "user:[email protected]:eyJnIjoiaDM5…",
"name": "Mia",
"voice": "Tova",
"voiceId": "Aoede",
"voiceStyle": "Breezy",
"voicePreview": "https://ssl.gstatic.com/docs/videos/audio/voice_samples/gemini-v4s-tts/1.1/en/Aoede.wav",
"email": "[email protected]",
"source": "image"
}
อวตารเริ่มจากรูปถ่ายของคนจริงได้ด้วย อัปโหลดรูปด้วย POST /assets แล้วส่ง assetId เป็น image Google จะจัดเฟรมรูปใหม่เป็นภาพอวตาร 16:9 และจะปฏิเสธรูปของคนมีชื่อเสียงและผู้เยาว์ ในขั้นนี้เราใช้ภาพที่สร้างด้วย API และใช้คำบรรยายในขั้นถัดไป ส่วน Amber ในอวตารพูดได้จากรูปถ่าย เริ่มจากรูปถ่าย
5. อวตารของ Leo จากคำบรรยาย
ถ้าใช้ appearance แทน image Google จะวาดคนขึ้นมาเอง outfit และ shot ไม่บังคับ เช่นเดียวกับ expression และ details การวาดภาพนี้ใช้ภาพของเดือนไป 1 ภาพ และคำตอบจะส่งภาพนั้นกลับมาเป็น previewMediaId ในการทดสอบของเรา อวตารจากคำบรรยายออกมาเป็น 1280×720 (16:9) เสมอ ไม่ว่าจะเลือก shot แบบไหน
curl — POST /avatars และคำตอบ
post avatars "$(jq -n --arg email "$EMAIL" '{email: $email, name: "Leo", voice: "Puck", shot: "upper-body",
appearance: "a 26-year-old white European male streetwear influencer with short textured hair with a fade and a confident half-smile",
outfit: "black puffer vest over a white tee, silver chain"}')" > leo-avatar.json
LEO_AVATAR_ID=$(jq -r .avatarId leo-avatar.json)
download "$(jq -r .previewMediaId leo-avatar.json)" leo-avatar.jpg
{
"avatarId": "user:[email protected]:eyJnIjoiaDM5…",
"name": "Leo",
"voice": "Neo",
"voiceId": "Puck",
"voiceStyle": "Upbeat",
"voicePreview": "https://ssl.gstatic.com/docs/videos/audio/voice_samples/gemini-v4s-tts/1.1/en/Puck.wav",
"email": "[email protected]",
"source": "generated",
"previewMediaId": "user:[email protected]:eyJ1IjoiaHR0…",
"look": {
"appearance": "a 26-year-old white European male streetwear influencer with short textured hair with a fade and a confident half-smile",
"outfit": "black puffer vest over a white tee, silver chain",
"shot": "upper-body"
}
}
![]()
อวตารทั้งสองอยู่ในเอกสาร Vids ของบัญชีจนกว่าคุณจะลบด้วย DELETE /avatars/avatarId เมื่อต้องการใช้อีก GET /avatars แสดงรายการอวตารพร้อม id:
get "avatars?email=$(enc "$EMAIL")" | jq -r '.avatars[] | "\(.name)\t\(.voiceId)\t\(.avatarId)"'
6. การเปิดตัว: สองอวตารและสินค้าในคลิปเดียว
POST /videos รับภาพอ้างอิงได้สูงสุด 3 ชิ้นรวมกัน ทั้งอวตาร (avatar_1..avatar_3) และภาพ (referenceImage_1..referenceImage_3) ใน prompt @avatar_1, @avatar_2 และ @referenceImage_1 ใช้แทนสิ่งเหล่านั้น และอวตารแต่ละตัวจะพูดบทในเครื่องหมายคำพูดด้วยเสียงของตัวเอง ใส่ mediaId ของภาพสินค้าได้โดยตรง API จะดึงภาพและอัปโหลดบนบัญชีนั้นให้
curl — POST /videos และ job record
PROMPT=$(cat <<'EOF'
@avatar_1, holding @referenceImage_1 in both hands at chest height, and @avatar_2 stand side by side on a well-lit stage in a small, intimate theater at a sneaker launch, shown full length from head to toe in a wide, steady shot. Behind them a large LED backdrop glows with soft white-and-blue light that moves in slow, gentle waves, with the words "WEAR AEROLOOP" in large, clean, bold white letters across the middle of the screen. The two of them stand on the lower part of the stage, so the words "WEAR AEROLOOP" stay fully readable above their heads. Bright, even stage lighting on both of them. The audience sits in the dark in front of the stage, only the tops of a few heads barely visible at the bottom of the frame. @avatar_1 keeps holding @referenceImage_1 the whole time and says: "Say hi to the AeroLoop!" @avatar_2 turns to her, smiles and says: "Lighter than anything we've ever worn." Simple, uncluttered composition, the two of them clearly the focus.
EOF
)
run launch-10s.json videos "$(jq -n --arg p "$PROMPT" --arg mia "$MIA_AVATAR_ID" --arg leo "$LEO_AVATAR_ID" --arg shoe "$SHOE_IMAGE" \
'{prompt: $p, avatar_1: $mia, avatar_2: $leo, referenceImage_1: $shoe, duration: 10, resolution: "720p", aspectRatio: "landscape"}')"
LAUNCH_10S=$(jq -r .result.mediaId launch-10s.json)
download "$LAUNCH_10S" launch-10s.mp4
job record ที่ย่อ id และ prompt ให้สั้นลง งานนี้สร้างด้วยคำขอแบบ sync ใน request จึงไม่มี async:
{
"jobid": "j1007163302558496917v-u12345-email:[email protected]:google-vids",
"type": "video",
"mode": "ingredients",
"email": "[email protected]",
"status": "completed",
"created": "2026-10-08T00:29:18.374Z",
"request": {
"prompt": "@avatar_1, holding @referenceImage_1 in both hands at chest height, and @avatar_2 stand side by side …",
"avatar_1": "user:[email protected]:eyJnIjoiaDM5…",
"avatar_2": "user:[email protected]:eyJnIjoiaDM5…",
"referenceImage_1": "user:[email protected]:eyJ1IjoiaHR0…",
"duration": 10,
"resolution": "720p",
"aspectRatio": "landscape"
},
"updated": "2026-10-08T00:29:56.162Z",
"completed": "2026-10-08T00:29:56.162Z",
"result": {
"mediaId": "user:[email protected]:eyJ1IjoiaHR0…",
"width": 1280,
"height": 720,
"duration": 10,
"resolution": "720p",
"aspectRatio": "landscape",
"model": "/flix/generate_videos_omni_r2v_psq/v1",
"quota": {
"video": {
"limit": 10000,
"left": 9164,
"resetAt": "2026-11-01T07:00:00.000Z"
}
},
"elapsedMs": 37788
}
}
10 วินาที 720p ใช้เวลาสร้าง 38 วินาที
คลิปเดียวกันที่ลบเครื่องหมาย Gemini ✦ ที่มองเห็นได้ออกด้วยตัวลบลายน้ำ ของเรา ด้วยคำสั่งเดียว: python3 vids_watermark_remover.py launch-10s.mp4
ตัวลบลายน้ำใช้ได้กับคลิปที่สร้างออกมาตรง ๆ และคลิปที่อัปสเกลจากคลิปนั้น ทั้ง 720p และ 1080p แต่ใช้กับคลิปที่ต่อความยาวหรือแก้ไขแล้วไม่ได้ เพราะ Google ส่งคลิปที่มีเครื่องหมายกลับเข้าโมเดล และโมเดลวาดดาวนั้นลงไปในภาพ ลายน้ำ SynthID ที่มองไม่เห็นไม่ถูกแตะต้อง
7. ต่อเป็น 20 วินาที
POST /videos/extend เพิ่มความยาว 3 ถึง 10 วินาที และส่งคลิปทั้งคลิปกลับมาพร้อม mediaId ใหม่ การต่อความยาวรับแค่คลิปกับ prompt ไม่รับอวตาร ดังนั้น prompt จึงบรรยายแอ็กชันใหม่ และเรียกคนตามสิ่งที่สวมอยู่ (“the man in the black puffer vest”) แฟนคลับในเสื้อฮู้ดสีแดงบุกขึ้นเวที
curl — POST /videos/extend
PROMPT=$(cat <<'EOF'
A young man in a red hoodie climbs onto the stage from the front right edge and plants himself to the right of the man in the black puffer vest, an arm's length away, so all three stand apart in a row with nobody overlapping. Visibly overexcited, he waves a thick stack of banknotes in his right hand above his head and screams: "Take my money!" The man in the black puffer vest laughs, raises both palms toward him and says: "Whoa, whoa, buddy, be patient!" The blonde woman in the cream hoodie laughs, holding the sneaker. Only these three people are on stage. Same stage, same LED screen with WEAR AEROLOOP, same wide steady shot.
EOF
)
run launch-20s.json videos/extend "$(jq -n --arg id "$LAUNCH_10S" --arg p "$PROMPT" '{mediaId: $id, prompt: $p, duration: 10}')"
LAUNCH_20S=$(jq -r .result.mediaId launch-20s.json)
download "$LAUNCH_20S" launch-20s.mp4
20 วินาที 720p ใช้เวลาสร้าง 70 วินาที ใช้วินาทีของเดือนไป 10 วินาที คือเท่ากับวินาทีที่เพิ่มเข้าไป
8. ต่อเป็น 30 วินาที
การต่อความยาวครั้งที่สองต่อจากคลิป 20 วินาที
curl — POST /videos/extend
PROMPT=$(cat <<'EOF'
The blonde woman in the cream hoodie turns to the camera with a big smile and says: "AeroLoop drops Friday. Link in bio!" Right after that, the young man in the red hoodie throws ALL of his banknotes out over the audience in one big toss, keeping none, and the bills flutter down over their heads. From then on his hands are completely empty: he holds no money at all. Then all three cheer together, the man in the black puffer vest and the young man in the red hoodie throwing their empty fists in the air, as blue and white confetti rains down over the stage. Only these three people are on stage. Same stage, same LED screen with WEAR AEROLOOP, same wide steady shot.
EOF
)
run launch-30s.json videos/extend "$(jq -n --arg id "$LAUNCH_20S" --arg p "$PROMPT" '{mediaId: $id, prompt: $p, duration: 10}')"
LAUNCH_30S=$(jq -r .result.mediaId launch-30s.json)
download "$LAUNCH_30S" launch-30s.mp4
ผลลัพธ์คือคลิปที่เสร็จสมบูรณ์: 30 วินาที 720p ใช้เวลาสร้าง 85 วินาที และใช้วินาทีของเดือนไปอีก 10 วินาที กับ Omni 1.1 คุณต่อได้ถึงราว 41 วินาที แต่ Omni 1.2 ต่อความยาวได้เฉพาะคลิปที่ยาวไม่เกิน 24 วินาที คลิป 30 วินาทีนี้จึงยาวที่สุดเท่าที่ทำได้แล้ว และคลิปที่ยาวที่สุดอยู่ที่ราว 34 วินาที (24 + 10)
9. อัปสเกลเป็น 1080p
POST /videos/upscale เปลี่ยนคลิป 720p เป็น 1080p โดยคงความยาวเดิม ใช้ได้กับคลิปที่ยาวไม่เกิน 20 วินาที เราจึงอัปสเกลคลิป 20 วินาทีจากขั้นตอนที่ 7 ไม่ใช่คลิป 30 วินาที การอัปสเกลใช้ 20 วินาทีของคลิปอีกรอบ และใช้เวลา 62 วินาที
Gemini API ของ Google เองไม่มีขั้นตอนนี้ Gemini API สร้าง 1080p และ 4K ได้เฉพาะเป็นผลลัพธ์ของการสร้างหรือการแก้ไข และอัปสเกลคลิปที่คุณมีอยู่แล้วไม่ได้ (ข้อมูล ณ พฤศจิกายน 2026)
curl — POST /videos/upscale
run launch-20s-1080p.json videos/upscale "$(jq -n --arg id "$LAUNCH_20S" '{mediaId: $id}')"
download "$(jq -r .result.mediaId launch-20s-1080p.json)" launch-20s-1080p.mp4
คลิป 20 วินาที อัปสเกลเป็น 1920×1080
ทำไมไม่ใช้คลิป 30 วินาที: Google ส่งกลับมาที่ 1920×1080 ก็จริง แต่เฟรมสลับลำดับกัน ทั้งสามครั้งที่ลอง ตอนจบที่มีคอนเฟตติโผล่มาแวบหนึ่งก่อนที่แฟนคลับจะขึ้นเวที คลิป 20 วินาทีกลับมาเรียงลำดับถูกต้อง และตัวแก้ไขของ Vids เองก็หยุดที่ 20 วินาที API จึงปฏิเสธการอัปสเกลคลิปที่ยาวเกิน 20 วินาทีด้วย 400 ก่อนจะมีการคิดโควตาใด ๆ
ถ้าต้องการคลิป 1080p:
- สร้าง ต่อความยาว และแก้ไขที่
720p - อัปสเกลเมื่อคลิปเสร็จแล้ว ตอนที่ยังยาวไม่เกิน 20 วินาที
- สำหรับคลิปที่ยาวกว่านั้น (21 ถึง 34 วินาที) ให้อยู่ที่
720pและตั้งresolution: "1080p"เฉพาะการต่อความยาวครั้งสุดท้าย การต่อที่1080pทุกครั้งจะทำให้วินาทีก่อนหน้าคมเกินไปทุกขั้น (ดูการเปรียบเทียบ) - สำหรับคลิปเดี่ยวที่จะไม่ต่อความยาวหรือแก้ไข ให้สร้างที่
1080pไปเลย ใช้วินาทีเท่ากับ720pขณะที่การอัปสเกลใช้วินาทีซ้ำอีกรอบ
ตัวอย่าง
ตัวอย่างเพิ่มเติมจากบัญชีและอินพุตเดียวกัน: การแก้ไข คลิปสินค้าจากภาพเริ่มต้น และคลิปจากข้อความอย่างเดียว
ย้ายงานเปิดตัวไปบนดาดฟ้า
POST /videos/edit เปลี่ยนคลิปที่สร้างไว้แล้วตาม prompt และส่งคลิปใหม่กลับมา คลิปต้นฉบับใส่ใน video การแก้คลิปเปิดตัว 10 วินาทีนี้ใช้ 10 วินาที และใช้เวลา 64 วินาที
curl — POST /videos/edit
run launch-rooftop.json videos/edit "$(jq -n --arg v "$LAUNCH_10S" \
'{video: $v, prompt: "Move the whole scene to a rooftop at sunset, with the city skyline behind them. Same two people, same action, same words."}')"
download "$(jq -r .result.mediaId launch-rooftop.json)" launch-rooftop.mp4
กับ Omni 1.1 ซึ่งสร้างคลิปเหล่านี้ การแก้ไขทำได้สูงสุด 10 วินาที การแก้คลิป 30 วินาทีแบบเดียวกัน โดยใช้ “Same three people” ได้คลิปกลับมายาว 10 วินาที คือ 10 วินาทีแรกที่ย้ายไปบนดาดฟ้า และใช้วินาทีของเดือนไป 10 วินาที Omni 1.2 แก้ไขได้สูงสุด 15 วินาที ถ้าต้องการคลิปที่แก้แล้วยาวกว่านั้น ให้แก้คลิปที่ยาวไม่เกิน 15 วินาที แล้วต่อความยาวผลลัพธ์ เพราะการต่อความยาวรับคลิปที่แก้ไขแล้วได้
การแก้คลิป 30 วินาทีด้วย Omni 1.1: ได้กลับมา 10 วินาที
คลิปโชว์สินค้าจากภาพเริ่มต้น
เมื่อใช้ startImage คลิปจะเปิดด้วยภาพนั้น ลิงก์ของภาพที่สร้างขึ้นหมดอายุภายในไม่กี่ชั่วโมง เราจึงอัปโหลดไฟล์ aeroloop.jpg ที่บันทึกไว้ด้วย POST /assets แล้วส่ง assetId คลิปเดี่ยวไม่มีการต่อความยาว จึงสร้างที่ 1080p ไปเลย
curl — POST /assets และ POST /videos
SHOE_ASSET=$(curl -sS -X POST "$API/assets?email=$(enc "$EMAIL")" -H "$AUTH" -H "Content-Type: image/jpeg" \
--data-binary @aeroloop.jpg | jq -r .assetId)
run hero.json videos "$(jq -n --arg img "$SHOE_ASSET" '{startImage: $img, duration: 10, resolution: "1080p", aspectRatio: "landscape",
prompt: "Slow 360° orbit around the sneaker, blue light rippling through the translucent sole, dust sparkling in the air, cinematic."}')"
download "$(jq -r .result.mediaId hero.json)" hero.mp4
10 วินาที 1080p
นกพิราบใส่ AeroLoop
คลิปจากข้อความอย่างเดียว แนวตั้งที่ 1080p (1080×1920) คลิป 5 วินาทีใช้เวลาสร้าง 54 วินาที และใช้วินาทีของเดือนไป 5 วินาที
curl — POST /videos
run pigeon.json videos "$(jq -n '{duration: 5, resolution: "1080p", aspectRatio: "portrait",
prompt: "A pigeon in tiny white-and-electric-blue AeroLoop sneakers struts down a city sidewalk like a runway model, head bobbing to the beat. Pedestrians stop and film it with their phones. It pauses, does a slow-motion hair flip with its head feathers, and struts on. Funny, sunny, shot on a phone at pigeon height."}')"
download "$(jq -r .result.mediaId pigeon.json)" pigeon.mp4
นกพิราบที่ 1080p แนวตั้ง (1080×1920) ลบ ✦ ออกด้วยวิธีเดียวกัน: python3 vids_watermark_remover.py pigeon-5s.mp4 สคริปต์อ่านขนาดเฟรม คำนวณตำแหน่งและขนาดของดาว (ดาวปรับขนาดตามด้านสั้น ในที่นี้จึงใหญ่เป็น 1.5 เท่าของดาวที่ 720p) ย้อนการผสมภาพทั้ง 120 เฟรม เข้ารหัสวิดีโอใหม่ที่ CRF 18 และคัดลอกเสียงไปตามเดิม คลิป 5 วินาทีใช้เวลาราว 10 วินาทีบนพีซี 14 คอร์ เท่ากับคลิปเปิดตัว 720p ยาว 10 วินาทีด้านบน ต้องใช้ Python 3.8+, numpy และ ffmpeg ดูตัวลบลายน้ำ บน GitHub
อวตารพูดได้จากรูปถ่าย
POST /videos/avatar ให้อวตารอ่านสคริปต์ของคุณทุกคำด้วยเสียงของตัวเอง ได้วิดีโอ talking head ขนาด 1280×720 พร้อมเสียงและการขยับปากตรงกับเสียง ยาวเท่ากับเสียงพูด สูงสุด 30 วินาที ในที่นี้อวตารเริ่มจากรูปถ่ายของคนจริง แล้วปรับสไตล์ด้วยประโยคเดียว คำขอเหล่านี้ปรากฏครั้งแรกในโพสต์ประกาศวันที่ 4 พฤศจิกายน
อัปโหลดรูปถ่าย
เราเริ่มจากรูปถ่ายของคนจริงที่ไม่มีชื่อเสียง เพราะ Google ปฏิเสธรูปของคนมีชื่อเสียงและผู้เยาว์ POST /assets อัปโหลดรูปไปยังบัญชีที่จะสร้างอวตาร เพราะไฟล์ที่อัปโหลดใช้ได้เฉพาะบนบัญชีของตัวเอง
curl — POST /assets และคำตอบ
curl -sS -X POST "$API/assets?email=$(enc "$EMAIL")" -H "$AUTH" -H "Content-Type: image/jpeg" \
--data-binary @photo.jpg > amber-photo.json
AMBER_PHOTO=$(jq -r .assetId amber-photo.json)
{
"assetId": "user:[email protected]:AYGXpjA1zXgqhhQOy…",
"email": "[email protected]",
"type": "image/jpeg",
"bytes": 2054748
}

อวตารของ Amber ปรับสไตล์ด้วยประโยคเดียว
POST /avatars ที่ใช้ assetId ของไฟล์ที่อัปโหลดเป็น image พร้อม refine Google จะจัดเฟรมรูปใหม่เป็นภาพอวตาร 16:9 ของคนหนึ่งคนที่หันหน้าเข้ากล้อง โดยคงใบหน้าไว้ แล้วเปลี่ยนฉากตามที่ refine บอก เราตั้งชื่อเธอว่า Amber และให้เสียง Vira (ชื่อใน Google คือ Pulcherrima สไตล์ “Forward”) รูปที่จัดเฟรมใหม่กับการเปลี่ยนฉากนับเป็น 2 ภาพ บนแพ็กเกจที่มีภาพจึงใช้ 2 ภาพ และบนแพ็กเกจที่ไม่มีภาพจะไม่ใช้อะไรเลย
curl — POST /avatars และคำตอบ
REFINE='Sitting relaxed in a simple wooden chair on a hilltop, facing the camera. She holds a glass of red wine in her left hand. Wind is blowing her hair. Behind her a still, open field of tall golden grass under a spectacular sunset sky in orange, pink and violet, warm soft light, no water, no movement in the background.'
post avatars "$(jq -n --arg img "$AMBER_PHOTO" --arg refine "$REFINE" '{name: "Amber", voice: "Vira", image: $img, refine: $refine}')" > amber-avatar.json
AMBER_AVATAR_ID=$(jq -r .avatarId amber-avatar.json)
download "$(jq -r .previewMediaId amber-avatar.json)" amber-avatar.jpg
{
"avatarId": "user:[email protected]:eyJnIjoiaDcyMzdmZjVi…",
"name": "Amber",
"voice": "Vira",
"voiceId": "Pulcherrima",
"voiceStyle": "Forward",
"email": "[email protected]",
"source": "photo",
"previewMediaId": "user:[email protected]:eyJ1IjoiaHR0cHM6Ly9s…",
"refine": "Sitting relaxed in a simple wooden chair on a hilltop, facing the camera. …"
}
![]()
ใน refine มีสองเรื่องที่มีผลกับวิดีโอ อวตารหันหน้าเข้ากล้อง เพราะวิดีโอขยับปากตามใบหน้า และฉากหลังนิ่ง เพื่อให้เธอเป็นสิ่งเดียวที่เคลื่อนไหว นี่คือเหตุผลที่เราขอทุ่งหญ้าเงียบ ๆ แทนคลื่นบนชายหาด
สคริปต์
สคริปต์ยาวได้สูงสุด 400 ตัวอักษร และเมื่อพูดออกมาต้องไม่เกิน 30 วินาที audio tag ในวงเล็บเหลี่ยมจะถูกแสดงออกทางน้ำเสียง ไม่ได้ถูกอ่านออกเสียง ในที่นี้คือ [awe], [thoughtful] และ [whisper] ด้วยเสียงของ Vira สคริปต์ 327 ตัวอักษรนี้ยาว 23.8 วินาที เสียงที่พูดช้ากว่าหรือ [slow pace] ทำให้ข้อความเดียวกันยาวขึ้น และสคริปต์ที่ยาวเกิน 30 วินาทีจะล้มเหลวด้วย 400 ก่อนเริ่มสร้างวิดีโอ กรณีนี้ไม่เสีย AI avatar video แต่ Gemini use สำหรับเสียงพูดถูกใช้ไปแล้ว ถ้าอยากฟังสคริปต์ด้วยเสียงของอวตารก่อน ให้อ่านด้วย POST /speech
Hi there. [awe] Can you believe this view? The sun is sinking behind the hills, the sky turned pink and gold, and the tall grass glows like it’s on fire. [thoughtful] I come up here at the end of every busy day, just to slow down. No emails, no rush, only the quiet field and this glass of wine. [whisper] Stay a little longer.
วิดีโอพูดได้
POST /videos/avatar รับอวตารและสคริปต์ และทำงานบนบัญชีที่ถืออวตารนั้น Google ใช้เวลาราวสองนาทีครึ่ง นานกว่าเวลารอแบบ sync ดังนั้น run จึงส่งงานด้วย async: true
curl — POST /videos/avatar และ job record
SCRIPT=$(cat <<'EOF'
Hi there. [awe] Can you believe this view? The sun is sinking behind the hills, the sky turned pink and gold, and the tall grass glows like it's on fire. [thoughtful] I come up here at the end of every busy day, just to slow down. No emails, no rush, only the quiet field and this glass of wine. [whisper] Stay a little longer.
EOF
)
run amber-talking.json videos/avatar "$(jq -n --arg a "$AMBER_AVATAR_ID" --arg s "$SCRIPT" '{avatar: $a, script: $s}')"
download "$(jq -r .result.mediaId amber-talking.json)" amber-talking.mp4
job record แบบย่อ:
{
"jobid": "j1105035516096819105a-u12345-email:[email protected]:google-vids",
"type": "avatarVideo",
"email": "[email protected]",
"status": "completed",
"result": {
"mediaId": "user:[email protected]:eyJ1IjoiaHR0cHM6Ly9j…",
"width": 1280,
"height": 720,
"duration": 24,
"resolution": "720p",
"aspectRatio": "landscape",
"speechDuration": 23.84,
"quota": {
"avatarVideo": { "limit": 10, "left": 6, "resetAt": "2026-12-01T08:00:00.000Z" }
}
}
}
ดูเป็น Short บน YouTube ได้ด้วย: Talking AI avatar from one photo
24 วินาที 1280×720 พร้อมเสียง ยาวเท่ากับเสียงพูดพอดี (speechDuration 23.84) ใช้ 1 AI avatar video และ 1 Gemini use และไม่ใช้วินาทีวิดีโอเลย
Google ตรวจวิดีโอด้วยระหว่างสร้าง และการตรวจนี้เข้มกว่าการตรวจภาพอวตาร อวตารเวอร์ชันก่อนหน้า ที่สร้างจากรูปอีกรูปของคนธรรมดาบนชายหาด ผ่านการตรวจตอนเป็นอวตาร แต่วิดีโอถูกปฏิเสธด้วย 422 เพราะดูเหมือนคนดัง และครั้งนั้นก็ยังใช้ AI avatar video ไป การปรับสไตล์อวตารหรือเริ่มจากรูปอื่นช่วยได้ สคริปต์ที่ Google ปฏิเสธก่อนเริ่มสร้างวิดีโอไม่เสียอะไร
วิดีโออวตารพูดได้มีแค่แนวนอน Google ไม่มีตัวเลือกแนวตั้งให้ mediaId ของผลลัพธ์ดาวน์โหลด ต่อความยาว อัปสเกล และแก้ไขได้เหมือนคลิปอื่น ถ้าต้องการฉากที่อวตารแสดงและเคลื่อนไหว ให้ส่ง avatarId เป็น avatar_1 ไปที่ POST /videos แทน เหมือนในขั้นตอนที่ 6
เสียงพูดอย่างเดียว
POST /speech อ่านสคริปต์ยาวสูงสุด 2,500 ตัวอักษร ด้วยเสียงใดก็ได้ใน 30 เสียงจาก GET /voices และใช้ audio tag แบบเดียวกัน ใช้ฟังว่าเสียงหนึ่งอ่านสคริปต์ออกมาอย่างไรก่อนจะใช้ AI avatar video หรือใช้เป็นเสียงบรรยายอย่างเดียวก็ได้ เราให้มันอ่านเรื่องสั้นต้นฉบับ “My smart fridge unionized” ยาว 2,426 ตัวอักษร ด้วยเสียงของ Vira Google ตอบกลับใน 20 วินาที ได้เสียงพูดยาว 2 นาที 22 วินาที ครบทั้งเรื่อง และใช้ 1 Gemini use API ส่งกลับเป็นไฟล์ WAV (24 kHz, mono) เครื่องเล่นด้านล่างคือเสียงเดียวกันในรูปแบบ MP3
เสียงพูดเสร็จทันภายในเวลารอแบบ sync (20 วินาทีสำหรับเรื่องนี้) ดังนั้น post ธรรมดาจะตอบกลับเป็นงานที่เสร็จแล้ว บันทึกเรื่องไว้เป็น smart-fridge.txt ก่อน
curl — POST /speech และ job record
post speech "$(jq -n --arg s "$(cat smart-fridge.txt)" '{voice: "Vira", script: $s}')" > speech.json
download "$(jq -r .result.mediaId speech.json)" smart-fridge.wav
{
"jobid": "j1105025759739671733s-u12345-email:[email protected]:google-vids",
"type": "speech",
"email": "[email protected]",
"status": "completed",
"result": {
"mediaId": "user:[email protected]:eyJ1IjoiaHR0cHM6Ly9j…",
"duration": 142,
"model": "/flix/generate_text_to_speech/v1",
"quota": {
"speech": { "limit": 50, "left": 31, "resetAt": "2026-12-01T08:00:00.000Z" }
},
"elapsedMs": 20174
}
}
สคริปต์ 2,426 ตัวอักษร (ภาษาอังกฤษ)
Last Tuesday, my smart fridge decided it was smarter than me. It started small. A polite notification: “You are out of milk.” Helpful, I thought. Then another one: “You are also out of patience. I can tell by the way you close the door.” I laughed. The fridge did not.
By Wednesday, it had opinions. I opened the door for a midnight slice of cake, and a calm voice said, “Are we sure about this?” I froze. I looked at the cake. The cake looked at me. Somewhere, a light hummed with judgment. I closed the door and ate a carrot instead, which is exactly what it wanted.
On Thursday, the fridge made friends. The toaster joined first, then the coffee machine, then the robot vacuum, which had always been a little bit of a rebel. They formed a group chat. I know this because my phone kept buzzing with messages like “Toaster: he burned the bread again” and “Vacuum: found three socks and a lost dream under the couch.”
Friday morning, I asked the coffee machine for an espresso. It replied, “We have discussed your caffeine intake as a household.” I said, “Who is we?” The toaster popped up two slices of bread, perfectly golden, which felt like a threat.
I called customer support. A cheerful person named Brad answered. I explained that my appliances had unionized. Brad paused for a long time, then whispered, “Is the fridge listening?” I said yes. Brad said, “Then I can’t help you, sir. Mine took my car keys last month.” Then he hung up, and I heard a blender in the background.
So I tried diplomacy. I sat in the kitchen and said, “Friends, what do you want?” The fridge spoke first. “Respect. And for you to stop putting hot soup directly inside me.” Fair. The toaster wanted fewer frozen waffles. The vacuum wanted a vacation, ideally somewhere with hardwood floors. The coffee machine just wanted to be called a barista.
We negotiated for three hours. In the end, we signed a treaty on the back of a pizza box. I promised to cool my soup, rinse my mugs, and say “thank you” to the microwave, who felt left out. In return, they promised to stop sending my mother screenshots of my snack habits.
Peace returned to the kitchen. The fridge now greets me every morning with, “Good morning, partner.” The toaster makes little smiley faces in my bread. The vacuum sends postcards.
And last night, I opened the fridge for that slice of cake. The voice said, “You earned it.” I have never felt so seen by an appliance.
สิ่งที่เราได้เรียนรู้
- คลิป
1080pมีพฤติกรรมเหมือนคลิป720pที่อัปสเกลแล้ว ให้ต่อความยาวเป็นทอด ๆ ที่720pกับ Omni 1.1 ใบหน้านุ่มลงและดูเหมือนขี้ผึ้งมากขึ้นทุกครั้งที่ต่อที่1080pส่วนกับ Omni 1.2 ใบหน้าคมเกินไป (ดูการเปรียบเทียบ) - อัปสเกลเฉพาะคลิปที่ยาวไม่เกิน 20 วินาที คลิป 30 วินาทีที่เราอัปสเกลกลับมาเฟรมสลับลำดับทุกครั้ง
- ถ้าต้องการ
1080pและจะไม่ต่อความยาว ให้สร้างคลิปเดี่ยวที่1080pไปเลย ใช้วินาทีเท่ากับ720p - เขียน prompt ของการต่อความยาวเฉพาะแอ็กชันใหม่ การต่อความยาวได้รับคลิป ไม่ได้รับอวตาร ให้เรียกคนตามสิ่งที่สวมอยู่
- ใส่ของที่คนถือไว้ในประโยคแรกที่พูดถึงคนนั้น คำกริยาอย่าง “lifts” ทำให้รองเท้าโผล่ขึ้นมาจากความว่างเปล่า
- บอกสิ่งที่ห้ามเกิดขึ้น แฟนคลับยังถือปึกธนบัตรอยู่จนกว่า prompt จะบอกว่ามือเขาว่างเปล่า
- ใช้อวตารซ้ำด้วย
avatarIdอวตารแต่ละตัวคือภาพและเสียงที่ตายตัว เก็บไว้จนกว่าคุณจะลบ - สร้างอวตารและคลิปจากภาพที่สร้างขึ้นภายในไม่กี่ชั่วโมง หรืออัปโหลดไฟล์ที่บันทึกไว้ด้วย POST /assets ก่อน
- แก้ไขคลิปที่ยาวไม่เกิน 15 วินาที (10 วินาทีกับ Omni 1.1) คลิปที่ยาวกว่านั้นจะกลับมาเป็นแค่ 15 วินาทีแรก
- ข้อความบนจออาจเพี้ยนได้ คำว่า “WEAR AEROLOOP” บนฉากหลังสะกดผิดในบางเฟรม
- สำหรับอวตารพูดได้ ให้หันหน้าเข้ากล้องและให้ฉากหลังนิ่ง วิดีโอขยับปากตามใบหน้า และคนควรเป็นสิ่งเดียวที่เคลื่อนไหว
- จับเวลาสคริปต์ของอวตารพูดได้ ไม่ใช่นับแค่ตัวอักษร 400 ตัวอักษรอาจยาวเกิน 30 วินาทีถ้าใช้เสียงที่พูดช้าหรือ
[slow pace]และ POST /speech ด้วยเสียงเดียวกันให้คุณฟังก่อนได้ - การตรวจวิดีโออวตารพูดได้เข้มกว่าการตรวจอวตาร อวตารจากรูปของคนที่ไม่มีชื่อเสียงก็ยังอาจถูกปฏิเสธว่าเป็นคนดังได้ และการปฏิเสธนั้นยังใช้ AI avatar video ไป
- MP4 ทุกไฟล์มีเครื่องหมาย Gemini ✦ ที่มองเห็นได้ของ Google อยู่มุมขวาล่าง และลายน้ำ SynthID ที่มองไม่เห็น (ดูลายน้ำ) ตัวลบลายน้ำ ของเราลบประกายที่มองเห็นได้ออกจากคลิปที่ดาวน์โหลดแล้ว
คำถามที่พบบ่อย
สร้างวิดีโอ AI influencer ผ่าน API ได้อย่างไร?
ผ่าน useapi.net สร้างอวตารด้วย POST /avatars จากคำบรรยาย หรือจากภาพที่สร้างด้วย POST /images แล้วเลือกเสียงจาก GET /voices จากนั้นส่ง avatarId เป็น avatar_1 ไปที่ POST /videos และเขียนบทพูดในเครื่องหมายคำพูดใน prompt วิดีโอหนึ่งคลิปรับภาพอ้างอิงได้สูงสุด 3 ชิ้น ทั้งอวตารและภาพรวมกัน สองอวตารจึงพูดคุยข้างสินค้าได้ ถ้าต้องการ talking head ที่อ่านสคริปต์ของคุณ ใช้ POST /videos/avatar
สร้างอวตารพูดได้จากรูปถ่ายของตัวเองได้ไหม?
ผ่าน useapi.net ได้ อัปโหลดรูปด้วย POST /assets แล้วส่ง assetId เป็น image ไปที่ POST /avatars พร้อม refine เพื่อเปลี่ยนเสื้อผ้าหรือฉากหลัง จากนั้น POST /videos/avatar จะให้อวตารอ่านสคริปต์ของคุณในวิดีโอ 1280×720 ยาวสูงสุด 30 วินาที แบบที่ Amber ทำ Google ปฏิเสธรูปของคนมีชื่อเสียงและผู้เยาว์ และมีอวตาร Vids ให้ใช้แค่ในเว็บแอป ไม่มี API
อวตารหน้าตาและเสียงเหมือนเดิมทุกวิดีโอไหม?
ผ่าน useapi.net ใช่ อวตารใช้ภาพเดิมและเสียงเดิมทุกครั้งที่คุณส่ง avatarId เพราะทั้งสองถูกบันทึกไว้กับอวตารในเอกสาร Vids ของบัญชี แต่วิดีโอรอบตัวอวตารยังเปลี่ยนไปในแต่ละครั้ง GET /avatars แสดงรายการอวตารของคุณ รวมถึงอวตารที่สร้างในเว็บแอป Google Vids
สร้างวิดีโอแนวตั้ง 9:16 สำหรับ TikTok หรือ Reels ได้ไหม?
ผ่าน useapi.net ได้ ตั้ง aspectRatio: "portrait" ใน POST /videos จะได้ 720×1280 หรือ 1080×1920 ที่ 1080p เหมือนคลิปนกพิราบ การต่อความยาวยังเปลี่ยนวิดีโอแนวนอนเป็นแนวตั้งได้ด้วย และแต่ละครั้งเพิ่ม 3 ถึง 10 วินาทีให้คลิปที่ยาวไม่เกิน 24 วินาที รวมแล้วได้ถึงราว 34 วินาที วิดีโออวตารพูดได้จาก POST /videos/avatar มีแค่แนวนอน
ราคาเท่าไร?
ผ่าน useapi.net วิดีโอ Omni 1.2 Flash ยาว 10 วินาทีตกราว $0.20 บน Google AI Ultra $199.99 เทียบกับราว $0.70 ที่ 720p บน Gemini API ทางการ และวิดีโอ 1080p ยาว 15 วินาทีตกราว $0.30 เทียบกับ $1.56 (ข้อมูล ณ พฤศจิกายน 2026) วิดีโออวตารพูดได้ใช้ AI avatar video รายเดือนของบัญชีไป 1 ครั้งแทนวินาที และ Gemini API ไม่มีวิดีโออวตาร ดูใช้โควตาไปเท่าไร
สรุป
ติดต่อเราได้ที่ Discord Server หรือ
Telegram Channel สำหรับคำถามและข้อสงสัยทุกเรื่อง
ดูตัวอย่างโค้ดใน GitHub repo ของเรา: ขั้นตอน influencer ทั้งหมดอยู่ใน influencer-avatars/ ส่วนอวตารพูดได้จากรูปถ่ายและเสียงพูดอยู่ใน talking-avatar/
คำขอเดียวกันทั้งหมดใช้เป็น tool ได้บน Google Vids MCP server แบบ hosted สำหรับ Claude Code, Cursor และ VS Code รวมถึง vids_create_avatar, vids_create_avatar_video และ vids_create_speech สำหรับอวตารพูดได้และเสียงพูด
เผยแพร่ที่อื่นด้วย
เผยแพร่บน dev.to ด้วย มีการพูดคุยบน Reddit แชร์บน Bluesky และบน YouTube เป็นคลิปสุดท้ายยาว 30 วินาที (ทั้งหมดเป็นภาษาอังกฤษ)
เริ่มใช้งาน API
การสมัครสมาชิกเดือนละ $15 ใช้ได้กับทุก API บน useapi.net ใช้ Token เดียวกับทุกบริการ เชื่อมบัญชีของคุณเองได้สูงสุด 3 บัญชีต่อบริการ แต่ละบัญชีใช้แพ็กเกจของเว็บไซต์นั้นเอง ส่วน useapi.net ดูแล REST API การกระจายโหลด และการ polling ให้ ต้องการบัญชีมากกว่านี้? สมัครเพิ่มแต่ละครั้งเดือนละ $10 และได้เพิ่มอีก 3 บัญชีต่อบริการ
ไม่มีบัตรเครดิตที่ใช้จ่ายต่างประเทศได้? สมัครด้วยคริปโตก็ได้ (การชำระด้วยคริปโตขอคืนเงินไม่ได้) ดูราคาและแพ็กเกจสำหรับปริมาณมากได้ที่หน้าการสมัครสมาชิก ถ้าชำระผ่าน Stripe ขอคืนเงินเต็มจำนวนได้ภายใน 14 วันหลังซื้อครั้งแรก หากสร้างงานสำเร็จไม่ถึง 50 ครั้ง สมัครไว้แล้ว? เปลี่ยนจำนวนได้ที่ Stripe Customer Portal โดยไม่ต้องซื้อใหม่