From 8ad7472a54cca5e12d7a40182e322e3b9cc6da54 Mon Sep 17 00:00:00 2001 From: Lorenzo Romagnoli Date: Mon, 25 Sep 2017 14:18:48 +0200 Subject: [PATCH 1/5] adding buffer size as parameters to improve performances on realtime application --- lib/mic.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/mic.js b/lib/mic.js index 2f76ae2..643bb90 100644 --- a/lib/mic.js +++ b/lib/mic.js @@ -16,6 +16,7 @@ var mic = function mic(options) { var exitOnSilence = options.exitOnSilence || 0; var fileType = options.fileType || 'raw'; var debug = options.debug || false; + var buffer = options.buffer || 500; var format, formatEndian, formatEncoding; var audioProcess = null; var infoStream = new PassThrough; @@ -47,18 +48,19 @@ var mic = function mic(options) { if(isWindows){ audioProcess = spawn('sox', ['-b', bitwidth, '--endian', endian, '-c', channels, '-r', rate, '-e', encoding, - '-t', 'waveaudio', 'default', '-p'], + '-t', '--buffer', buffer , 'waveaudio', 'default', '-p'], audioProcessOptions) } else if(isMac){ audioProcess = spawn('rec', ['-b', bitwidth, '--endian', endian, '-c', channels, '-r', rate, '-e', encoding, - '-t', fileType, '-'], audioProcessOptions) + '-t', fileType, '--buffer', buffer , '-'], audioProcessOptions) } else { audioProcess = spawn('arecord', ['-c', channels, '-r', rate, '-f', - format, '-D', device], audioProcessOptions); + format, '-D', '--buffer-size', buffer], audioProcessOptions); } + if(debug)console.log(audioProcess); audioProcess.on('exit', function(code, sig) { if(code != null && sig === null) { From 39a01a18a9471465d8a5ae0aa6f0dce240b15b9b Mon Sep 17 00:00:00 2001 From: Lorenzo Romagnoli Date: Mon, 25 Sep 2017 15:42:57 +0200 Subject: [PATCH 2/5] fixed typo --- lib/mic.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/mic.js b/lib/mic.js index 643bb90..6da2b40 100644 --- a/lib/mic.js +++ b/lib/mic.js @@ -58,7 +58,7 @@ var mic = function mic(options) { } else { audioProcess = spawn('arecord', ['-c', channels, '-r', rate, '-f', - format, '-D', '--buffer-size', buffer], audioProcessOptions); + format, '-D', device, '--buffer-size', buffer], audioProcessOptions); } if(debug)console.log(audioProcess); From 0cfda06f619c9ef862af71424645f98124341b41 Mon Sep 17 00:00:00 2001 From: Lorenzo Romagnoli Date: Mon, 25 Sep 2017 16:09:52 +0200 Subject: [PATCH 3/5] changed the way buffer is calculated on linux --- lib/mic.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/mic.js b/lib/mic.js index 6da2b40..dd2546d 100644 --- a/lib/mic.js +++ b/lib/mic.js @@ -57,8 +57,9 @@ var mic = function mic(options) { '-t', fileType, '--buffer', buffer , '-'], audioProcessOptions) } else { + var buffer_time=rate/buffer audioProcess = spawn('arecord', ['-c', channels, '-r', rate, '-f', - format, '-D', device, '--buffer-size', buffer], audioProcessOptions); + format, '-D', device, '--buffer-time', buffer_time], audioProcessOptions); } if(debug)console.log(audioProcess); From 9948d03efd785b8e89e274daa025d699055b43a4 Mon Sep 17 00:00:00 2001 From: Lorenzo Romagnoli Date: Mon, 25 Sep 2017 18:32:36 +0200 Subject: [PATCH 4/5] conversion to microsecond --- lib/mic.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/mic.js b/lib/mic.js index dd2546d..49e7955 100644 --- a/lib/mic.js +++ b/lib/mic.js @@ -57,7 +57,7 @@ var mic = function mic(options) { '-t', fileType, '--buffer', buffer , '-'], audioProcessOptions) } else { - var buffer_time=rate/buffer + var buffer_time=(rate/buffer)/1000000; audioProcess = spawn('arecord', ['-c', channels, '-r', rate, '-f', format, '-D', device, '--buffer-time', buffer_time], audioProcessOptions); } From 28758fc739d9e24405ee64c3c0e8299c010ea8a5 Mon Sep 17 00:00:00 2001 From: Lorenzo Romagnoli Date: Mon, 25 Sep 2017 21:24:59 +0200 Subject: [PATCH 5/5] better formula to calculare buffer size --- lib/mic.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/mic.js b/lib/mic.js index 49e7955..4e0b249 100644 --- a/lib/mic.js +++ b/lib/mic.js @@ -57,7 +57,7 @@ var mic = function mic(options) { '-t', fileType, '--buffer', buffer , '-'], audioProcessOptions) } else { - var buffer_time=(rate/buffer)/1000000; + var buffer_time=(buffer/rate)*1000000; audioProcess = spawn('arecord', ['-c', channels, '-r', rate, '-f', format, '-D', device, '--buffer-time', buffer_time], audioProcessOptions); }