聲動人像VideoRetalk是一個人物視頻產生模型,可基於人物視頻和人聲音頻,產生人物講話口型與輸入音頻相匹配的新視頻。本文檔介紹了該模型提供的視頻產生能力的API調用方法。
HTTP調用介面
VideoRetalk視頻產生API僅支援通過HTTP進行調用。為了減少等待時間並且避免請求逾時,採用了非同步處理方法。因此,您需要發起兩個請求來產生視頻。
- 作業提交介面:您需要先發送一個請求來建立視頻產生任務。任務提交後,將返回該任務ID。
- 作業任務狀態查詢和結果擷取介面:使用上一步獲得的任務ID,再發送一個請求,擷取任務狀態及產生的視頻。
前提條件
您需要已擷取API Key並配置API Key到環境變數。
輸入限制
-
視頻要求:
- 檔案限制:支援mp4、avi、mov,檔案≤300MB,2秒<時間長度<120秒。
- 視頻限制:15fps≤幀率≤60fps;編碼採用H.264或H.265;邊長不低於640,不大於2048。
- 視頻內容:視頻應為人物正面出鏡的近景畫面。避免大角度側臉或人臉過小。
-
音頻要求:
- 檔案限制:支援wav、mp3、aac,檔案≤30MB,2秒<時間長度<120秒。
- 音頻內容:音頻中需包含清晰、響亮的人聲語音,並去除了環境噪音、背景音樂等聲音幹擾資訊。
-
人物參考圖要求:
- 檔案限制:支援jpeg、jpg、png、bmp、webp,檔案≤10MB。
- 圖片內容:需包含一張清晰的人物正臉,且該人物出現在視頻畫面中。也可從視頻畫面中截圖用作人物參考圖。
-
上傳檔案連結要求:
- 上傳的視頻、音頻、影像檔支援HTTP連結,不支援本地路徑。也可使用平台提供的臨時儲存空間,上傳本地檔案並建立連結。
- 如果使用臨時儲存空間上傳檔案後擷取到的
oss://首碼URL,在HTTP要求標頭中必須添加X-DashScope-OssResourceResolve: enable參數。未添加該參數會導致報錯No connection adapters were found for 'oss://...'。詳細說明請參見上傳檔案擷取臨時URL。
作業提交介面
入參描述
欄位 | 類型 | 傳參方式 | 必選 | 描述 | 樣本值 |
|---|---|---|---|---|---|
Content-Type | String | Header | 是 | 請求類型:application/json | application/json |
Authorization | String | Header | 是 | API-Key,例如:Bearer d1**2a | Bearer d1**2a |
X-DashScope-Async | String | Header | 是 | 設定為 | enable |
model | String | Body | 是 | 指明需要調用的模型 | videoretalk |
input.video_url | String | Body | 是 | 使用者上傳的視頻檔案 URL。 URL 需為公網可訪問的地址,並支援 HTTP 或 HTTPS 協議。 視頻檔案要求:
| http://aaa/bbb.mp4 |
input.audio_url | String | Body | 是 | 使用者上傳的音頻檔案 URL。 URL 需為公網可訪問的地址,並支援 HTTP 或 HTTPS 協議。 音頻檔案要求:
| http://aaa/bbb.wav |
input.ref_image_url | String | Body | 否 | 使用者上傳的人臉參考圖 URL。 URL 需為公網可訪問的地址,並支援 HTTP 或 HTTPS 協議。 當輸入視頻中存在多張人臉時,您可以通過該參數指定用於口型匹配的人臉。如果視頻中僅有一張人臉,則無需進行指定。 若不輸入人臉參考圖,預設將選擇視頻中第一個有人臉的畫面中,人臉佔比最大的人物為目標。 影像檔要求:
| http://aaa/bbb.jpg |
parameters.video_extension | Boolean | Body | 否 | 當輸入的音頻時間長度大於視頻時間長度時,是否擴充視頻長度。預設值為
| false |
parameters.query_face_threshold | Integer | Body | 否 | 當輸入人臉參考圖時,可通過該值調整人臉匹配的信賴度。 取值範圍為120-200。值越小,人臉參考圖的匹配越寬鬆;值越大,人臉參考圖的匹配越嚴格。預設值為170。 備忘:input.ref_image_url 為空白時該參數不生效。 | 170 |
出參描述
欄位 | 類型 | 描述 | 樣本值 |
|---|---|---|---|
output.task_id | String | 提交非同步任務的作業 ID,實際作業結果需要通過非同步任務查詢介面擷取。 | a8532587-fa8c-4ef8-82be-0c46b17950d1 |
output.task_status | String | 提交非同步任務後的作業狀態。 | “PENDING” |
request_id | String | 本次請求的系統唯一碼。 | 7574ee8f-38a3-4b1e-9280-11c33ab46e51 |
請求樣本
響應樣本
作業任務狀態查詢和結果擷取介面
入參描述
欄位 | 類型 | 傳參方式 | 必選 | 描述 | 樣本值 |
|---|---|---|---|---|---|
Authorization | String | Header | 是 | API-Key,例如:Bearer d1**2a。 | Bearer d1**2a |
task_id | String | Url Path | 是 | 需要查詢作業的task_id,為作業提交介面返回的值。 | a8532587-fa8c-4ef8-82be-0c46b17950d1 |
出參描述
欄位 | 類型 | 描述 | 樣本值 |
|---|---|---|---|
output.task_id | String | 查詢作業的 task_id。 | a8532587-fa8c-4ef8-82be-0c46b17950d1 |
output.task_status | String | 被查詢作業的作業狀態。 | 任務狀態:
|
output.video_url | String | 產生的視頻,video_url有效期間為作業完成後24小時。 | |
usage.video_duration | Float | 本次請求產生視頻時間長度計量,單位:秒。 | "video_duration": 10.23 |
usage.video_ratio | String | 本次請求產生視頻的畫幅類型,該值為standard,預設按原視頻比例輸出。 | "video_ratio": "standard" |
usage.size | String | 本次請求產生視頻的解析度,和輸入視頻解析度一致 | "size": "1080*1920" |
usage.fps | Integer | 本次請求產生視頻的幀率,和輸入視訊框架率一致 | "fps": 25 |
request_id | String | 本次請求的系統唯一碼。 | 7574ee8f-38a3-4b1e-9280-11c33ab46e51 |
請求樣本
響應樣本
異常響應樣本
狀態代碼說明
大模型服務通用狀態代碼請查閱:錯誤碼
同時本模型還有如下特定錯誤碼:
HTTP 返回碼 | 錯誤碼(code) | 錯誤資訊(message) | 含義說明 |
|---|---|---|---|
400 | InvalidParameter | Field required: xxx | 缺少入參,或格式錯誤 |
400 | InvalidURL.ConnectionRefused | Connection to ${url} refused, please provide avaiable URL | 下載被拒絕,請提供可用的url |
400 | InvalidURL.Timeout | Download ${url} timeout, please check network connection. | 下載逾時,60s逾時 |
400 | InvalidFile.Size | Invalid file size. The video/audio/image file size must be less than **MB. | 視頻/音頻/影像檔必須小於**MB |
400 | InvalidFile.Format | Invalid file format,the request file format is one of the following types: MP4, AVI, MOV, MP3, WAV, AAC, JPEG, JPG, PNG, BMP, and WEBP. | 檔案格式不符合要求,視頻支援mp4、avi、mov;音頻支援mp3, wav, aac;圖片支援jpg, jpeg, png, bmp, webp |
400 | InvalidFile.Resolution | Invalid video resolution. The height or width of video must be 640 ~ 2048. | 視頻邊長需介於640-2048之間 |
400 | InvalidFile.FPS | Invalid video FPS. The video FPS must be 15 ~ 60. | 視訊框架率需介於15-60fps之間。 |
400 | InvalidFile.Duration | Invalid file duration. The video/audio file duration must be 2s ~ 120s. | 視頻/音頻時間長度需介於2-120s之間 |
400 | InvalidFile.ImageSize | The size of image is beyond limit. | 圖片大小超出限制。 要求圖片長寬比例不大於2,且最長邊不大於4096 |
400 | InvalidFile.Openerror | Invalid file, cannot open file as video/audio/image. | 視頻/音頻/影像檔無法開啟 |
400 | InvalidFile.Content | The input image has no human body or multi human bodies. Please upload other image with single person. | 輸入圖片中沒有人或有多人 |
400 | InvalidFile.FaceNotMatch | There are no matched face in the video with the provided reference image. | 參考圖與視頻人臉匹配失敗 |
常見問題
- 輸入語音和視頻長度不一致,會如何處理? 預設將按音頻、視頻兩者中時間長度較短的來截斷。 當輸入的音頻時間長度大於視頻時間長度時,並希望按音頻長度來產生時,可將入參的視頻擴充(parameters.video_extension)值設為true,演算法將使用原視頻畫面“倒放-正放”交替模式擴充視頻時間長度,直至與音頻相同。
- 輸入音頻中有靜音的情況,會如何處理? 音頻靜音的時段,預期視頻中人物也會閉嘴。
- 輸入視頻的畫面中有無人/臉拍不全的情況,會如何處理? 若音頻中有人聲,但畫面無人或未出現人物嘴型,則保留原視頻畫面,音頻正常播放。
- 輸入視頻的畫面中有多人的情況,會如何處理? 僅支援替換一個人物。演算法會按照輸入人臉參考圖(input.ref_image_url),識別指定人臉。若未輸入人臉參考圖,則預設選擇第一個有人臉畫面中,佔比最大的人臉。