Я отправляю поток аудио от javascript до python API, используя веб-сокет, используя следующий подход
var mic = e.inputBuffer.getChannelData(0);
var temp = convertFloat32ToInt16(e.inputBuffer);
leftchannel = leftchannel.concat(temp);
sendstreamdata(leftchannel);
function convertFloat32ToInt16(buffer)
{
var wav = audioBufferToWav(buffer);
res = [new Uint8Array(wav)];
return res;
}
на стороне python API, я использую веб-сокет, и мне нужно создать класс для реализации класса peechsdk.audio.PullAudioInputStreamCallback для внедрения входящего потока.
В настоящее время у меня есть аналогичные logi c, который работает с файлом wav
class WavFileReaderCallback(speechsdk.audio.PullAudioInputStreamCallback):
"""Example class that implements the Pull Audio Stream interface to recognize speech from
an audio file"""
def __init__(self, filename: str):
super().__init__()
self._file_h = wave.open(filename, mode=None)
self.sample_width = self._file_h.getsampwidth()
return
assert self._file_h.getnchannels() == 1
assert self._file_h.getsampwidth() == 2
assert self._file_h.getframerate() == 16000
assert self._file_h.getcomptype() == 'NONE'
def read(self, buffer: memoryview) -> int:
"""read callback function"""
size = buffer.nbytes
print(size,self.sample_width)
frames = self._file_h.readframes(size // self.sample_width)
buffer[:len(frames)] = frames
return len(frames)
def close(self):
"""close callback function"""
self._file_h.close() ```
Using similar kind of can someone please help me on how to input stream for real time Speech to Text using the azure cognitive service.