实现基于Next.js的播客生成器Web应用,包含以下主要功能: - 完整的Next.js项目结构配置 - 播客生成API接口 - 音频文件服务API - TTS配置管理 - 响应式UI组件 - 本地存储和状态管理 - 音频可视化组件 - 全局样式和主题配置 新增配置文件包括: - Next.js、Tailwind CSS、ESLint等工具配置 - 环境变量示例文件 - 启动脚本和构建检查脚本 - 类型定义和工具函数库
45 lines
1.4 KiB
TypeScript
45 lines
1.4 KiB
TypeScript
import { NextRequest, NextResponse } from 'next/server';
|
|
import path from 'path';
|
|
import { promises as fs } from 'fs';
|
|
|
|
export async function POST(request: NextRequest) {
|
|
try {
|
|
const { ttsConfigName } = await request.json();
|
|
|
|
if (!ttsConfigName) {
|
|
return NextResponse.json(
|
|
{ success: false, error: '缺少 ttsConfigName 参数' },
|
|
{ status: 400 }
|
|
);
|
|
}
|
|
|
|
const configPath = path.join(process.cwd(), '..', 'config', ttsConfigName);
|
|
const configContent = await fs.readFile(configPath, 'utf-8');
|
|
const ttsConfig = JSON.parse(configContent);
|
|
|
|
// 假设 ttsConfig 结构中有一个 `voices` 字段
|
|
// 如果没有,可能需要根据 ttsConfig 的 provider 调用不同的逻辑来获取声音列表
|
|
if (ttsConfig && ttsConfig.voices) {
|
|
// 模拟添加 sample_audio_url
|
|
const voicesWithSampleAudio = ttsConfig.voices.map((voice: any) => ({
|
|
...voice,
|
|
sample_audio_url: `${voice.audio}`, // 假设有一个示例音频路径
|
|
}));
|
|
return NextResponse.json({
|
|
success: true,
|
|
data: voicesWithSampleAudio,
|
|
});
|
|
} else {
|
|
return NextResponse.json(
|
|
{ success: false, error: '未找到声音配置' },
|
|
{ status: 404 }
|
|
);
|
|
}
|
|
} catch (error) {
|
|
console.error('Error fetching TTS voices:', error);
|
|
return NextResponse.json(
|
|
{ success: false, error: '无法获取TTS声音列表' },
|
|
{ status: 500 }
|
|
);
|
|
}
|
|
} |