mime-chat/src/background/recorder.ts
2021-02-05 16:41:55 -06:00

41 lines
984 B
TypeScript

// eslint-disable-next-line @typescript-eslint/no-var-requires
const portAudio = require('naudiodon');
// eslint-disable-next-line @typescript-eslint/no-var-requires
let audio: string;
let audioInput: string[] = [];
export function initRecorder() {
let ia = new portAudio.AudioIO({
inOptions: {
channelCount: 1,
sampleFormat: 16,
sampleRate: 16000,
deviceId: -1,
closeOnError: false,
}
});
ia.setEncoding('base64');
ia.start();
ia.pause();
ia.on('error', (e: Error) => {
console.log('error recording audio', + e);
});
ia.on('data', (chunk: string) => {
audioInput.push(chunk);
console.log('Got %d characters of string data:', chunk.length);
});
}
async function processData(chunks: string[]): Buffer | Error {
audio = '';
chunks.forEach(s => {
audio += s;
})
const buffer = Buffer.from(audio, "base64");
audioInput = [];
return buffer;
}