فهرست منبع

fix(tts): 强制语速 1.0 - 移除 AI 推断的'儿童友好'慢速

- plan.node.ts: 删'语速建议' 0.78~1.15 区间,改为固定 1.0
- templates.ts: DEEP_PLAN_SYSTEM_PROMPT 同步删'语速建议'段
- 两个 prompt 的 suggestedSpeed 字段说明改为'必须固定为 1.0'

根因:AI 推断语速的逻辑里,'儿童内容(3-12岁)' 对应 0.75~0.85,
散文里出现'小动物'等词就被判定儿童内容,语速降到 0.78。
0.78 听感像'死人头说话',用户已禁用该行为。
产品方要求所有书籍统一 1.0,UI slider 让用户自行选择 0.5~2.0。

同时 DB 批量修复:57 本书的 voiceSpeed 已统一为 1.0 (原本 19 本异常)。
重生成 book 63 '月光流过窗前' 音频:9:39 → 4:50,语速 2.40 → 4.81 字/秒。
MyFramework User 1 ماه پیش
والد
کامیت
9e578ea430

+ 31 - 0
deploy-package/scripts/verify-audio-394.sh

@@ -0,0 +1,31 @@
+#!/bin/bash
+set -e
+URL=$(cd /data/ai/audio/server && node -e '
+const { PrismaClient } = require("@prisma/client");
+const p = new PrismaClient();
+p.bookChapter.findUnique({ where: { id: 394 } }).then(c => { console.log(c.audioUrl); p.$disconnect(); });
+')
+echo "新音频 URL: $URL"
+curl -sS -m 30 -o /tmp/audio394-new.mp3 "$URL"
+ls -la /tmp/audio394-new.mp3
+echo
+echo '=== 验证时长 / 码率 ==='
+file /tmp/audio394-new.mp3 | head -1
+ffmpeg -i /tmp/audio394-new.mp3 -f null - 2>&1 | grep -E 'Duration|Stream' | head -3
+echo
+echo '=== 文本字数 + 新语速 ==='
+CHAR=$(cd /data/ai/audio/server && node -e '
+const { PrismaClient } = require("@prisma/client");
+const p = new PrismaClient();
+p.bookChapter.findUnique({ where: { id: 394 } }).then(c => { console.log(c.content.length); p.$disconnect(); });
+')
+SEC=$(ffmpeg -i /tmp/audio394-new.mp3 -f null - 2>&1 | grep Duration | head -1 | sed 's/Duration: //; s/,.*//' | awk -F: '{print ($1*3600+$2*60+$3)}')
+echo "文本字数: $CHAR 字"
+echo "时长: $SEC 秒 ($(echo "scale=1; $SEC/60" | bc) 分钟)"
+echo "对比旧音频: 580 秒 (9:39), 现在 $SEC 秒"
+python3 -c "
+sec=$SEC; ch=$CHAR; old=580
+print(f'提升: {old-sec:.0f} 秒 ({old/sec:.2f}x 加速)')
+print(f'新语速: {ch/sec:.2f} 字/秒')
+print(f'正常参考: 3.5-4.5 字/秒')
+"

+ 2 - 6
server/src/modules/book-generator/nodes/plan.node.ts

@@ -130,7 +130,7 @@ function buildPlanPrompt(
   "audienceType": "children|teen|adult|senior",
   "ageRange": "适用年龄范围,如 '3-6岁' / '20-40岁'",
   "suggestedVoice": "voice_01~voice_10 之一(参考下方音色表)",
-  "suggestedSpeed": 0.6~1.5 的小数(1.0=正常,0.78=慢速,1.25=快速),
+  "suggestedSpeed": 必须固定为 1.0(前端用户已经在 UI 上自行选择语速,AI 不要推断/不要降速),
   "suggestedEmotion": "neutral|happy|sad|angry|fearful|surprised",
   "toneFeature": "语气特征,如 '活泼可爱'/'沉稳专业'/'激情澎湃'"
 }
@@ -148,11 +148,7 @@ function buildPlanPrompt(
 - voice_10 稚嫩童声 - 稚嫩天真,适合童话寓言
 
 ### 5. 语速建议
-- 儿童内容(3-12岁): 0.75~0.85
-- 青少年内容(13-18岁): 0.9~1.0
-- 成人内容(18岁以上): 0.95~1.1
-- 老人/养生内容: 0.85~0.95
-- 紧张/悬疑: 1.05~1.15`;
+**统一固定为 1.0**(前端 UI 已开放 0.5~2.0 滑块让用户自行选择语速,AI 不要按内容类型推断,也不要降速。0.78/0.85 等"儿童友好语速"已被产品方禁用,因为 Edge-TTS 实测听感像"死人头")`;
 }
 
 /**

+ 2 - 6
server/src/modules/book-generator/prompts/templates.ts

@@ -237,7 +237,7 @@ export const DEEP_PLAN_SYSTEM_PROMPT = `你是一位资深图书策划编辑,
   "audienceType": "children|teen|adult|senior",
   "ageRange": "适用年龄范围,如 '3-6岁' / '20-40岁'",
   "suggestedVoice": "voice_01~voice_10 之一(参考下方音色表)",
-  "suggestedSpeed": 0.6~1.5 的小数(1.0=正常,0.78=慢速,1.25=快速),
+  "suggestedSpeed": 必须固定为 1.0(前端用户已经在 UI 上自行选择语速,AI 不要推断/不要降速),
   "suggestedEmotion": "neutral|happy|sad|angry|fearful|surprised",
   "toneFeature": "语气特征,如 '活泼可爱'/'沉稳专业'/'激情澎湃'"
 }
@@ -255,11 +255,7 @@ export const DEEP_PLAN_SYSTEM_PROMPT = `你是一位资深图书策划编辑,
 - voice_10 稚嫩童声 - 稚嫩天真,适合童话寓言
 
 ### 8. 语速建议
-- 儿童内容(3-12岁): 0.75~0.85
-- 青少年内容(13-18岁): 0.9~1.0
-- 成人内容(18岁以上): 0.95~1.1
-- 老人/养生内容: 0.85~0.95
-- 紧张/悬疑: 1.05~1.15`;
+**统一固定为 1.0**(前端 UI 已开放 0.5~2.0 滑块让用户自行选择语速,AI 不要按内容类型推断,也不要降速。0.78/0.85 等"儿童友好语速"已被产品方禁用,因为 Edge-TTS 实测听感像"死人头")`;
 
 /**
  * 富信息大纲系统提示词