node-wav

`Reader` and `Writer` streams for Microsoft WAVE audio files

  • 所有者: TooTallNate/node-wav
  • 平台:
  • 許可證: MIT License
  • 分類:
  • 主題:
  • 喜歡:
    0
      比較:

Github星跟蹤圖

node-wav

Reader and Writer streams for Microsoft WAVE audio files

Build Status

This module offers streams to help work with Microsoft WAVE files.

Installation

Install through npm:

$ npm install wav

Example

Here's how you would play a standard PCM WAVE file out of the speakers using
node-wav and node-speaker:

var fs = require('fs');
var wav = require('wav');
var Speaker = require('speaker');

var file = fs.createReadStream('track01.wav');
var reader = new wav.Reader();

// the "format" event gets emitted at the end of the WAVE header
reader.on('format', function (format) {

  // the WAVE header is stripped from the output of the reader
  reader.pipe(new Speaker(format));
});

// pipe the WAVE file to the Reader instance
file.pipe(reader);

API

Reader()

The Reader class accepts a WAV audio file written to it and outputs the raw
audio data with the WAV header stripped (most of the time, PCM audio data will
be output, depending on the audioFormat property).

A "format" event gets emitted after the WAV header has been parsed.

Writer(options)

The Writer class accepts raw audio data written to it (only PCM audio data is
currently supported), and outputs a WAV file with a valid WAVE header at the
beginning specifying the formatting information of the audio stream.

Note that there's an interesting problem, because the WAVE header also
specifies the total byte length of the audio data in the file, and there's no
way that we can know this ahead of time. Therefore the WAVE header will contain
a byte-length if 0 initially, which most WAVE decoders will know means to
just read until EOF.

Optionally, if you are in a situation where you can seek back to the beginning
of the destination of the WAVE file (like writing to a regular file, for
example), then you may listen for the "header" event which will be emitted
after all the data has been written, and you can go back and rewrite the new
header with proper audio byte length into the beginning of the destination
(though if your destination is a regular file, you should use the the
FileWriter class instead).

Default options:

{
  "channels": 2,
  "sampleRate": 44100,
  "bitDepth": 16
}

FileWriter(path, options)

The FileWriter class is, essentially, a combination of fs.createWriteStream() and the above Writer() class, except it automatically corrects the header after the file is written. Options are passed to both Writer() and fs.createWriteStream().

Example usage with mic:

var FileWriter = require('wav').FileWriter;
var mic = require('mic'); // requires arecord or sox, see https://www.npmjs.com/package/mic

var micInstance = mic({
  rate: '16000',
  channels: '1',
  debug: true
});

var micInputStream = micInstance.getAudioStream();

var outputFileStream = new FileWriter('./test.wav', {
  sampleRate: 16000,
  channels: 1
});

micInputStream.pipe(outputFileStream);

micInstance.start();

setTimeout(function() {
  micInstance.stop();
}, 5000);

主要指標

概覽
名稱與所有者TooTallNate/node-wav
主編程語言JavaScript
編程語言JavaScript (語言數: 1)
平台
許可證MIT License
所有者活动
創建於2012-10-19 01:49:13
推送於2022-01-09 14:49:02
最后一次提交2018-04-27 10:23:54
發布數7
最新版本名稱v1.0.2 (發布於 2018-04-27 10:23:55)
第一版名稱v0.0.1 (發布於 )
用户参与
星數181
關注者數13
派生數37
提交數84
已啟用問題?
問題數23
打開的問題數12
拉請求數5
打開的拉請求數3
關閉的拉請求數4
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?