Files
Toolbox/dev_test_scripts/debug/debug_tts_live_probe.js
T
yangxiangyuan d4bf3627fd feat: 新增运动节拍训练工具套件与子工具页面
新增运动节拍RepClock全套小程序页面、后端API与数据库服务,新增subhub子工具汇总页面,优化全局主页样式与配置,为web静态资源添加版本缓存参数,补充配套调试脚本
2026-09-09 14:43:06 +08:00

39 lines
1.9 KiB
JavaScript

// 一次性探针:本地直连 DashScope 复现 TTS 合成,定位“合成中”卡住/失败的真实原因
// 用法:node dev_test_scripts/debug/debug_tts_live_probe.js
const fs = require('fs')
const path = require('path')
// 与 src/server/index.js 一致的 creds 加载(只读 key 名不含值打印)
const userProfile = process.env.USERPROFILE || process.env.HOME || require('os').homedir()
const credsPath = path.join(userProfile, 'Toolbox_local_creds.env.local')
if (fs.existsSync(credsPath)) {
fs.readFileSync(credsPath, 'utf-8').split(/\r?\n/).forEach(line => {
const trimmed = line.trim()
if (!trimmed || trimmed.startsWith('#')) return
const idx = trimmed.indexOf('=')
if (idx <= 0) return
const key = trimmed.slice(0, idx).trim()
const val = trimmed.slice(idx + 1).trim()
if (key && !Object.prototype.hasOwnProperty.call(process.env, key)) process.env[key] = val
})
}
console.log('[probe] DASHSCOPE_API_KEY 已加载:', !!process.env.DASHSCOPE_API_KEY, process.env.DASHSCOPE_API_KEY ? '(len=' + process.env.DASHSCOPE_API_KEY.length + ')' : '')
const tts = require('../../src/server/mp_rep_clock/tts.js')
const text = process.argv[2] || '下一组'
const voice = process.argv[3] || 'female_01'
const timer = setTimeout(() => { console.log('[probe] 超时 60s 强制退出'); process.exit(2) }, 60000)
;(async () => {
const t0 = Date.now()
const r = await tts.synthesize(text, voice)
console.log('[probe] synthesize(', JSON.stringify(text), ',', voice, ') 结果=', JSON.stringify(r), '耗时', Date.now() - t0, 'ms')
if (r && r.url) {
const abs = path.join(process.cwd(), String(r.url).replace(/^\/+/, '').replace(/\//g, path.sep))
if (fs.existsSync(abs)) console.log('[probe] 文件存在:', abs, fs.statSync(abs).size, 'bytes')
}
clearTimeout(timer)
process.exit(r && r.ok ? 0 : 1)
})().catch(e => { console.error('[probe] 异常:', e); clearTimeout(timer); process.exit(1) })