【发布时间】:2018-12-26 04:52:05
【问题描述】:
我在音频处理时将 Int16Array 缓冲区发送到服务器
var handleSuccess = function (stream) {
globalStream = stream;
input = context.createMediaStreamSource(stream);
input.connect(processor);
processor.onaudioprocess = function (e) {
var left = e.inputBuffer.getChannelData(0);
var left16 = convertFloat32ToInt16(left);
socket.emit('binaryData', left16);
};
};
navigator.mediaDevices.getUserMedia(constraints)
.then(handleSuccess);
在服务器中我尝试按如下方式保存文件
client.on('start-audio', function (data) {
stream = fs.createWriteStream('tesfile.wav');
});
client.on('end-audio', function (data) {
if (stream) {
stream.end();
}
stream = null;
});
client.on('binaryData', function (data) {
if (stream !== null) {
stream.write(data);
}
});
但这不起作用所以我如何将此数组缓冲区保存为 wav 文件?
【问题讨论】:
-
我也需要这样做...您现在有解决方案了吗?
-
我试过使用这个github.com/Jam3/audiobuffer-to-wav,但没有任何运气。
-
@Ravimalya 在存储库中是否有一个可复制的示例?这使用
socket.io吗? -
是的@ChristosLytras,这是一个 git github.com/ravimallya/angular-node-google-voice-api。 /bin 目录中的 nodejs 服务器代码(socket.io)和录音机位于 src/app/dashboard 组件中。我正在发送 left16 数组缓冲区。实时转录工作正常。但是,我需要将录制的音频保存为服务器中的 wav 文件。
-
@Ravimalya 请检查我的答案和存储库,其中包含一个简单的项目,该项目演示了在服务器端使用
wavNPM 包。
标签: javascript node.js buffer wav fs