Общее решение для файла, но никогда не помещать его на диск - это поток.Для этого мы используем библиотеку io
, которая является библиотекой по умолчанию для работы с потоками в памяти.Кажется, вы даже уже использовали BytesIO
ранее в своем коде.
audio = [binary_wav1, binary_wav2,..., binary_wavN] # a list of .wav binary files coming from a socket
audio = [io.BytesIO(x) for x in audio]
# Join wav files
params_set = False
temp_file = io.BytesIO()
with wave.open(temp_file, 'wb') as temp_input:
for audio_file in audio:
with wave.open(audio_file, 'rb') as w:
if not params_set:
temp_input.setparams(w.getparams())
params_set = True
temp_input.writeframes(w.readframes(w.getnframes()))
#move the cursor back to the beginning of the "file"
temp_file.seek(0)
# Do speech recognition
binary_audio = temp_file.read()
ASR(binary_audio)
note У меня нет файлов .wav, чтобы попробовать это.Библиотека wave
должна правильно обрабатывать разницу между реальными файлами и буферизованными потоками.