一、WebSocketService
首先获取了写后端方法同学的语音转文字的方法,放到了common路径下,最初的想法是直接调用里面的方法。
但是实际操作中,该方法下方法众多,且只写了一个main方法,不适合调用,改动困难,于是把一些基本的方法,如与websocket对接,或是调用讯飞的 api等内容写进了service中。
把供controller调用的方法改为了transcribeAudio()方法,该方法传入一个文件的路径,然后处理该音频文件,返回一个识别好的文本字符串。
二、 ChatController
在Controller里面写了一个post方法,然后接收前端传入的语音blob文件,首先生成url存储到本地,后续将该url存入数据库中。然后将这个url利用service类中提供的方法,实现语音转文本的功能。
三、对一些bug的修改
1.每次生成的是前一次的录音
解决方案,把service中的方法修改为了public static String transcribeAudio(String audioFilePath)
这是一个静态方法,可以每次重新调用、生成新的文本内容,会清空前一次的内容,从而避免了出现重复出现上一次传入的录音的情况。然后进一步避免了后续和AIGC文本分析对接时,出现每次传入的内容”正确“,但是回复的却是上一句内容等问题。
2.出现错误码10043
为了解决这一问题,下载了Audacity,然后查看录好的音频后,发现采样encoding为raw格式,而原来的代码中的格式为lame。修改后,实现了音频解码。