一、handleChatRequest()方法
@Autowired
注解用于自动装配BaiduWenXinChatService
类的实例,它将由 Spring 容器负责实例化和注入。@Resource
注解用于注入WebTtsService
类的实例。
方法名为'handleChatRequest',参数为Map,获取前端的Data:userMsg。然后先利用另一个生成ai对话的文心一言集成的方法,然后调用合成方法生成音频,用 webTtsService
的 synthesizeTextToSpeech
方法,将机器人的回复转换为语音,并获取语音的 Base64 编码字符串。将响应结果放入Map对象中,返回结果。
二、将语音文件保存到本地文件的尝试
当WebSocket收到音频数据时,它会将这些数据写入到一个 ByteArrayOutputStream
中,但目前代码中没有直接将其保存到本地文件。可以在收到数据并成功完成请求后,将内容写入到一个文件中。
还有一个问题就是每次只有一个文件,发现将文件OUTPUT-PATH设置为了静态常量,就会导致只有一个文件产生。
在修改后认为该功能不必要,而且不影响后续的操作,例如存入数据库base64码等,于是放弃了这一功能的实现。
三、debug
1.bug1
产生了错误:GET blob:http://localhost:3030/3d7c03bd-0d9e-4030-a0cb-418ab8922357 net::ERR_REQUEST_RANGE_NOT_SATISFIABLE
这个错误通常表示浏览器试图请求的资源范围超出了服务器的响应范围,导致无法满足请求。这可能是由于请求的资源在服务器端不存在或者请求的范围超出了资源的有效范围所致。
代码中,blob:http://localhost:3030/3d7c03bd-0d9e-4030-a0cb-418ab8922357
看起来像是一个 Blob URL,通常用于表示在浏览器中生成的临时二进制数据。然而,它应该是一个有效的 Blob URL,并且服务器应该能够正确地响应该 URL。
2.bug2
java.lang.NullPointerException
表示尝试访问或操作一个 null
对象。在你的代码中,错误发生在 Base64.getDecoder().decode(myJsonParse.data.audio)
行,这表明 myJsonParse.data.audio
可能为 null
。
为了修复这个问题,需要在访问 myJsonParse.data.audio
之前进行空值检查。