调用api练习(3)
我想调用api能够使用ai将我使用之前的api生成的故事朗读出来,我的想法是在生成故事的同时将文字输入给ai,然后让其生成音频文件,自动下载保存下来播放。
我寻找并使用的api是:轻语api|

接着调整我的数据库,在故事表里添加语音的属性:

然后编写代码并实现播放语音这个功能。
最后添加简单的用户表和用户登录功能,本次小练习就算基本完成了。
以下是我本次实验遇到的问题:
系统在生成图片和音频文件后,需要重启项目才能在前端正常访问这些媒体资源。经过分析,我确定这是由于项目将生成的媒体文件保存在src/main/resources/static目录中,而Spring Boot默认不会自动刷新resources目录下的静态资源导致的。此外,随着用户生成的媒体文件不断增多,还会导致项目打包体积过大,不利于部署和维护。
针对这些问题,我设计并实现了一套完整的解决方案,将图片和音频文件从项目内部迁移到外部存储目录,并配置正确的静态资源映射关系。首先,我修改了图片服务类ImengApiService.java,将图片保存路径从项目内部的src/main/resources/static/images目录更改为项目根目录下的uploaded_images外部目录,同时确保返回的URL格式保持为/images/文件名的形式,这样可以保证数据库中存储的URL格式与新的存储位置相匹配。接着,我们对音频服务类QingyuApiService.java进行了类似的修改,将音频文件保存到项目根目录下的uploaded_audio外部目录,并保持返回的URL格式为/audio/文件名。
为了确保外部目录中的媒体文件能够被正确访问,我们对项目的静态资源配置进行了全面更新。在application.properties文件中,我首先禁用了静态资源的缓存机制,通过设置spring.web.resources.cache.period=0和spring.web.resources.chain.cache=false,确保新生成的媒体文件能够立即被访问。然后,我将外部的uploaded_images和uploaded_audio目录添加到静态资源位置列表中,使用spring.web.resources.static-locations=classpath:/static/,file:./uploaded_images/,file:./uploaded_audio/配置。

浙公网安备 33010602011771号