-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrecord.js
More file actions
37 lines (29 loc) · 1015 Bytes
/
record.js
File metadata and controls
37 lines (29 loc) · 1015 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
const fs = require('fs');
const mic = require('mic');
const { Readable } = require('stream');
const micOptions = {
rate: '16000',
channels: '1',
fileType: 'wav',
}
const record = (audioFilename) => {
return new Promise((resolve, reject) => {
const micInstance = mic(micOptions);
const micInputStream = micInstance.getAudioStream();
const output = fs.createWriteStream(audioFilename);
const writable = new Readable().wrap(micInputStream);
console.log('🎙 Recording now, please describe your website design needs to me, and press \x1b[31mCtrl+C\x1b[0m to end the recording.');
writable.pipe(output);
micInstance.start();
process.on('SIGINT', () => {
micInstance.stop();
console.log('💽 Recording completed.');
resolve();
});
micInputStream.on('error', (err) => {
console.log('error', err);
reject(err);
});
});
};
module.exports = record