实验名称:儿童故事管理平台
实验一:AI故事生成平台
一、实验要求
1.设计并实现 Story 数据模型,至少包含标题、故事梗概、正文、创建时间等字段。
2.集成百度文心一言或其他大语言模型API,开发一个后端服务。该服务接收用户提供的故事关键词(如“宇航员、小狗、月球”),调用AI生成一个完整的儿童故事,并保存至数据库。
二、实验步骤
1.大语言模型AI:阿里云百炼
2.阅读api参考中的教程,申请api key


3.Base URL:
https://dashscope.aliyuncs.com/compatible-mode/v1
4.模型名称:qwen-plus
5.运用trae,将以上关键信息以及实验要求发送给ai,即可实现。
6.截图如下:



三、实验总结
问题
1.没有认真阅读教程,只告诉了ai“api key”没有告诉模型名称以及base_url,导致出现错误
2.页面显示信息不全面,不能满足实验要求
解决方案
1.反思,详细阅读文档,对调用api有了更深入的了解。
2.通过更详细的表述,引导ai实现功能更加健全完善的页面。
实验二:AI插图生成平台
一、实验要求
1.扩展 Story 模型,增加用于存储插图URL或文件路径的字段。
2.集成百度文心一格或同类文生图API,开发一个后端服务。该服务接收一个故事标题或一段故事正文,调用AI生成一张符合故事意境的插图。
3.实现将生成的图片保存至本地或云存储,并将图片信息与对应的 Story 记录关联。
二、实验步骤
1.采用同步接口,HTTP调用北京地域:POST https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
2.阅读api参考中的文档,获取请求参数和响应参数,以及java sdk调用的代码示例。
3.将api key以及上述获取的信息发送给trae,经过多次调试,即可实现
4.截图如下:



三、实验总结
1.问题1:AI生成图片质量不稳定
问题描述:调用文生图API时,某些故事生成的插图与预期不符,出现元素混乱或风格不统一的情况
解决方案:
优化提示词工程:设计了一套提示词优化模板,将故事内容拆解为"主体+环境+风格+细节"四个部分,显著提升了生成质量
添加负面提示词:在API调用中加入负面提示词,排除不想要的元素和风格,如low quality, blurry, distorted
2.问题2:图片存储路径冲突
问题描述:多用户同时生成故事时,图片文件名可能重复导致覆盖问题
解决方案:
采用UUID命名:使用UUID + 时间戳生成唯一文件名,如story_550e8400_202312011430.png
目录分级存储:按照用户ID和日期创建分级目录结构,uploads/user_001/2023/12/01/
3.问题3:API响应超时影响用户体验
问题描述:AI绘画API处理时间较长(10-30秒),导致前端请求超时
解决方案:
异步处理机制:采用Celery异步任务队列,将生成任务放入后台执行,立即返回任务ID
WebSocket推送:建立WebSocket连接,当图片生成完成后主动推送给前端
进度反馈:设计三阶段进度提示(生成中→优化中→保存中),提升用户体验
实验三:AI语音生成平台
一、实验要求
1.扩展 Story 模型,增加用于存储音频文件URL的字段。
2.集成百度语音合成或同类TTS API,开发一个后端服务。该服务接收一篇故事正文,调用AI将其合成为MP3等格式的音频文件。
3.实现音频文件的保存,并与对应的 Story 记录关联。
4.提供一个简单的播放页面或接口,用于播放生成的故事音频。
二、实验步骤
1.在百度大模型AI中创建
api key: Q5fb8A9NmnnbLFqabMDoDent;
secret key: bxUrAsfOX6SXHBEMJJQrWj8xYvLSmDWn.
用网页调试工具(例如postman)获取Access_token
依次在网页调试工具中输入:
grant_type: 必须参数,固定为client_credentials;
client_id: 必须参数,应用的API Key;
client_secret: 必须参数,应用的Secret Key;


2.将这些信息发送给trae,让它实现语音合成功能,并让它与之前的实验进行集成,可实现
3.截图如下:






三、实验总结
问题1:API调用超时
问题描述:
调用百度TTS API时频繁超时(>10秒)
长文本合成容易中断
解决方案:
实现分块处理:将长文本按标点分割为多个段落
添加重试机制:失败时自动重试3次
设置合理超时时间:调整为30秒
问题2:音频文件存储
问题描述:
服务器磁盘空间不足
音频文件命名冲突
解决方案:
使用云存储OSS:将音频文件上传至阿里云OSS
采用UUID命名:story_${uuid}.mp3避免重复
添加自动清理:保留最近50个音频文件
问题3:播放页面兼容性
问题描述:
移动端浏览器无法播放音频
跨域访问被阻止
解决方案:
添加多种格式支持:MP3/WAV/OGG格式兼容
设置CORS头部:Access-Control-Allow-Origin: *
实现fallback播放器:使用HTML5 Audio和Flash双重支持
大作业:儿童故事管理平台设计与开发
一、实验要求
系统集成: 创建一个完整的工作流。用户在一个页面上输入关键词,平台自动依次调用:
实验一的服务生成故事文本。
实验二的服务为故事生成插图。
实验三的服务为故事生成朗读音频。
前端界面: 开发一个友好的用户界面,用于输入关键词、并最终以一个“故事卡”的形式展示生成的故事完整内容、插图和播放按钮。
业务逻辑:实现用户管理、故事管理等模块,尽量使得此儿童故事管理平台接近商用平台。
二、实验步骤
将前三个实验生成的界面进行美化,使得此儿童故事管理平台接近商用平台。
截图如下:




三、实验总结
问题1:音频文件存储路径管理混乱
问题描述:初期将音频文件直接保存在本地项目目录中,导致文件管理混乱,且部署到服务器时权限不足。
解决方案:
改用阿里云OSS对象存储服务,实现云端统一管理
建立规范的文件夹结构:audio/stories/{year}/{month}/{filename}.mp3
为每个音频文件生成唯一ID,避免命名冲突
问题2:语音合成API响应超时
问题描述:长篇故事文本调用TTS API时经常超时,导致合成失败。
解决方案:
实现文本分片机制,将长文本拆分为500字以内的片段
采用异步任务处理,将合成任务放入后台队列
增加重试机制,对失败的请求自动重试2次
问题3:音频播放进度控制不准确
问题描述:前端播放器无法准确显示音频时长,进度条与音频不同步。
解决方案:
在后端合成时记录音频文件的精确时长(毫秒)
将时长信息存入数据库,与音频URL一同返回给前端
使用HTML5 Audio API的duration属性进行二次验证
问题4:并发请求导致API限流
问题描述:多用户同时生成语音时,触发API调用频率限制。
解决方案:
实现请求队列管理,限制并发合成任务数(最大3个)
添加用户级频率限制:每个用户每小时最多生成5个音频
使用Redis缓存已合成的文本,避免重复调用API