一、WebTtsService的编写
这一周主要对文本转语音功能进行了实现,可以实现前端返回文本内容后,然后利用Service类,进行基本的文本转语音,传给前端一个base64码。Service类实现如下:
二、bug修改
1.只能生成第一次的语音
这里有一个小bug就是实现后,前端每次只能生成第一次的语音文件。然后经过分析保存语音base64码的方法得知,问题可能出现在wsCloseFlag的管理上,在这个方法体内,我利用了websocketWork方法来进行文本合成语音,并且在合成完成后返回音频的base64编码字符串。但是在调用这一方法的同时,也在等待flag的状态变化,以确定语音合成过程是否完成。
但是在第一次调用这一个方法的时候,可以正确等待语音合成并返回音频,但是在后续调用时,检查代码发现flag已经呗设置为true,导致立即返回,而没有等待语音合成完成。
为了解决这个问题,解决如下
2.查看前端打印的信息audio为''
发现这个问题由两处产生
1.后端未生成音频文件或返回音频数据:后端生成音频文件失败,于是无法将其返回给前端。后端没有生成音频文件或者生成的文件为空,那么在前端就会收到空字符串。
2.前端未正确处理音频数据:即使后端返回了正确的音频数据,但如果前端在处理这些数据时出现了问题,也会导致空字符串的情况。
后端调整了flag,然后在前端调整了获取的内容