0

我正在使用 ExpressJs,并尝试使用 Amazon Polly 提供将文本转换为语音的服务。
所以我将文本切割成句子并将它们发送给 Polly,当我收到结果 Buffer 时,我将其通过管道传递给响应。

问题是,我尝试了太多东西,每次我只听第一句话,然后请求就结束了(而我直到最后才结束)。

以下是我尝试过的一些方法:

let readable = new Stream.Readable()
readable._read = () => {}
let bufs = []
Polly.synthesizeSpeech(chunk, voice).then((data)=>{
    var stream = new Stream.PassThrough()
    stream.end(data)
    stream.pipe(pipe, {end: false})

    readable.push(data)
    readable.pipe(res, {end: false})

    stream.on('end', ()=>{
        if (index == content.length - 1) { // last sentence
            let buf = Buffer.concat(bufs)
            res.write(buf)
            res.end()
        }
    })
})

所以我尝试了Stream.PassThrough()Stream.Readable()并连接缓冲区,然后立即写入响应。
而且每次我找到相同的,你可以只听第一句话。

这就是我测试它的方式:

<audio controls>
      <source src="https://localhost:8080/api/transcripe?voice=Salli&url=https://techcrunch.com/2017/07/25/elon-musk-mark-zuckerberg-artificial-intelligence/" type="audio/mpeg">
</audio>

我怎样才能流式传输并收听整个文本?

4

1 回答 1

0

看起来这是一个chrome问题,而不是nodejs。
它在 Firefox 上运行良好。

找到后将发布解决方案。

于 2018-03-27T14:45:01.070 回答