Tengo un búfer que contiene la voz de la persona que en el flujo de medios, yo y yo lo enviamos desde JavaScript a NodeJS usando socket.io
Necesito convertir ese búfer a texto (como voz a texto, pero la voz almacenada como búfer proveniente del flujo de medios)
Hay una función de ayuda que utilicé (en nodejs ver más abajo) que convierte de/a búfer/arrayBuffer y hay un paquete llamado node-blob que convierte búfer en blob de audio pero busco mucho cómo convertir audio o incluso búfer a texto, pero fallé en alguna ayuda, código o paquete que pueda ayudar a convertirlo a texto.
navigator.mediaDevices .getUserMedia({ video: true, audio: true, }) .then((stream) => { setSrcVideo(stream); const mediasStream = new MediaStream(); mediasStream.addTrack(stream.getVideoTracks()[0]); mediasStream.addTrack(stream.getAudioTracks()[0]); const mediaRecorder = new MediaRecorder(mediasStream); socket.emit('ready'); mediaRecorder.addEventListener('dataavailable', (event) => { if (event.data && event.data.size > 0) { socket.emit('send-chunks', event.data); } }); socket.on('start-recording', () => { mediaRecorder.start(1000); }); }); y recibo ese búfer por socket.on('send-chunks') en NodeJS así
// connection to socket.io io.on('connection', (socket) => { socket.on('ready', () => { socket.emit('start-recording'); }); socket.on('send-chunks', (chunks) => { // covert to text }); }); // helper functions const toArrayBuffer = (buffer) => { const arrayBuffer = new ArrayBuffer(buffer.length); const view = new Uint8Array(arrayBuffer); for (let i = 0; i < buffer.length; ++i) { view[i] = buffer[i]; } return arrayBuffer; }; const toBuffer = (arrayBuffer) => { const buffer = Buffer.alloc(arrayBuffer.byteLength); const view = new Uint8Array(arrayBuffer); for (let i = 0; i < buffer.length; ++i) { buffer[i] = view[i]; } return buffer; };