Hug*_*eve 4 node.js twilio google-text-to-speech mu-law
我一直在尝试将 mulaw 媒体流传输回 Twilio。要求有效负载必须采用音频/x-mulaw 编码,采样率为 8000,并采用 base64 编码
我的输入来自 LINEAR16 Google Docs中的 @google-cloud/text-to-speech
我尝试过波形文件
这就是我对 @google-cloud/text-to-speech 的响应进行编码的方式
const wav = new wavefile.WaveFile(speechResponse.audioContent)
wav.toBitDepth('8')
wav.toSampleRate(8000)
wav.toMuLaw()
Run Code Online (Sandbox Code Playgroud)
然后我通过 WebSocket 将结果发送回 Twilio
twilioWebsocket.send(JSON.stringify({
event: 'media',
media: {
payload: wav.toBase64(),
},
streamSid: meta.streamSid,
}))
Run Code Online (Sandbox Code Playgroud)
问题是我们只能在 Twilio 通话的另一端听到随机噪音,似乎编码不正确
其次,我通过将@google-cloud/text-to-speech输出音频保存在文件中检查了它,它是正确且清晰的
谁能帮我编码
小智 5
我也有同样的问题。错误位于 中wav.toBase64(),因为这包括 wav 标头。Twilio 媒体流需要原始音频数据,您可以使用 获取原始音频数据wav.data.samples,因此您的代码将是:
const wav = new wavefile.WaveFile(speechResponse.audioContent)
wav.toBitDepth('8')
wav.toSampleRate(8000)
wav.toMuLaw()
const payload = Buffer.from(wav.data.samples).toString('base64');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3068 次 |
| 最近记录: |