| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- const { PrismaClient } = require('@prisma/client');
- const prisma = new PrismaClient();
- async function testNewAudioGeneration() {
- console.log('\n🎵 测试新生成的音频路径\n');
- console.log('=' .repeat(60));
-
- const bookId = 5;
-
- // 找到一个小节
- const subsection = await prisma.bookChapter.findFirst({
- where: {
- bookId,
- level: 3
- },
- select: {
- id: true,
- title: true,
- content: true,
- audioUrl: true,
- }
- });
-
- if (!subsection) {
- console.log('❌ 找不到小节\n');
- await prisma.$disconnect();
- return;
- }
-
- console.log(`测试小节: ${subsection.title}`);
- console.log(`ID: ${subsection.id}`);
- console.log(`当前audioUrl: ${subsection.audioUrl || '无'}\n`);
-
- // 调用API重新生成音频(使用批量生成)
- console.log('📤 调用批量音频生成API...\n');
-
- try {
- const response = await fetch(`http://localhost:3000/api/book-generator/langgraph/books/${bookId}/audio`, {
- method: 'POST',
- headers: { 'Content-Type': 'application/json' },
- body: JSON.stringify({ voiceId: 'cherry' }),
- });
-
- const data = await response.json();
-
- console.log('API响应:');
- console.log(` 状态码: ${response.status}`);
- console.log(` code: ${data.code}`);
- console.log(` message: ${data.message}\n`);
-
- if (data.code !== 0) {
- console.log('❌ API调用失败\n');
- await prisma.$disconnect();
- return;
- }
-
- console.log('✅ API调用成功,等待15秒让音频生成完成...\n');
- await new Promise(resolve => setTimeout(resolve, 15000));
-
- // 检查新生成的音频URL
- console.log('📊 检查新生成的音频URL:\n');
-
- const updatedChapter = await prisma.bookChapter.findUnique({
- where: { id: subsection.id },
- select: {
- id: true,
- title: true,
- audioUrl: true,
- audioDuration: true,
- }
- });
-
- console.log(`章节: ${updatedChapter.title}`);
- console.log(`audioUrl: ${updatedChapter.audioUrl || '无'}`);
- console.log(`audioDuration: ${updatedChapter.audioDuration || 0}秒\n`);
-
- // 检查文件
- const fs = require('fs');
- const path = require('path');
-
- const uuid = updatedChapter.audioUrl.match(/\/uploads\/([^\/]+)\//)?.[1];
- if (uuid) {
- const filePath = path.join(__dirname, 'uploads', uuid, 'output.mp3');
- const segmentPath = path.join(__dirname, 'uploads', uuid, 'segment_0.mp3');
-
- console.log('📁 检查文件:\n');
- console.log(`output.mp3: ${fs.existsSync(filePath) ? '✅ 存在' : '❌ 不存在'}`);
- console.log(`segment_0.mp3: ${fs.existsSync(segmentPath) ? '✅ 存在' : '❌ 不存在'}\n`);
-
- if (fs.existsSync(filePath)) {
- const stats = fs.statSync(filePath);
- console.log(`output.mp3 大小: ${(stats.size / 1024).toFixed(2)} KB\n`);
- }
-
- console.log('=' .repeat(60));
- console.log('\n📋 测试结论:\n');
-
- if (updatedChapter.audioUrl?.includes('output.mp3')) {
- console.log('✅ 音频URL使用output.mp3,路径正确!\n');
- } else if (updatedChapter.audioUrl?.includes('segment_0.mp3')) {
- console.log('❌ 音频URL仍使用segment_0.mp3,需要修复\n');
- } else {
- console.log('⚠️ 未知情况\n');
- }
- }
-
- } catch (error) {
- console.log('❌ 测试失败:', error.message);
- console.log(error.stack);
- }
-
- await prisma.$disconnect();
- }
- testNewAudioGeneration().catch(console.error);
|