首页 百问百答 帖子详情
PaddleSpeech语音合成返回的数据是错的,怎么办?
收藏
快速回复
百问百答 问答学习资料 511 0
PaddleSpeech语音合成返回的数据是错的,怎么办?
收藏
快速回复
百问百答 问答学习资料 511 0

我能正常发送和接收到WebSocket的消息,事实上我已经成功的用PaddleSpeech完成了语音识别的功能,但是在语音合成上,我发现我无论如何都无法播放mp3/wav 格式的base64数据。

我试了很多方法都不行,然后我觉得可能是返回的数据本身有问题

具体验证方法是这样的:我通过生成a链接的方法,手动把返回的所有base64数据转换成test.mp3文件下载到本地,但是该音频文件无法播放,而通过同样方法,本地的mp3文件我通过file对象将其转为base64数据然后下载到本地后却可以正常播放。

这是我的ws连接代码:

// 我绝对保证它能正常接收到所有base64数据
socket.value.addEventListener('message', async (event: any) => {
    const message = JSON.parse(event.data)
    console.log('已收到消息:', message)
    // 建立连接后,保存session数据以便发送结束信号
    if (message.status == 0 && message.signal == 'server ready') {
      end.session = session = message.session
    }
    // 正在接收base64的音频数据
    if (message.status == 1) {
      base64Data += message.audio
    }
    // 最后一次消息包
    if (message.status == 2) {
      console.log('-------------')
      console.log(base64Data)
    }
  })
})

这个是返回的效果图:

可以看到,当status为2时我已经拿到了所有base64格式的数据,但是就是无法使用audio标签播放它,我也尝试过将其转换为blob数据然后再播放,可是也行不通。

 

我觉得最大的可能就是返回的数据本身就有问题,希望有大佬可以打脸,实在想不通到底是哪里的问题。

 

附上返回数据API:

传参没有问题的,因为可以正常接收到数据,而且已经有语音识别的成功案例了,想来想去要么是浏览器没办法使用audio标签播放base64音频数据,要么是base64数据本身就是错误的,只能是这两个原因了,前者试了很多方法了,而且也有本地文件成功播放的对比组存在,所以感觉应该就是第二个原因了。

 

 

0
收藏
回复
在@后输入用户全名并按空格结束,可艾特全站任一用户