Skip to main content
本指南将带你以最快路径使用 @youka/sdk 将原始音频文件生成渲染好的卡拉OK视频。

开始之前

  • Node.js 20 或更高版本
  • YOUKA_API_KEY 中设置 Youka API key(在 online.youka.io/accountAPI keys 下创建)
  • 本地音频文件(./song.mp3)或远程 URL

安装

npm install @youka/sdk

创建、等待、导出

import { YoukaClient, YoukaRequestError, YoukaTaskError } from "@youka/sdk";

const client = new YoukaClient({
  apiKey: process.env.YOUKA_API_KEY!,
});

async function main() {
  // 1. 从本地文件创建项目
  const projectOperation = await client.projects.create({
    source: { type: "path", path: "./song.mp3" },
    lyricsSource: { type: "transcribe" },
  });

  // 2. 等待分轨和歌词对齐完成
  const { project } = await client.projects.wait(projectOperation);
  console.log("Project ready:", project.id, project.title);

  // 3. 发起导出
  const exportOperation = await client.exports.create(project.id, {
    resolution: "1080p",
    quality: "high",
  });

  // 4. 等待导出完成
  const finishedExport = await client.exports.wait(exportOperation);
  await client.exports.download(finishedExport, {
    output: "./exports",
  });
  console.log("Export ready:", finishedExport.url);
}

main().catch((error) => {
  if (error instanceof YoukaRequestError) {
    console.error("Request failed:", error.code, error.status, error.message);
    process.exit(1);
  }
  if (error instanceof YoukaTaskError) {
    console.error("Task failed:", error.code, error.status, error.message);
    process.exit(1);
  }
  throw error;
});
client.projects.create() 会为 pathbytesurl 类型的 source 处理上传。若需要更底层的上传控制,请使用 client.uploads.*

三种 source 类型

const operation = await client.projects.create({
  source: { type: "path", path: "./song.mp3" },
});

接下来

  • Projects — 完整的 projects API
  • Exports — 本地渲染与 client.exports.prepareLocal
  • Errors — 处理 YoukaRequestErrorYoukaTaskError
  • AI agents — 推荐的轮询与重试模式