manual remove audioInput after write
This commit is contained in:
parent
35d603d303
commit
4517752ed8
2 changed files with 13 additions and 7 deletions
|
|
@ -7,7 +7,7 @@ const portAudio = require('naudiodon');
|
|||
|
||||
let ai: typeof portAudio.AudioIO;
|
||||
let ao: typeof portAudio.AudioIO;
|
||||
let audioInput: Buffer[] = [];
|
||||
const audioInput: Buffer[] = [];
|
||||
const encoding = "base64";
|
||||
const audioOptions = {
|
||||
channelCount: 1,
|
||||
|
|
@ -57,7 +57,8 @@ export const updateRecorder = (_event, record: boolean): void => {
|
|||
// stop mic data flow on space bar key up.
|
||||
ai.pause();
|
||||
const audio = Buffer.concat(audioInput);
|
||||
sendAudio(audio);
|
||||
play(audioInput);
|
||||
// sendAudio(audio);
|
||||
while (audioInput.length) { audioInput.pop(); }
|
||||
}
|
||||
}
|
||||
|
|
@ -98,7 +99,7 @@ export const play = (input: Array<Buffer>) => {
|
|||
|
||||
// utility function used by play func
|
||||
function bufSplit(input: Array<Buffer>): Array<Buffer> {
|
||||
let result: Buffer[] = [];
|
||||
const result: Buffer[] = [];
|
||||
input.forEach((b: Buffer) => {
|
||||
// split buffer into two.
|
||||
result.push(b.slice(0, b.length / 2), b.slice(b.length / 2, b.length));
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ async function transcribeSpeech (audio) {
|
|||
console.log(`Transcription: ${transcription}`);
|
||||
}
|
||||
|
||||
let audioInput = [];
|
||||
const audioInput = [];
|
||||
// Create an instance of AudioIO with inOptions (defaults are as below), which will return a ReadableStream
|
||||
const ia = new portAudio.AudioIO({
|
||||
inOptions: {
|
||||
|
|
@ -74,7 +74,7 @@ async function processAudio() {
|
|||
const buf = Buffer.concat(audioInput);
|
||||
play(audioInput);
|
||||
|
||||
while(audioInput.length) { audioInput.pop() };
|
||||
while(audioInput.length) { audioInput.pop() }
|
||||
|
||||
transcribeSpeech({
|
||||
content: buf
|
||||
|
|
@ -117,7 +117,7 @@ async function processAudio() {
|
|||
|
||||
// utility function used by play func
|
||||
function bufSplit(input){
|
||||
let result = [];
|
||||
const result = [];
|
||||
input.forEach((b) => {
|
||||
// split buffer into two.
|
||||
result.push(b.slice(0, b.length / 2), b.slice(b.length / 2, b.length));
|
||||
|
|
@ -140,5 +140,10 @@ setTimeout(async () => {
|
|||
}, 8000);
|
||||
|
||||
setTimeout(() => {
|
||||
ia.resume();
|
||||
}, 10000)
|
||||
|
||||
setTimeout(async () => {
|
||||
ia.pause();
|
||||
}, 9000)
|
||||
processAudio();
|
||||
}, 15000);
|
||||
|
|
|
|||
Loading…
Reference in a new issue