【发布时间】:2018-05-24 19:58:50
【问题描述】:
我有一个二进制格式的 .wav 文件列表(它们来自 websocket),我想加入一个二进制 .wav 文件,然后用它进行语音识别。我已经能够使用以下代码使其工作:
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
with wave.open('/tmp/input.wav', 'wb') as temp_input:
params_set = False
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()))
# Do speech recognition
binary_audio = open('/tmp/input.wav', 'rb').read())
ASR(binary_audio)
问题是我不想将文件'/tmp/input.wav' 写入磁盘。有什么办法可以做到不写任何文件到磁盘?
谢谢。
【问题讨论】:
-
单声道时声音可以表示为一维数组,立体声时可以表示为二维。使用
wavefile之类的东西来获取原始数据。 -
wave.open接受文件路径或类似文件的对象。您已经导入了BytesIO,所以只需将其中一个用作缓冲区之类的文件。 Here's 和某人使用gzip的示例(注意参数名称略有不同)。
标签: python python-3.x wave