41 lines
984 B
TypeScript
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;
|
|
}
|
|
|