d4bf3627fd
新增运动节拍RepClock全套小程序页面、后端API与数据库服务,新增subhub子工具汇总页面,优化全局主页样式与配置,为web静态资源添加版本缓存参数,补充配套调试脚本
39 lines
1.9 KiB
JavaScript
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) }) |