在流节点js时写入wav文件

时间:2017-03-13 17:16:40

标签: javascript node.js audio socket.io

有没有办法强制.pipe在流上每隔一定时间/大小写一个文件?

基本上,我正在使用套接字io流,从浏览器我发送一个带音频的缓冲区,我用emit发送:

浏览器

        c.onaudioprocess = function(o) 
        {
        var input = o.inputBuffer.getChannelData(0);

            stream1.write( new ss.Buffer( convertFloat32ToInt16( input ) ));

        }

服务器(nodejs)

var fileWriter = new wav.FileWriter('/tmp/demo.wav', {
    channels: 1,
    sampleRate: 44100,
    bitDepth: 16
});

ss(socket).on('client-stream-request', function(stream)
{
    stream.pipe(fileWriter);
}

我遇到的问题是文件demo.wav只会在我完成流时写入,所以当我停止麦克风时。但我希望它总是写,因为我将使用谷歌进行语音识别,任何想法?如果我使用管道从谷歌调用语音识别,那么这些组块太小而谷歌无法识别它。

1 个答案:

答案 0 :(得分:0)

查看节点stream API,看起来您应该能够在pipe函数中添加options参数。 尝试

stream.pipe(fileWriter, { end: false });