节点 – 如何写audio文件

我正在制作一个logging用户在说什么的应用程序,并将其保存到一个文件中。 为了从麦克风获得声音,我使用节点麦克风包。 我的应用程序目前能够从麦克风获得声音。 但是,当我尝试写入audio文件的stream,并播放它,我得到以下错误。

Windows Media Player无法播放该文件。 播放器可能不支持文件types,也可能不支持用于压缩文件的编解码器。

有谁知道如何写audio节点中的文件?

var fs = require('fs'); const { Writable } = require('stream'); var writeStream = fs.createWriteStream('./output.wav'); const outStream = new Writable({ write(chunk, encoding, callback) { console.log(chunk); writeStream.write(chunk); callback(); } }); let Mic = require('node-microphone'); let mic = new Mic(); let micStream = mic.startRecording(); micStream.pipe( outStream ); mic.on('info', (info) => { console.log('Info: ',info); }); mic.on('error', (error) => { console.log('error:', error); }); mic.on('stop', (stop) => { console.log('stop:', stop); }); setTimeout(() => { console.log('stopped recording'); mic.stopRecording(); }, 3000); 

node-microphone文档指出:

的startRecording()

用课堂上给定的声音选项开始录音。 创build一个新的subprocess。 它将把loggingPCM波形stream作为节点stream返回

我想象你的文件缺less正确的标题。 以下模块之一可能会帮助您:


node-wav

Writer类接受写入的原始audio数据(目前仅支持PCMaudio数据),并在开始时输出带有有效WAVE头的WAV文件,指定audiostream的格式化信息。


audiobuffer-to-wav

  var toWav = require('audiobuffer-to-wav') var wav = toWav(buffer) // encode AudioBuffer to WAV