feat(video-from-script): 添加 TTS 音色管理和解析功能

- 在 config.json 中添加 `ttsVoices` 音色库,支持音色名称到 ID 的映射
- 实现 `resolveVoice` 函数,将音色名称解析为实际 ID
- 更新账号系统和批量管道,支持通过音色名称配置 TTS 语音
- Excel 导入和 CLI 参数新增音色字段,支持按行指定不同音色
This commit is contained in:
2026-05-08 23:53:37 +08:00
parent 4a15e38169
commit 18fce1b5a1
12 changed files with 66 additions and 25 deletions

View File

@@ -8,11 +8,12 @@ const fs = require('fs')
const path = require('path')
// 路径常量(基于 lib/ 的父目录 scripts/
const SCRIPTS_DIR = path.join(__dirname, '..')
const SKILLS_DIR = path.join(SCRIPTS_DIR, '..')
const PROJECT_ROOT = path.join(SKILLS_DIR, '..', '..')
const CONFIG_PATH = path.join(SKILLS_DIR, 'config.json')
const ACCOUNTS_DIR = path.join(PROJECT_ROOT, '..', 'accounts')
const SCRIPTS_DIR = path.join(__dirname, '..') // scripts/
const SKILLS_DIR = path.join(SCRIPTS_DIR, '..') // video-from-script/
const SKILL_PARENT_DIR = path.join(SKILLS_DIR, '..') // skills/
const PROJECT_ROOT = path.join(SKILLS_DIR, '..', '..') // .claude/
const CONFIG_PATH = path.join(SKILL_PARENT_DIR, 'config.json') // skills/config.json
const ACCOUNTS_DIR = path.join(PROJECT_ROOT, '..', 'accounts') // 美图/accounts
// ============================================================================
// 配置 & Manifest
@@ -22,6 +23,15 @@ function loadConfig() {
return JSON.parse(fs.readFileSync(CONFIG_PATH, 'utf-8'))
}
/**
* 解析音色:名称 → ID。如果是音色库中的名称则查 ttsVoices 映射表,否则原样返回。
*/
function resolveVoice(voice, config) {
if (!voice) return voice
const voices = (config || loadConfig()).ttsVoices || {}
return voices[voice] || voice
}
function loadManifest(manifestPath) {
return JSON.parse(fs.readFileSync(manifestPath, 'utf-8'))
}
@@ -221,6 +231,7 @@ module.exports = {
CONFIG_PATH,
ACCOUNTS_DIR,
loadConfig,
resolveVoice,
loadManifest,
saveManifest,
loadAccountConfig,