• Stars
    star
    202
  • Rank 187,963 (Top 4 %)
  • Language
    JavaScript
  • License
    ISC License
  • Created about 10 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🎀 Records a 16-bit signed-integer linear pulse modulation code encoded audio file.

node-record-lpcm-16

Records a 16-bit signed-integer linear pulse modulation code WAV audio file.

This module uses Node.js streams to minimize memory usage and optimize speed, perfect for embedded devices and "the internet of things".

These audio files are fully compatible with both the Google Speech to Text API (v2) and the Wit.ai Speech API.

Installation

npm install node-record-lpcm16

Dependencies

Generally, running npm install should suffice.

This module requires you to install SoX and it must be available in your $PATH.

For Mac OS

brew install sox

For most linux disto's

sudo apt-get install sox libsox-fmt-all

For Windows

Working version for Windows is 14.4.1. You can download the binaries or use chocolately to install the package

choco install sox.portable

Options

sampleRate            : 16000  // audio sample rate
channels              : 1      // number of channels
threshold             : 0.5    // silence threshold (rec only)
endOnSilence          : false  // automatically end on silence (if supported)
thresholdStart        : null   // silence threshold to start recording, overrides threshold (rec only)
thresholdEnd          : null   // silence threshold to end recording, overrides threshold (rec only)
silence               : '1.0'  // seconds of silence before ending
recorder              : 'sox'  // Defaults to 'sox'
device                : null   // recording device (e.g.: 'plughw:1')
audioType             : 'wav'  // audio type to record

Please note that arecord might not work on all operating systems. If you can't capture any sound with arecord, try to change device (arecord -l).

Usage

const recorder = require('node-record-lpcm16')
const fs = require('fs')

const file = fs.createWriteStream('test.wav', { encoding: 'binary' })

recorder.record({
  sampleRate: 44100
})
.stream()
.pipe(file)

You can pause, resume and stop the recording manually.

const recorder = require('node-record-lpcm16')
const fs = require('fs')

const file = fs.createWriteStream('test.wav', { encoding: 'binary' })

const recording = recorder.record()
recording.stream().pipe(file)

// Pause recording after one second
setTimeout(() => {
  recording.pause()
}, 1000)

// Resume another second later
setTimeout(() => {
  recording.resume()
}, 2000)

// Stop recording after three seconds
setTimeout(() => {
  recording.stop()
}, 3000)

Recorders

The following recorders are included:

  • rec
  • sox
  • arecord

Note: not all recorders support all features!

Error handling

Some recorders might be logging errors to stderr and throw an exit code. You can catch early termination by adding an error event listener to the stream.

To debug the recorder see debugging below.

recording.stream()
  .on('error', err => {
    console.error('recorder threw an error:', err)
  })
  .pipe(file)

Debugging

Debug logging is implemented with visionmedia/debug

DEBUG=record node examples/file.js

Example

Here's how you can write your own Siri in just 10 lines of code.

const recorder = require('../')
const request = require('request')

const witToken = process.env.WIT_TOKEN // get one from wit.ai!

function parseResult (err, resp, body) {
  if (err) console.error(err)
  console.log(body)
}

const recording = recorder.record({
  recorder: 'arecord'
})

recording
  .stream()
  .pipe(request.post({
    'url': 'https://api.wit.ai/speech?client=chromium&lang=en-us&output=json',
    'headers': {
      'Accept': 'application/vnd.wit.20160202+json',
      'Authorization': `Bearer ${witToken}`,
      'Content-Type': 'audio/wav'
    }
  }, parseResult))

setTimeout(() => {
  recording.stop()
}, 3000) // Stop after three seconds of recording

More Repositories

1

Cumulus

☁️ A SoundCloud player that lives in your menubar.
JavaScript
1,423
star
2

google-speech-v2

πŸ’¬ Reverse Engineering Google's Speech To Text API (v2)
456
star
3

go-dicom

πŸ₯ DICOM Medical Image Parser in Go
Go
104
star
4

soundcloud-v2

Client for SoundCloud's API v2
JavaScript
11
star
5

npm-registry

NPM registry server
Go
9
star
6

systemdify

🐧 Automatically create a systemd unit file for your Node application
JavaScript
7
star
7

typewrite

πŸ“ A simple javascript file to simulate text input.
JavaScript
6
star
8

cli-progress-bar

πŸ•˜ A simple CLI progress bar, inspired by Gauge
JavaScript
5
star
9

beer-names

🍺 Get a unique random name that sounds like it could be a beer
JavaScript
5
star
10

ponysay

🐴 Ponysay, written in Go
Go
4
star
11

jest-snapshots-json-rest-api

Jest Snapshots serializer for JSON REST APIs.
JavaScript
4
star
12

Cumulus-nwjs

SoundCloud desktop application, using Node Webkit and Polymer
CSS
3
star
13

iec-bytes-parser

Parse IEC and SI bytes size string notations
TypeScript
3
star
14

Codex

Codex is a modular backup tool to help you backup and restore your application settings and dotfiles.
Ruby
3
star
15

node_analytics

Node Analytics with Server Sent Events
JavaScript
2
star
16

graph-editor

A very simple graph editor
JavaScript
2
star
17

All-Things-Go

All Things Talk interface written in Go
Go
2
star
18

grop

🚦 Get a random open port on the host machine
JavaScript
1
star
19

psc

Play a soundcloud URL in your Terminal.
Ruby
1
star
20

go-oauth

πŸ” OAuth HMAC-SHA1 signing in Go
Go
1
star
21

github-issue-templates

Testing GitHub issue templates
1
star
22

rust-playground

Just messing around with πŸ¦€ nothing to see here
Rust
1
star
23

A-Brave-New-Web

Slides for our SFHTML5 Talk about Web Components and Polymer
CSS
1
star
24

conventional-github-releaser

1
star
25

connect-requires-json

βœ‹ Error middleware for empty and non-JSON request bodies
JavaScript
1
star
26

dag

A directed acyclical graph library
TypeScript
1
star
27

require-skip-cache

Require a module without adding it to the cached modules
JavaScript
1
star
28

express-react-svg-to-png

Express SVG to PNG using a React component
JavaScript
1
star
29

AppLab-Parko

Parko application created for the AppLab hackathon in Kortrijk.
JavaScript
1
star
30

nostro.moe

https://nostro.moe
HTML
1
star
31

xtend-url

πŸ”— Append to an URL without the headache
JavaScript
1
star
32

haruhichan

πŸ™ A modern and sane API wrapper for Haruhichan
JavaScript
1
star
33

game-console-ui

Exploring interactive User Interfaces
TypeScript
1
star
34

fuelphp-eventbrite

A fuelphp wrapper for the use of the Eventbrite API
PHP
1
star
35

GSS

Gilles Style Sheets
JavaScript
1
star
36

express-api-skeleton

πŸ’€ My Express API skeleton
JavaScript
1
star
37

nextjs

JavaScript
1
star
38

gilles.demey.io

My personal website
HTML
1
star
39

nestor-docker

Docker container exposing cliffano/nestor as an entrypoint
1
star
40

desktop

backup of http://popcorntime.ml community, ripped by the bad .is guys (from today only popcorntime.ag please)
CSS
1
star
41

go-rsa-example

RSA cipher example in Go
Go
1
star
42

node-geo

🌐 A simple API wrapper around the Google maps geo coder.
JavaScript
1
star