Как передать массив аудио-буфера из nodejs в сеть, используя socket.io? - PullRequest
0 голосов
/ 20 мая 2019

Я пытаюсь передать аудиобуфер моей клиентской стороне и воспроизвести его следующим образом

In node.js

const [response] = await client.synthesizeSpeech(request);
// Write the binary audio content to a local file
const writeFile = util.promisify(fs.writeFile);
console.log(response.audioContent)
await writeFile('output.mp3', response.audioContent, 'binary');
console.log('Audio content written to file: output.mp3');
client.emit('playAudio', response.audioContent);

Этот файл загружается правильно, также воспроизводится правильный контент.

Теперь в моем клиентском js-файле

socket.on('playAudio', function (buffer) {
    console.log(buffer);
    var data = new Float32Array(buffer);
    playAudio(data);
});


function playAudio(data) {
    const audioContext = new AudioContext();
    var buffer = audioContext.createBuffer(1, data.length, 44100);
    var audioBufferSource = audioContext.createBufferSource();
    var gain = audioContext.createGain();
    gain.gain.value = 0.1;
    buffer.getChannelData(0).set(data);
    audioBufferSource.buffer = buffer;
    audioBufferSource.connect(audioContext.destination);
    audioBufferSource.start();
}

Это просто воспроизводит звук "тика".

console.log (буфер) выглядит как

ArrayBuffer(4320) {}
[[Int8Array]]: Int8Array(4320) [-1, -13, 68, -60, 0, 0, 0, 3, 72, 0, 0, 0, 0, -87, -49, 8, 0, 33, 64, 0, 8, -89, 59, -1, -1, -14, 28, -18, -124, 111, -14, 17, -108, -124, 101, 127, 33, 26, -89, 59, -95, -49, -25, 116, 57, -12, 111, -12, 35, 41, 9, 87, -14, 17, -86, 115, -70, 28, -2, 119, 67, -99, -28, 111, -85, -56, 66, 40, 0, -122, 83, -97, -3, 78, -13, -6, -99, -56, 6, 45, -32, 8, -9, 127, 4, 68, 17, -75, -49, -78, -71, 113, -91, -34, -25, 91, -1, -13, 68, -60, …]
[[Int16Array]]: Int16Array(2160) [-3073, -15292, 0, 768, 72, 0, -22272, 2255, 8448, 64, -22776, -197, -3329, -4580, 28548, 4594, -31596, 32613, 6689, 15271, -12383, 29927, -3015, -2961, 10531, 22281, 4594, 29610, 7354, 30718, -25277, 28644, -14165, 10306, -31232, -24749, 20221, -1293, -14179, 11526, 2272, 32759, 17412, -19183, -19761, 29113, -8539, 23527, -3073, -15292, 4691, -18014, 432, 4162, -18687, -14105, 2212, -2958, -27815, -24699, -526, -31741, 9126, -22266, -17240, -16356, 792, -11809, 16477, 24596, 160, 1972, -5521, 85, 972, 368, 20032, -26173, -22278, 16989, 8912, 22242, 19802, 32526, -294, -17735, -7418, 15110, -31993, -4481, 21891, -28845, -16253, 6258, -29678, -26266, -3073, -15292, 8283, 10835, …]
[[Int32Array]]: Int32Array(1080) [-1002114049, 50331648, 72, 147826944, 4202752, -12867832, -300092673, 301100932, 2137359508, 1000806945, 1961349025, -193989575, 1460218147, 1940525554, 2013142202, 1877253443, 675465387, -1621916160, -84717827, 755419293, 2146896096, -1257159676, 1907995343, 1541922469, -1002114049, -1180560813, 272761264, -924338431, -193853276, -1618635943, -2080113166, -1459215450, -1071858520, -773913832, 1611939933, 129237152, 5630575, 24118220, -1715253696, 1113434362, 1457660624, 2131643738, -1162215718, 990307078, -293633273, -1890364029, 410173571, -1721332718, -1002114049, 710090843, 1755054368, -18253056, 1349314751, 513893708, -409842836, -2130407, 1928701658, -1824460704, 1699138085, 1084013040, -713766580, -196857967, 966722633, 317316261, -2146029220, -852266095, 951391763, 1842741971, 1836234128, 876649645, -272050768, 824788232, -1002114049, 639835436, 1083834772, -251621888, -1367370668, -1024946298, 2142044482, -873861585, 1094098397, 1023243332, 1425397075, -1228634640, -10541935, 727696763, 1306953994, 2075217194, 922725578, -268468225, -1881816206, -560777851, 491632421, -1127561968, -952037275, -509507239, -1002114049, 239145738, 1624834480, 1124652800, …]
[[Uint8Array]]: Uint8Array(4320) [255, 243, 68, 196, 0, 0, 0, 3, 72, 0, 0, 0, 0, 169, 207, 8, 0, 33, 64, 0, 8, 167, 59, 255, 255, 242, 28, 238, 132, 111, 242, 17, 148, 132, 101, 127, 33, 26, 167, 59, 161, 207, 231, 116, 57, 244, 111, 244, 35, 41, 9, 87, 242, 17, 170, 115, 186, 28, 254, 119, 67, 157, 228, 111, 171, 200, 66, 40, 0, 134, 83, 159, 253, 78, 243, 250, 157, 200, 6, 45, 224, 8, 247, 127, 4, 68, 17, 181, 207, 178, 185, 113, 165, 222, 231, 91, 255, 243, 68, 196, …]
byteLength: (...)
__proto__: ArrayBuffer

Что я делаю не так?

...