You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用OpenAI GPT-5 JS代码翻译SRT字幕遇API超时问题求助

解决OpenAI API翻译长日文字幕超时问题及MacOS免费替代方案

一、修复API超时问题

1. 调整客户端超时设置

长文件处理需要更长计算时间,默认超时阈值不足以支撑,可直接在OpenAI客户端初始化时延长超时时间:

import fs from "fs";
import OpenAI from "openai";
// 设置60秒超时(可根据文件大小调整为更大值)
const client = new OpenAI({ timeout: 60000 });
const args = process.argv;

// 后续原有代码保持不变

2. 直接处理SRT文件,避免转PDF(推荐)

转PDF会额外增加文件体积和解析复杂度,直接读取SRT文本并分块处理是更高效的方案:
SRT格式遵循序号 → 时间戳 → 字幕内容 → 空行的结构,可按此规则分割为30-50行的小字幕块,分别调用API翻译后再合并结果,同时保留原SRT格式结构:

import fs from "fs";
import OpenAI from "openai";

const client = new OpenAI({ timeout: 60000 });
const args = process.argv;

// 读取并分割SRT文件为独立字幕块
const srtContent = fs.readFileSync(args[2], "utf8");
const subtitleBlocks = srtContent.split(/\n\n+/).filter(block => block.trim() !== "");

let translatedSRT = "";

for (const block of subtitleBlocks) {
    const lines = block.split("\n");
    const sequence = lines[0];
    const timestamp = lines[1];
    const japaneseText = lines.slice(2).join("\n");

    // 调用API仅翻译字幕内容部分
    const completion = await client.chat.completions.create({
        model: "gpt-4o", // 注意:官方暂未正式发布GPT-5,替换为可用的官方模型
        messages: [
            {
                role: "user",
                content: `Translate the following Japanese text to natural, context-accurate English:\n${japaneseText}`
            }
        ]
    });

    const englishText = completion.choices[0].message.content.trim();
    // 拼接回标准SRT格式
    translatedSRT += `${sequence}\n${timestamp}\n${englishText}\n\n`;
}

console.log(translatedSRT);

二、MacOS免费替代方案

若不想依赖OpenAI API,可使用本地开源模型完成翻译:

  • Ollama:免费的本地大模型运行工具,完美支持MacOS
    1. 安装Ollama:下载官方安装包直接运行安装
    2. 拉取翻译模型:终端执行ollama pull llama3(Llama 3 70B版本翻译效果较好)
    3. 替换API调用为本地模型请求:
import { exec } from "child_process";
import util from "util";
const execPromise = util.promisify(exec);

async function translateWithOllama(text) {
    const { stdout } = await execPromise(`ollama run llama3 "Translate this Japanese text to natural, context-accurate English: ${text}"`);
    return stdout.trim();
}

// 后续分块处理逻辑与之前一致,将API调用替换为上述函数即可

内容的提问来源于stack exchange,提问作者ardarvin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 15:33:12