feat: 新增运动节拍训练工具套件与子工具页面
新增运动节拍RepClock全套小程序页面、后端API与数据库服务,新增subhub子工具汇总页面,优化全局主页样式与配置,为web静态资源添加版本缓存参数,补充配套调试脚本
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
// 一次性探针:验证 DashScope CosyVoice(SpeechSynthesizer) 的正确 model/voice 参数组合
|
||||
// 用法:node dev_test_scripts/debug/debug_tts_cosy_probe.js
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
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
|
||||
})
|
||||
}
|
||||
const apiKey = process.env.DASHSCOPE_API_KEY || ''
|
||||
|
||||
const CASES = [
|
||||
['cosyvoice-v3-flash/longanyang (当前配置)', { model: 'cosyvoice-v3-flash', input: { text: '测试一下', voice: 'longanyang', format: 'mp3', sample_rate: 24000 } }],
|
||||
['cosyvoice-v2/Cherry', { model: 'cosyvoice-v2', input: { text: '测试一下', voice: 'Cherry', format: 'mp3', sample_rate: 24000 } }],
|
||||
['cosyvoice-v2/longxiaoxue', { model: 'cosyvoice-v2', input: { text: '测试一下', voice: 'longxiaoxue', format: 'mp3', sample_rate: 24000 } }],
|
||||
['cosyvoice-v1/Cherry', { model: 'cosyvoice-v1', input: { text: '测试一下', voice: 'Cherry', format: 'mp3', sample_rate: 24000 } }],
|
||||
['cosyvoice-v2-flash/Cherry', { model: 'cosyvoice-v2-flash', input: { text: '测试一下', voice: 'Cherry', format: 'mp3', sample_rate: 24000 } }],
|
||||
]
|
||||
|
||||
;(async () => {
|
||||
for (const [name, body] of CASES) {
|
||||
const t0 = Date.now()
|
||||
try {
|
||||
const resp = await fetch('https://dashscope.aliyuncs.com/api/v1/services/audio/tts/SpeechSynthesizer', {
|
||||
method: 'POST',
|
||||
headers: { 'Authorization': `Bearer ${apiKey}`, 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(body),
|
||||
})
|
||||
const txt = await resp.text().catch(() => '')
|
||||
const ok = resp.ok && txt.includes('http')
|
||||
console.log(`[${ok ? '✔' : '✘'}]`, name, 'HTTP', resp.status, (Date.now() - t0) + 'ms', (resp.ok ? txt.slice(0, 120) : txt.slice(0, 200)).replace(/\s+/g, ' '))
|
||||
} catch (e) {
|
||||
console.log('[✘]', name, 'fetch 异常:', String(e && e.message || e))
|
||||
}
|
||||
}
|
||||
process.exit(0)
|
||||
})()
|
||||
Reference in New Issue
Block a user