使用 Node.js 创建视频的 WebVTT 文件:全面指南 - Blockchain.News

使用 Node.js 创建视频的 WebVTT 文件:全面指南

realtime news Jun 18, 2024 07:43

在本详细指南中,学习如何使用 Node.js 和 AssemblyAI API 创建视频的 WebVTT 字幕文件。

使用 Node.js 创建视频的 WebVTT 文件:全面指南

WebVTT (.vtt) 或网络视频文本轨格式是一种广泛支持的视频字幕格式。在本指南中,您将学习如何使用 Node.js 和 AssemblyAI API 为视频创建 WebVTT 文件。

步骤 1:设置开发环境

首先,在您的系统上安装 Node.js 18 或更高版本。创建一个新项目文件夹,切换到该目录,并初始化一个新的 Node.js 项目:

mkdir vtt-subtitles
cd vtt-subtitles
npm init -y

打开 package.json 文件,并添加 type: "module", 到属性列表:

{
  ...
  "type": "module",
  ...
}

这将告诉 Node.js 使用 ES 模块语法来导出和导入模块。然后,安装 AssemblyAI JavaScript SDK

npm install --save assemblyai

接下来,从您的 仪表盘 获取一个 AssemblyAI API 密钥。将其设置为 ASSEMBLYAI_API_KEY 环境变量:

# Mac/Linux:
export ASSEMBLYAI_API_KEY=<YOUR_KEY>

# Windows:
set ASSEMBLYAI_API_KEY=<YOUR_KEY>

步骤 2:转录您的视频

开发环境准备就绪后,开始转录您的视频文件。使用 这个示例视频 进行练习。创建一个名为 index.js 的文件,并添加以下代码:

import { AssemblyAI } from 'assemblyai';

const client = new AssemblyAI({ apiKey: process.env.ASSEMBLYAI_API_KEY });

const transcript = await client.transcripts.transcribe({
  audio: "https://storage.googleapis.com/aai-web-samples/aai-overview.mp4",
});

如果转录成功,transcript 对象将被填充。验证并记录任何错误:

if (transcript.status === "error") {
  throw new Error(transcript.error);
}

步骤 3:生成 WebVTT 文件

以 WebVTT 格式生成字幕。导入必要的模块以将 WebVTT 文件保存到磁盘:

import { writeFile } from "fs/promises"

添加以下代码以生成并下载 VTT 文件:

const vtt = await client.transcripts.subtitles(transcript.id, "vtt");
await writeFile("./subtitles.vtt", vtt);

如果需要,自定义每个字幕的最大字符数:

const vtt = await client.transcripts.subtitles(transcript.id, "vtt", 32);
await writeFile("./subtitles.vtt", vtt);

步骤 4:运行脚本

从您的 Shell 运行脚本:

node index.js

执行后,您将在磁盘上找到一个新的 subtitles.vtt 文件:

WEBVTT

00:00.200 --> 00:04.430
AssemblyAI 正在构建 AI 系统,帮助您构建 AI 应用程序

00:04.462 --> 00:08.694
利用口语数据。 我们创建了超人类 AI 模型用于语音识别,

00:08.774 --> 00:13.062
摘要,高级语言模型扩展口语数据等

接下来的步骤

现在您有了字幕文件,可以在视频播放器中配置它,或者将其上传到 YouTube Studio。此外,可以探索其他工具来捆绑或烧录字幕到您的视频中。查看 AssemblyAI 的 音频智能模型LeMUR,以便在您的音频和视频应用中获得更多功能。

有关更多教育内容,请访问 AssemblyAI 博客 或他们的 YouTube 频道

Image source: Shutterstock