Files
yaoyaoai/scripts/nodejs/voice_generate.js
fengchuanhn@gmail.com 09f37e3206 11
2026-05-18 14:12:59 +08:00

53 lines
1.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"use strict";
/**
* 文案转语音(对齐 Electron generateAudio / CosyVoice
*/
const fs = require("fs");
const path = require("path");
const os = require("os");
const pipelineNative = require("./pipeline_native.js");
const desktopConfig = require("./desktop_config.js");
const OUTPUT_DIR = path.join(os.tmpdir(), "aiclient-generated-speech");
globalThis.__nodejsMain = async function (params) {
const p = params || {};
const apiKey =
desktopConfig.get("BAILIAN_API_KEY") ||
desktopConfig.get("DASHSCOPE_API_KEY");
if (!apiKey) {
return {
success: false,
error: "缺少 BAILIAN_API_KEY或 DASHSCOPE_API_KEY请在配置中设置",
};
}
const text = String(p.text || "").trim();
if (!text) {
return { success: false, error: "请先在「视频文案编辑」中填写文案内容" };
}
const voice = String(p.voice || "").trim();
if (!voice) {
return { success: false, error: "请先选择音色" };
}
fs.mkdirSync(OUTPUT_DIR, { recursive: true });
const ext = String(p.format || "mp3").toLowerCase() === "wav" ? ".wav" : ".mp3";
const outputPath =
p.outputPath ||
path.join(OUTPUT_DIR, `speech_${Date.now()}${ext}`);
return pipelineNative.qwenTtsSynthesize({
apiKey,
text,
voice,
model: p.model,
instruction: p.instruction,
languageType: p.languageType,
outputPath,
});
};