silk-codec

0.0.1 • Public • Published

silk-codec

Encoding pcm audio to silk, or decoding silk audio to pcm.

Usage

npm install silk-codec

Example

Please refer to test/test.js

var SilkEncoder = require('silk-codec').SilkEncoder
var SilkDecoder = require('silk-codec').SilkDecoder
var fs = require("fs");

function testEncoder(pcmFile, silkFile)
{
    var encoder = new SilkEncoder(8000, 16, 1);
    var data = fs.readFileSync(pcmFile);
    console.info("pcm file size:", data.length)

    // encode
    silk_data = encoder.encode(data.buffer);

    // write to silk file

    // write silk file header
    var header = Buffer.from("#!SILK_V3")
    fs.writeFile(silkFile, header, function (err) {
        if (err) throw err;
    });
    
    // write silk data
    fs.appendFile(silkFile, silk_data, function (err) {
        if (err) throw err;
    });
}

function testDecoder(silkFile, pcmFile)
{
    var decoder = new SilkDecoder(8000, 16, 1);
    var data = fs.readFileSync(silkFile);
    console.info("silk file size:", data.length)

    // check header
    var header = Buffer.from("#!SILK_V3")
    if ( data.compare(header, 0, header.length, 0, header.length ) != 0){
        console.error("invalid silk file")
        return
    }

    // decode
    sub = Buffer.from(data.subarray(header.length))
    pcm_data = decoder.decode(sub.buffer);

    // write to pcm file
    fs.writeFile(pcmFile, pcm_data, function (err) {
        if (err) throw err;
    });
}

testEncoder("8000_16bit_1channel.pcm", "silk_out.silk")
//testDecoder("silk_out.silk", "pcm_out.pcm")
testDecoder("8000_16bit_1channel_20ms.silk", "pcm_out.pcm");

Build && Test

node-gyp configure build # build
cd test && node test.js  # test

References

Readme

Keywords

Package Sidebar

Install

npm i silk-codec

Weekly Downloads

3

Version

0.0.1

License

ISC

Unpacked Size

2.55 MB

Total Files

164

Last publish

Collaborators

  • jarvischu